From f8950f8b21ec023a7aec1a2dff80930a54a3b606 Mon Sep 17 00:00:00 2001 From: fred Date: Wed, 6 Oct 2021 19:29:01 +0100 Subject: [PATCH 001/128] Add minting affordances to L1 custom gateway --- .../tokenbridge/ethereum/ICustomToken.sol | 6 ++++ .../ethereum/gateway/L1CustomGateway.sol | 28 ++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/ICustomToken.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/ICustomToken.sol index 291e317a36..3df80f91cc 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/ICustomToken.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/ICustomToken.sol @@ -23,6 +23,12 @@ interface ArbitrumEnabledToken { function isArbitrumEnabled() external view returns (uint8); } +interface L1MintableToken { + function balanceOf(address account) external returns (uint256 amount); + + function bridgeMint(address account, uint256 amount) external; +} + /** * @title Minimum expected interface for L1 custom token (see TestCustomTokenL1.sol for an example implementation) */ diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol index 1a8e2df21e..bc84d21247 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol @@ -18,7 +18,7 @@ pragma solidity ^0.6.11; -import { ArbitrumEnabledToken } from "../ICustomToken.sol"; +import { ArbitrumEnabledToken, L1MintableToken } from "../ICustomToken.sol"; import "./L1ArbitrumExtendedGateway.sol"; import "../../arbitrum/gateway/L2CustomGateway.sol"; import "../../libraries/gateway/ICustomGateway.sol"; @@ -52,6 +52,32 @@ contract L1CustomGateway is L1ArbitrumExtendedGateway, ICustomGateway { whitelist = address(0); } + function inboundEscrowTransfer( + address _l1Token, + address _dest, + uint256 _amount + ) internal override { + // The token gateways assume that there is always a 1:1 escrow when users are withdrawing + // from the L2 to L1. + + // This assumption breaks when tokens wish to be able to mint in the L2. + // In order to support that feature, the L1 token must allow this gateway to + // mint more collateral as needed when its underfunded. + uint256 escrowBalance = L1MintableToken(_l1Token).balanceOf(address(this)); + if (escrowBalance < _amount) { + // this will never overflow because of the < check + uint256 escrowNeeded = _amount - escrowBalance; + + // This codepath may still be triggerred by tokens that are not minting in the L2 + // but this doesnt affect their security. + + // tokens were minted in L2 and now we should mint the extra needed in L1 + // if this was not supposed to mint, it will revert then continue to attempt the regular codepath + try L1MintableToken(_l1Token).bridgeMint(address(this), escrowNeeded) {} catch {} + } + super.inboundEscrowTransfer(_l1Token, _dest, _amount); + } + /** * @notice Calculate the address used when bridging an ERC20 token * @dev the L1 and L2 address oracles may not always be in sync. From 492cabea9ca461b076b7c594eba1e39d9be8ef33 Mon Sep 17 00:00:00 2001 From: fred Date: Thu, 7 Oct 2021 13:02:36 +0100 Subject: [PATCH 002/128] Add end to end test with minting in L2 custom gateway --- .../tokenbridge/ethereum/ICustomToken.sol | 2 +- .../tokenbridge/test/TestArbCustomToken.sol | 11 ++ .../tokenbridge/test/TestCustomTokenL1.sol | 18 +++ .../test/customGateway.e2e.ts | 139 +++++++++++++++--- 4 files changed, 149 insertions(+), 21 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/ICustomToken.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/ICustomToken.sol index 3df80f91cc..231ac79cf1 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/ICustomToken.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/ICustomToken.sol @@ -24,7 +24,7 @@ interface ArbitrumEnabledToken { } interface L1MintableToken { - function balanceOf(address account) external returns (uint256 amount); + function balanceOf(address account) external view returns (uint256); function bridgeMint(address account, uint256 amount) external; } diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestArbCustomToken.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestArbCustomToken.sol index 35ea37b8b9..56060b951d 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestArbCustomToken.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestArbCustomToken.sol @@ -46,3 +46,14 @@ contract TestArbCustomToken is aeERC20, IArbToken { _burn(account, amount); } } + +contract MintableTestArbCustomToken is TestArbCustomToken { + constructor(address _l2Gateway, address _l1Address) + public + TestArbCustomToken(_l2Gateway, _l1Address) + {} + + function userMint(address account, uint256 amount) external { + _mint(account, amount); + } +} diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol index 8a0470fe83..ff9f2a1a68 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol @@ -33,6 +33,7 @@ contract TestCustomTokenL1 is aeERC20, ICustomToken { function balanceOf(address account) public view + virtual override(ERC20Upgradeable, ICustomToken) returns (uint256) { @@ -67,3 +68,20 @@ contract TestCustomTokenL1 is aeERC20, ICustomToken { shouldRegisterGateway = prev; } } + +contract MintableTestCustomTokenL1 is L1MintableToken, TestCustomTokenL1 { + constructor(address _bridge) public TestCustomTokenL1(_bridge) {} + + function bridgeMint(address account, uint256 amount) public override(L1MintableToken) { + _mint(account, amount); + } + + function balanceOf(address account) + public + view + override(L1MintableToken, TestCustomTokenL1) + returns (uint256 amount) + { + return super.balanceOf(account); + } +} diff --git a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts index fdbc0ab0e1..a3e272dca0 100644 --- a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts +++ b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts @@ -18,15 +18,20 @@ import { ethers } from 'hardhat' import { assert, expect } from 'chai' import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' -import { Contract, ContractFactory } from 'ethers' +import { + L1CustomGatewayTester, + L1GatewayRouter, + L2CustomGatewayTester, + L2GatewayRouter, +} from '../build/types' describe('Bridge peripherals end-to-end custom gateway', () => { let accounts: SignerWithAddress[] - let l1RouterTestBridge: Contract - let l2RouterTestBridge: Contract - let l1TestBridge: Contract - let l2TestBridge: Contract + let l1RouterTestBridge: L1GatewayRouter + let l2RouterTestBridge: L2GatewayRouter + let l1TestBridge: L1CustomGatewayTester + let l2TestBridge: L2CustomGatewayTester const maxSubmissionCost = 1 const maxGas = 1000000000 @@ -36,24 +41,24 @@ describe('Bridge peripherals end-to-end custom gateway', () => { accounts = await ethers.getSigners() // l1 side deploy - const L1RouterTestBridge: ContractFactory = await ethers.getContractFactory( + const L1RouterTestBridge = await ethers.getContractFactory( 'L1GatewayRouter' ) l1RouterTestBridge = await L1RouterTestBridge.deploy() - const L1TestBridge: ContractFactory = await ethers.getContractFactory( + const L1TestBridge = await ethers.getContractFactory( 'L1CustomGatewayTester' ) l1TestBridge = await L1TestBridge.deploy() // l2 side deploy - const L2TestBridge: ContractFactory = await ethers.getContractFactory( + const L2TestBridge = await ethers.getContractFactory( 'L2CustomGatewayTester' ) l2TestBridge = await L2TestBridge.deploy() - const L2RouterTestBridge: ContractFactory = await ethers.getContractFactory( + const L2RouterTestBridge = await ethers.getContractFactory( 'L2GatewayRouter' ) l2RouterTestBridge = await L2RouterTestBridge.deploy() @@ -87,9 +92,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { it('should deposit tokens', async function () { // custom token setup - const L1CustomToken: ContractFactory = await ethers.getContractFactory( - 'TestCustomTokenL1' - ) + const L1CustomToken = await ethers.getContractFactory('TestCustomTokenL1') const l1CustomToken = await L1CustomToken.deploy(l1TestBridge.address) const L2Token = await ethers.getContractFactory('TestArbCustomToken') @@ -137,7 +140,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { ) const escrowedTokens = await l1CustomToken.balanceOf(l1TestBridge.address) - assert.equal(escrowedTokens, tokenAmount, 'Tokens not escrowed') + assert.equal(escrowedTokens.toNumber(), tokenAmount, 'Tokens not escrowed') const l2TokenAddress = await l2RouterTestBridge.calculateL2TokenAddress( l1CustomToken.address @@ -149,9 +152,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { it('should withdraw tokens', async function () { // custom token setup - const L1CustomToken: ContractFactory = await ethers.getContractFactory( - 'TestCustomTokenL1' - ) + const L1CustomToken = await ethers.getContractFactory('TestCustomTokenL1') const l1CustomToken = await L1CustomToken.deploy(l1TestBridge.address) const L2Token = await ethers.getContractFactory('TestArbCustomToken') @@ -202,11 +203,9 @@ describe('Bridge peripherals end-to-end custom gateway', () => { 'Tokens not escrowed' ) }) - it('should withdraw tokens if no token is deployed', async function () { + it('should force withdraw tokens if no token is deployed in L2', async function () { // custom token setup - const L1CustomToken: ContractFactory = await ethers.getContractFactory( - 'TestCustomTokenL1' - ) + const L1CustomToken = await ethers.getContractFactory('TestCustomTokenL1') const l1CustomToken = await L1CustomToken.deploy(l1TestBridge.address) // register a non-existent L2 token so we can test the force withdrawal @@ -262,4 +261,104 @@ describe('Bridge peripherals end-to-end custom gateway', () => { 'Tokens not spent in allowance' ) }) + + it('should withdraw tokens when minted in L2', async function () { + // custom token setup + const L1CustomToken = await ethers.getContractFactory( + 'MintableTestCustomTokenL1' + ) + const l1CustomToken = await L1CustomToken.deploy(l1TestBridge.address) + + const L2Token = await ethers.getContractFactory( + 'MintableTestArbCustomToken' + ) + const l2Token = await L2Token.deploy( + l2TestBridge.address, + l1CustomToken.address + ) + + await l1TestBridge.forceRegisterTokenToL2( + [l1CustomToken.address], + [l2Token.address], + 0, + 0, + 0 + ) + + // send escrowed tokens to bridge + const tokenAmount = 100 + await l1CustomToken.mint() + await l1CustomToken.approve(l1TestBridge.address, tokenAmount) + + const data = ethers.utils.defaultAbiCoder.encode( + ['uint256', 'bytes'], + [maxSubmissionCost, '0x'] + ) + + await l1RouterTestBridge.outboundTransfer( + l1CustomToken.address, + accounts[0].address, + tokenAmount, + maxGas, + gasPrice, + data, + { value: maxSubmissionCost + maxGas * gasPrice } + ) + + // mint tokens for the user in L2 + await l2Token.userMint(accounts[0].address, tokenAmount) + const l2Balance = await l2Token.balanceOf(accounts[0].address) + + assert.equal( + tokenAmount, + l2Balance.div(2).toNumber(), + 'Wrong user L2 balance' + ) + + const prevUserBalance = await l1CustomToken.balanceOf(accounts[0].address) + const prevEscrow = await l1CustomToken.balanceOf(l1TestBridge.address) + + // do a small withdrawal that will have enough collateral + const smallWithdrawal = tokenAmount / 2 + await l2TestBridge.functions[ + 'outboundTransfer(address,address,uint256,bytes)' + ](l1CustomToken.address, accounts[0].address, smallWithdrawal, '0x') + + const midUserBalance = await l1CustomToken.balanceOf(accounts[0].address) + const midEscrow = await l1CustomToken.balanceOf(l1TestBridge.address) + + assert.equal( + midUserBalance.toNumber(), + prevUserBalance.add(smallWithdrawal).toNumber(), + 'Wrong user balance in initial withdrawal' + ) + assert.equal( + midEscrow.toNumber(), + prevEscrow.sub(smallWithdrawal).toNumber(), + 'Wrong escrow balance in initial withdrawal' + ) + + await expect( + l2TestBridge.functions['outboundTransfer(address,address,uint256,bytes)']( + l1CustomToken.address, + accounts[0].address, + l2Balance.sub(smallWithdrawal), + '0x' + ) + ) + .to.emit(l1CustomToken, 'Transfer(address,address,uint256)') + .withArgs(ethers.constants.AddressZero, l1TestBridge.address, tokenAmount) // this is the mint + + const postUserBalance = await l1CustomToken.balanceOf(accounts[0].address) + const postEscrow = await l1CustomToken.balanceOf(l1TestBridge.address) + + assert.equal(prevEscrow.toNumber(), tokenAmount) + assert.equal(postEscrow.toNumber(), 0) + + assert.equal( + prevUserBalance.add(l2Balance).toNumber(), + postUserBalance.toNumber(), + 'Tokens not escrowed' + ) + }) }) From 001bdeecdefbc4eda9a824ef7b39452b46faeb86 Mon Sep 17 00:00:00 2001 From: fred Date: Thu, 7 Oct 2021 15:57:47 +0100 Subject: [PATCH 003/128] Add interface inheritance to L1 mintable token --- .../contracts/tokenbridge/ethereum/ICustomToken.sol | 10 ++++------ .../contracts/tokenbridge/test/TestCustomTokenL1.sol | 12 ++++++++++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/ICustomToken.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/ICustomToken.sol index 231ac79cf1..2f0b88a9bb 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/ICustomToken.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/ICustomToken.sol @@ -23,12 +23,6 @@ interface ArbitrumEnabledToken { function isArbitrumEnabled() external view returns (uint8); } -interface L1MintableToken { - function balanceOf(address account) external view returns (uint256); - - function bridgeMint(address account, uint256 amount) external; -} - /** * @title Minimum expected interface for L1 custom token (see TestCustomTokenL1.sol for an example implementation) */ @@ -52,3 +46,7 @@ interface ICustomToken is ArbitrumEnabledToken { function balanceOf(address account) external view returns (uint256); } + +interface L1MintableToken is ICustomToken { + function bridgeMint(address account, uint256 amount) external; +} diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol index ff9f2a1a68..c75c2a3cce 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol @@ -26,7 +26,7 @@ contract TestCustomTokenL1 is aeERC20, ICustomToken { address sender, address recipient, uint256 amount - ) public override(ERC20Upgradeable, ICustomToken) returns (bool) { + ) public virtual override(ERC20Upgradeable, ICustomToken) returns (bool) { return ERC20Upgradeable.transferFrom(sender, recipient, amount); } @@ -79,9 +79,17 @@ contract MintableTestCustomTokenL1 is L1MintableToken, TestCustomTokenL1 { function balanceOf(address account) public view - override(L1MintableToken, TestCustomTokenL1) + override(TestCustomTokenL1, ICustomToken) returns (uint256 amount) { return super.balanceOf(account); } + + function transferFrom( + address sender, + address recipient, + uint256 amount + ) public override(TestCustomTokenL1, ICustomToken) returns (bool) { + return super.transferFrom(sender, recipient, amount); + } } From 8387738df5c246c031f095985884e8e56c566199 Mon Sep 17 00:00:00 2001 From: Harry Ng Date: Mon, 7 Mar 2022 23:52:05 +0800 Subject: [PATCH 004/128] L1GatewayRouter refund address entry point --- .../arbitrum/gateway/L2ArbitrumGateway.sol | 12 ++ .../ethereum/gateway/L1ArbitrumGateway.sol | 63 ++++++++++ .../ethereum/gateway/L1GatewayRouter.sol | 26 ++++ .../libraries/gateway/GatewayRouter.sol | 28 +++++ .../libraries/gateway/ITokenGateway.sol | 10 ++ .../libraries/gateway/TokenGateway.sol | 10 ++ .../test/gatewayRouter.l1.ts | 113 ++++++++++++++++++ 7 files changed, 262 insertions(+) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol index ccd6705193..d8ca29f425 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol @@ -124,6 +124,18 @@ abstract contract L2ArbitrumGateway is L2ArbitrumMessenger, TokenGateway { return outboundTransfer(_l1Token, _to, _amount, 0, 0, _data); } + function outboundTransferCustomRefund( + address _l1Token, + address _to, + address, /* _refundTo */ + uint256 _amount, + uint256, /* _maxGas */ + uint256, /* _gasPriceBid */ + bytes calldata _data + ) public payable virtual override returns (bytes memory res) { + return outboundTransfer(_l1Token, _to, _amount, 0, 0, _data); + } + /** * @notice Initiates a token withdrawal from Arbitrum to Ethereum * @param _l1Token l1 address of token diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol index fe7a8921b3..48ae2b5dc8 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol @@ -232,6 +232,69 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { return abi.encode(seqNum); } + /** + * @notice Deposit ERC20 token from Ethereum into Arbitrum. If L2 side hasn't been deployed yet, includes name/symbol/decimals data for initial L2 deploy. Initiate by GatewayRouter. + * @param _l1Token L1 address of ERC20 + * @param _to account to be credited with the tokens in the L2 (can be the user's L2 account or a contract) + * @param _refundTo account to be credited with the excess gas refund in the L2 (can be the user's L2 account or a contract) + * @param _amount Token Amount + * @param _maxGas Max gas deducted from user's L2 balance to cover L2 execution + * @param _gasPriceBid Gas price for L2 execution + * @param _data encoded data from router and user + * @return res abi encoded inbox sequence number + */ + // * @param maxSubmissionCost Max gas deducted from user's L2 balance to cover base submission fee + function outboundTransferCustomRefund( + address _l1Token, + address _to, + address _refundTo, + uint256 _amount, + uint256 _maxGas, + uint256 _gasPriceBid, + bytes calldata _data + ) public payable virtual override returns (bytes memory res) { + require(isRouter(msg.sender), "NOT_FROM_ROUTER"); + // This function is set as public and virtual so that subclasses can override + // it and add custom validation for callers (ie only whitelisted users) + address _from; + uint256 seqNum; + bytes memory extraData; + { + uint256 _maxSubmissionCost; + if (super.isRouter(msg.sender)) { + // router encoded + (_from, extraData) = GatewayMessageHandler.parseFromRouterToGateway(_data); + } else { + _from = msg.sender; + extraData = _data; + } + // user encoded + (_maxSubmissionCost, extraData) = abi.decode(extraData, (uint256, bytes)); + // the inboundEscrowAndCall functionality has been disabled, so no data is allowed + require(extraData.length == 0, "EXTRA_DATA_DISABLED"); + + require(_l1Token.isContract(), "L1_NOT_CONTRACT"); + address l2Token = calculateL2TokenAddress(_l1Token); + require(l2Token != address(0), "NO_L2_TOKEN_SET"); + + _amount = outboundEscrowTransfer(_l1Token, _from, _amount); + + // we override the res field to save on the stack + res = getOutboundCalldata(_l1Token, _from, _to, _amount, extraData); + + seqNum = createOutboundTx( + _refundTo, + _amount, + _maxGas, + _gasPriceBid, + _maxSubmissionCost, + res + ); + } + emit DepositInitiated(_l1Token, _from, _to, seqNum, _amount); + return abi.encode(seqNum); + } + function outboundEscrowTransfer( address _l1Token, address _from, diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol index 64ccd12e15..2799f8a17f 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol @@ -241,6 +241,32 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute return super.outboundTransfer(_token, _to, _amount, _maxGas, _gasPriceBid, _data); } + function outboundTransferCustomRefund( + address _token, + address _to, + address _refundTo, + uint256 _amount, + uint256 _maxGas, + uint256 _gasPriceBid, + bytes calldata _data + ) public payable override onlyWhitelisted returns (bytes memory) { + // _refundTo is subject to L2 alias rewrite + require(_refundTo != address(0), "INVALID_REFUND_ADDR"); + // when sending a L1 to L2 transaction, we expect the user to send + // eth in flight in order to pay for L2 gas costs + // this check prevents users from misconfiguring the msg.value + (uint256 _maxSubmissionCost, ) = abi.decode(_data, (uint256, bytes)); + + // here we don't use SafeMath since this validation is to prevent users + // from shooting themselves on the foot. + uint256 expectedEth = _maxSubmissionCost + (_maxGas * _gasPriceBid); + require(_maxSubmissionCost > 0, "NO_SUBMISSION_COST"); + require(msg.value == expectedEth, "WRONG_ETH_VALUE"); + + // will revert if msg.sender is not whitelisted + return super.outboundTransferCustomRefund(_token, _to, _refundTo, _amount, _maxGas, _gasPriceBid, _data); + } + modifier onlyCounterpartGateway() override { // don't expect messages from L2 router revert("ONLY_COUNTERPART_GATEWAY"); diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol index 4a36e76926..96867233d2 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol @@ -101,6 +101,34 @@ abstract contract GatewayRouter is TokenGateway { ); } + function outboundTransferCustomRefund( + address _token, + address _to, + address _refundTo, + uint256 _amount, + uint256 _maxGas, + uint256 _gasPriceBid, + bytes calldata _data + ) public payable virtual override returns (bytes memory) { + address gateway = getGateway(_token); + bytes memory gatewayData = GatewayMessageHandler.encodeFromRouterToGateway( + msg.sender, + _data + ); + + emit TransferRouted(_token, msg.sender, _to, gateway); + return + ITokenGateway(gateway).outboundTransferCustomRefund{ value: msg.value }( + _token, + _to, + _refundTo, + _amount, + _maxGas, + _gasPriceBid, + gatewayData + ); + } + function getOutboundCalldata( address _token, address _from, diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol index 4ef4e52867..92356d3c7c 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol @@ -48,6 +48,16 @@ interface ITokenGateway { bytes calldata _data ) external payable returns (bytes memory); + function outboundTransferCustomRefund( + address _token, + address _to, + address _refundTo, + uint256 _amount, + uint256 _maxGas, + uint256 _gasPriceBid, + bytes calldata _data + ) external payable returns (bytes memory); + function finalizeInboundTransfer( address _token, address _from, diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol index de89c1e6fa..df28159b62 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol @@ -71,6 +71,16 @@ abstract contract TokenGateway is ITokenGateway { bytes calldata _data ) external payable virtual override returns (bytes memory); + function outboundTransferCustomRefund( + address _token, + address _to, + address _refundTo, + uint256 _amount, + uint256 _maxGas, + uint256 _gasPriceBid, + bytes calldata _data + ) external payable virtual override returns (bytes memory); + function getOutboundCalldata( address _token, address _from, diff --git a/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts b/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts index 8d870a7545..4d9aa1b24e 100644 --- a/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts +++ b/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts @@ -82,4 +82,117 @@ describe('Bridge peripherals layer 1', () => { 'Invalid submission cost' ) }) + + it.only('should submit the correct sender to inbox', async function () { + const L1ERC20Gateway = await ethers.getContractFactory('L1ERC20Gateway') + const l1ERC20Gateway = await L1ERC20Gateway.deploy() + + await l1ERC20Gateway.initialize( + l2Address, + testBridge.address, + inbox.address, + '0x0000000000000000000000000000000000000000000000000000000000000001', // cloneable proxy hash + accounts[0].address // beaconProxyFactory + ) + + await testBridge.setDefaultGateway( + l1ERC20Gateway.address, + maxGas, + gasPrice, + maxSubmissionCost + ) + + const Token = await ethers.getContractFactory('TestERC20') + const token = await Token.deploy() + const tokenAmount = 100 + await token.mint() + await token.approve(l1ERC20Gateway.address, tokenAmount) + + const data = ethers.utils.defaultAbiCoder.encode( + ['uint256', 'bytes'], + [maxSubmissionCost, '0x'] + ) + + const tx = await testBridge.outboundTransfer( + token.address, + accounts[0].address, + tokenAmount, + maxGas, + gasPrice, + data, + { + value: maxSubmissionCost + maxGas * gasPrice + } + ) + + const receipt = await tx.wait() + // TxToL2(address,address,uint256,bytes) + const expectedTopic = + '0xc1d1490cf25c3b40d600dfb27c7680340ed1ab901b7e8f3551280968a3b372b0' + const logs = receipt.events + .filter((curr: any) => curr.topics[0] === expectedTopic) + .map((curr: any) => l1ERC20Gateway.interface.parseLog(curr)) + assert.equal( + logs[0].args._from, + accounts[0].address, + 'Invalid from address' + ) + }) + + it.only('should submit the custom refund address to inbox', async function () { + const L1ERC20Gateway = await ethers.getContractFactory('L1ERC20Gateway') + const l1ERC20Gateway = await L1ERC20Gateway.deploy() + + await l1ERC20Gateway.initialize( + l2Address, + testBridge.address, + inbox.address, + '0x0000000000000000000000000000000000000000000000000000000000000001', // cloneable proxy hash + accounts[0].address // beaconProxyFactory + ) + + await testBridge.setDefaultGateway( + l1ERC20Gateway.address, + maxGas, + gasPrice, + maxSubmissionCost + ) + + const Token = await ethers.getContractFactory('TestERC20') + const token = await Token.deploy() + const tokenAmount = 100 + await token.mint() + await token.approve(l1ERC20Gateway.address, tokenAmount) + + const data = ethers.utils.defaultAbiCoder.encode( + ['uint256', 'bytes'], + [maxSubmissionCost, '0x'] + ) + + const tx = await testBridge.outboundTransferCustomRefund( + token.address, + accounts[0].address, + accounts[1].address, + tokenAmount, + maxGas, + gasPrice, + data, + { + value: maxSubmissionCost + maxGas * gasPrice + } + ) + + const receipt = await tx.wait() + // TxToL2(address,address,uint256,bytes) + const expectedTopic = + '0xc1d1490cf25c3b40d600dfb27c7680340ed1ab901b7e8f3551280968a3b372b0' + const logs = receipt.events + .filter((curr: any) => curr.topics[0] === expectedTopic) + .map((curr: any) => l1ERC20Gateway.interface.parseLog(curr)) + assert.equal( + logs[0].args._from, + accounts[1].address, + 'Invalid from address' + ) + }) }) From ad81ccb19dbc076e21918db0133cd6dc5e590574 Mon Sep 17 00:00:00 2001 From: Harry Ng Date: Tue, 8 Mar 2022 00:32:54 +0800 Subject: [PATCH 005/128] remove .only in test cases --- packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts b/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts index 4d9aa1b24e..57fa9fce91 100644 --- a/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts +++ b/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts @@ -83,7 +83,7 @@ describe('Bridge peripherals layer 1', () => { ) }) - it.only('should submit the correct sender to inbox', async function () { + it('should submit the correct sender to inbox', async function () { const L1ERC20Gateway = await ethers.getContractFactory('L1ERC20Gateway') const l1ERC20Gateway = await L1ERC20Gateway.deploy() @@ -139,7 +139,7 @@ describe('Bridge peripherals layer 1', () => { ) }) - it.only('should submit the custom refund address to inbox', async function () { + it('should submit the custom refund address to inbox', async function () { const L1ERC20Gateway = await ethers.getContractFactory('L1ERC20Gateway') const l1ERC20Gateway = await L1ERC20Gateway.deploy() From f0fb01cbdda0485c07e366ea3b675b509e72a4f8 Mon Sep 17 00:00:00 2001 From: Harry Ng Date: Tue, 8 Mar 2022 14:39:46 +0800 Subject: [PATCH 006/128] code reuse --- .../ethereum/gateway/L1ArbitrumGateway.sol | 49 ++++--------------- 1 file changed, 9 insertions(+), 40 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol index 48ae2b5dc8..99e955f739 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol @@ -190,46 +190,15 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { uint256 _gasPriceBid, bytes calldata _data ) public payable virtual override returns (bytes memory res) { - require(isRouter(msg.sender), "NOT_FROM_ROUTER"); - // This function is set as public and virtual so that subclasses can override - // it and add custom validation for callers (ie only whitelisted users) - address _from; - uint256 seqNum; - bytes memory extraData; - { - uint256 _maxSubmissionCost; - if (super.isRouter(msg.sender)) { - // router encoded - (_from, extraData) = GatewayMessageHandler.parseFromRouterToGateway(_data); - } else { - _from = msg.sender; - extraData = _data; - } - // user encoded - (_maxSubmissionCost, extraData) = abi.decode(extraData, (uint256, bytes)); - // the inboundEscrowAndCall functionality has been disabled, so no data is allowed - require(extraData.length == 0, "EXTRA_DATA_DISABLED"); - - require(_l1Token.isContract(), "L1_NOT_CONTRACT"); - address l2Token = calculateL2TokenAddress(_l1Token); - require(l2Token != address(0), "NO_L2_TOKEN_SET"); - - _amount = outboundEscrowTransfer(_l1Token, _from, _amount); - - // we override the res field to save on the stack - res = getOutboundCalldata(_l1Token, _from, _to, _amount, extraData); - - seqNum = createOutboundTx( - _from, - _amount, - _maxGas, - _gasPriceBid, - _maxSubmissionCost, - res - ); - } - emit DepositInitiated(_l1Token, _from, _to, seqNum, _amount); - return abi.encode(seqNum); + return outboundTransferCustomRefund( + _l1Token, + _to, + _to, + _amount, + _maxGas, + _gasPriceBid, + _data + ); } /** From 10fd24d6fac9cc1736761cab74d854369b2e297a Mon Sep 17 00:00:00 2001 From: fredlacs <32464905+fredlacs@users.noreply.github.com> Date: Thu, 10 Mar 2022 14:05:43 +0000 Subject: [PATCH 007/128] Remove unneeded unaliased check for crosschain message --- .../tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol index ccd6705193..c7a9765dcf 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol @@ -55,8 +55,7 @@ abstract contract L2ArbitrumGateway is L2ArbitrumMessenger, TokenGateway { modifier onlyCounterpartGateway() override { require( - msg.sender == counterpartGateway || - AddressAliasHelper.undoL1ToL2Alias(msg.sender) == counterpartGateway, + msg.sender == AddressAliasHelper.applyL1ToL2Alias(counterpartGateway), "ONLY_COUNTERPART_GATEWAY" ); _; From 0f1c0b3637bb8d4dc4de4adf9742060459258fe7 Mon Sep 17 00:00:00 2001 From: Harry Ng Date: Mon, 14 Mar 2022 16:25:16 +0800 Subject: [PATCH 008/128] move custom refund logic to L1ArbitrumMessenger --- .../ethereum/L1ArbitrumMessenger.sol | 47 +++++++++++++++++-- .../ethereum/gateway/L1ArbitrumGateway.sol | 22 +++++++-- .../ethereum/gateway/L1GatewayRouter.sol | 4 +- .../libraries/gateway/GatewayRouter.sol | 6 ++- .../libraries/gateway/ITokenGateway.sol | 2 +- .../libraries/gateway/TokenGateway.sol | 2 +- .../contracts/tokenbridge/test/InboxMock.sol | 6 ++- .../test/gatewayRouter.l1.ts | 35 +++++++++----- 8 files changed, 98 insertions(+), 26 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/L1ArbitrumMessenger.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/L1ArbitrumMessenger.sol index a841b07164..07fb156c78 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/L1ArbitrumMessenger.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/L1ArbitrumMessenger.sol @@ -32,6 +32,32 @@ abstract contract L1ArbitrumMessenger { uint256 _gasPriceBid; } + function sendTxToL2CustomRefund( + address _inbox, + address _to, + address _refundTo, + address _user, + uint256 _l1CallValue, + uint256 _l2CallValue, + L2GasParams memory _l2GasParams, + bytes memory _data + ) internal virtual returns (uint256) { + // alternative function entry point when struggling with the stack size + return + sendTxToL2CustomRefund( + _inbox, + _to, + _refundTo, + _user, + _l1CallValue, + _l2CallValue, + _l2GasParams._maxSubmissionCost, + _l2GasParams._maxGas, + _l2GasParams._gasPriceBid, + _data + ); + } + function sendTxToL2( address _inbox, address _to, @@ -56,9 +82,10 @@ abstract contract L1ArbitrumMessenger { ); } - function sendTxToL2( + function sendTxToL2CustomRefund( address _inbox, address _to, + address _refundTo, address _user, uint256 _l1CallValue, uint256 _l2CallValue, @@ -71,8 +98,8 @@ abstract contract L1ArbitrumMessenger { _to, _l2CallValue, _maxSubmissionCost, - _user, - _user, + _refundTo, // only refund excess fee to the custom address + _user, // user can cancel the retryable and receive call value refund _maxGas, _gasPriceBid, _data @@ -81,6 +108,20 @@ abstract contract L1ArbitrumMessenger { return seqNum; } + function sendTxToL2( + address _inbox, + address _to, + address _user, + uint256 _l1CallValue, + uint256 _l2CallValue, + uint256 _maxSubmissionCost, + uint256 _maxGas, + uint256 _gasPriceBid, + bytes memory _data + ) internal virtual returns (uint256) { + return sendTxToL2CustomRefund(_inbox, _to, _user, _user, _l1CallValue, _l2CallValue, _maxSubmissionCost, _maxGas, _gasPriceBid,_data); + } + function getBridge(address _inbox) internal view virtual returns (IBridge) { return IInbox(_inbox).bridge(); } diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol index 99e955f739..05723396f7 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol @@ -142,7 +142,8 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { IERC20(_l1Token).safeTransfer(_dest, _amount); } - function createOutboundTx( + function createOutboundTxCustomRefund( + address _refundTo, address _from, uint256, /* _tokenAmount */ uint256 _maxGas, @@ -156,9 +157,10 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { // msg.value is sent, but 0 is set to the L2 call value // the eth sent is used to pay for the tx's gas return - sendTxToL2( + sendTxToL2CustomRefund( inbox, counterpartGateway, + _refundTo, _from, msg.value, // we forward the L1 call value to the inbox 0, // l2 call value 0 by default @@ -171,6 +173,17 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { ); } + function createOutboundTx( + address _from, + uint256 _tokenAmount, + uint256 _maxGas, + uint256 _gasPriceBid, + uint256 _maxSubmissionCost, + bytes memory _outboundCalldata + ) internal virtual returns (uint256) { + return createOutboundTxCustomRefund(_from, _from, _tokenAmount, _maxGas, _gasPriceBid, _maxSubmissionCost, _outboundCalldata); + } + /** * @notice Deposit ERC20 token from Ethereum into Arbitrum. If L2 side hasn't been deployed yet, includes name/symbol/decimals data for initial L2 deploy. Initiate by GatewayRouter. * @param _l1Token L1 address of ERC20 @@ -215,8 +228,8 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { // * @param maxSubmissionCost Max gas deducted from user's L2 balance to cover base submission fee function outboundTransferCustomRefund( address _l1Token, - address _to, address _refundTo, + address _to, uint256 _amount, uint256 _maxGas, uint256 _gasPriceBid, @@ -251,8 +264,9 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { // we override the res field to save on the stack res = getOutboundCalldata(_l1Token, _from, _to, _amount, extraData); - seqNum = createOutboundTx( + seqNum = createOutboundTxCustomRefund( _refundTo, + _from, _amount, _maxGas, _gasPriceBid, diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol index 2799f8a17f..655c78fc42 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol @@ -243,8 +243,8 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute function outboundTransferCustomRefund( address _token, - address _to, address _refundTo, + address _to, uint256 _amount, uint256 _maxGas, uint256 _gasPriceBid, @@ -264,7 +264,7 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute require(msg.value == expectedEth, "WRONG_ETH_VALUE"); // will revert if msg.sender is not whitelisted - return super.outboundTransferCustomRefund(_token, _to, _refundTo, _amount, _maxGas, _gasPriceBid, _data); + return super.outboundTransferCustomRefund(_token, _refundTo, _to, _amount, _maxGas, _gasPriceBid, _data); } modifier onlyCounterpartGateway() override { diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol index 96867233d2..d9798ba46d 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol @@ -83,6 +83,8 @@ abstract contract GatewayRouter is TokenGateway { uint256 _gasPriceBid, bytes calldata _data ) public payable virtual override returns (bytes memory) { + // this function is kept instead of delegating to outboundTransferCustomRefund to allow + // compatibility with older gateways that did not implement outboundTransferCustomRefund address gateway = getGateway(_token); bytes memory gatewayData = GatewayMessageHandler.encodeFromRouterToGateway( msg.sender, @@ -103,8 +105,8 @@ abstract contract GatewayRouter is TokenGateway { function outboundTransferCustomRefund( address _token, - address _to, address _refundTo, + address _to, uint256 _amount, uint256 _maxGas, uint256 _gasPriceBid, @@ -120,8 +122,8 @@ abstract contract GatewayRouter is TokenGateway { return ITokenGateway(gateway).outboundTransferCustomRefund{ value: msg.value }( _token, - _to, _refundTo, + _to, _amount, _maxGas, _gasPriceBid, diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol index 92356d3c7c..4e2ec1cb9c 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol @@ -50,8 +50,8 @@ interface ITokenGateway { function outboundTransferCustomRefund( address _token, - address _to, address _refundTo, + address _to, uint256 _amount, uint256 _maxGas, uint256 _gasPriceBid, diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol index df28159b62..14d461b11f 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol @@ -73,8 +73,8 @@ abstract contract TokenGateway is ITokenGateway { function outboundTransferCustomRefund( address _token, - address _to, address _refundTo, + address _to, uint256 _amount, uint256 _maxGas, uint256 _gasPriceBid, diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/InboxMock.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/InboxMock.sol index f93f2f1183..2cd451bdc4 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/InboxMock.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/InboxMock.sol @@ -26,18 +26,20 @@ contract InboxMock { address l2ToL1SenderMock = address(0); event TicketData(uint256 maxSubmissionCost); + event RefundAddresses(address excessFeeRefundAddress,address callValueRefundAddress); function createRetryableTicket( address, /* destAddr */ uint256, /* l2CallValue */ uint256 maxSubmissionCost, - address, /* excessFeeRefundAddress */ - address, /* callValueRefundAddress */ + address excessFeeRefundAddress, + address callValueRefundAddress, uint256, /* maxGas */ uint256, /* gasPriceBid */ bytes calldata /* data */ ) external payable returns (uint256) { emit TicketData(maxSubmissionCost); + emit RefundAddresses(excessFeeRefundAddress,callValueRefundAddress); return 0; } diff --git a/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts b/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts index 57fa9fce91..e8e5d42901 100644 --- a/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts +++ b/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts @@ -19,6 +19,7 @@ import { ethers } from 'hardhat' import { assert, expect } from 'chai' import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' import { Contract, ContractFactory } from 'ethers' +import { InboxMock__factory } from '../build/types' describe('Bridge peripherals layer 1', () => { let accounts: SignerWithAddress[] @@ -126,17 +127,23 @@ describe('Bridge peripherals layer 1', () => { ) const receipt = await tx.wait() - // TxToL2(address,address,uint256,bytes) + // RefundAddresses(address,address) const expectedTopic = - '0xc1d1490cf25c3b40d600dfb27c7680340ed1ab901b7e8f3551280968a3b372b0' + '0x70b37e3cd4440bad0fef84e97b8196e82fe9a1ba044f099cbac6cd7f79e8702f' const logs = receipt.events .filter((curr: any) => curr.topics[0] === expectedTopic) - .map((curr: any) => l1ERC20Gateway.interface.parseLog(curr)) + .map((curr: any) => inbox.interface.parseLog(curr)) + assert.equal( + logs[0].args.excessFeeRefundAddress, + accounts[0].address, + 'Invalid excessFeeRefundAddress address' + ) assert.equal( - logs[0].args._from, + logs[0].args.callValueRefundAddress, accounts[0].address, - 'Invalid from address' + 'Invalid callValueRefundAddress address' ) + }) it('should submit the custom refund address to inbox', async function () { @@ -171,8 +178,8 @@ describe('Bridge peripherals layer 1', () => { const tx = await testBridge.outboundTransferCustomRefund( token.address, - accounts[0].address, accounts[1].address, + accounts[0].address, tokenAmount, maxGas, gasPrice, @@ -183,16 +190,22 @@ describe('Bridge peripherals layer 1', () => { ) const receipt = await tx.wait() - // TxToL2(address,address,uint256,bytes) + // RefundAddresses(address,address) const expectedTopic = - '0xc1d1490cf25c3b40d600dfb27c7680340ed1ab901b7e8f3551280968a3b372b0' + '0x70b37e3cd4440bad0fef84e97b8196e82fe9a1ba044f099cbac6cd7f79e8702f' const logs = receipt.events .filter((curr: any) => curr.topics[0] === expectedTopic) - .map((curr: any) => l1ERC20Gateway.interface.parseLog(curr)) + .map((curr: any) => inbox.interface.parseLog(curr)) assert.equal( - logs[0].args._from, + logs[0].args.excessFeeRefundAddress, accounts[1].address, - 'Invalid from address' + 'Invalid excessFeeRefundAddress address' + ) + assert.equal( + logs[0].args.callValueRefundAddress, + accounts[0].address, + 'Invalid callValueRefundAddress address' ) + }) }) From cddf6c1ef8ee795f4c19f2748aaba0fb9ac2b6ee Mon Sep 17 00:00:00 2001 From: Harry Ng Date: Wed, 23 Mar 2022 23:03:12 +0800 Subject: [PATCH 009/128] outboundTransfer refactor --- .../ethereum/gateway/L1GatewayRouter.sol | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol index 655c78fc42..6fcaa8566d 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol @@ -218,14 +218,11 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute _setGateways(_token, _gateway, _maxGas, _gasPriceBid, _maxSubmissionCost, msg.sender); } - function outboundTransfer( - address _token, - address _to, - uint256 _amount, + function _outboundTransferChecks( uint256 _maxGas, uint256 _gasPriceBid, bytes calldata _data - ) public payable override onlyWhitelisted returns (bytes memory) { + ) internal{ // when sending a L1 to L2 transaction, we expect the user to send // eth in flight in order to pay for L2 gas costs // this check prevents users from misconfiguring the msg.value @@ -236,6 +233,17 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute uint256 expectedEth = _maxSubmissionCost + (_maxGas * _gasPriceBid); require(_maxSubmissionCost > 0, "NO_SUBMISSION_COST"); require(msg.value == expectedEth, "WRONG_ETH_VALUE"); + } + + function outboundTransfer( + address _token, + address _to, + uint256 _amount, + uint256 _maxGas, + uint256 _gasPriceBid, + bytes calldata _data + ) public payable override onlyWhitelisted returns (bytes memory) { + _outboundTransferChecks(_maxGas, _gasPriceBid, _data); // will revert if msg.sender is not whitelisted return super.outboundTransfer(_token, _to, _amount, _maxGas, _gasPriceBid, _data); @@ -252,16 +260,7 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute ) public payable override onlyWhitelisted returns (bytes memory) { // _refundTo is subject to L2 alias rewrite require(_refundTo != address(0), "INVALID_REFUND_ADDR"); - // when sending a L1 to L2 transaction, we expect the user to send - // eth in flight in order to pay for L2 gas costs - // this check prevents users from misconfiguring the msg.value - (uint256 _maxSubmissionCost, ) = abi.decode(_data, (uint256, bytes)); - - // here we don't use SafeMath since this validation is to prevent users - // from shooting themselves on the foot. - uint256 expectedEth = _maxSubmissionCost + (_maxGas * _gasPriceBid); - require(_maxSubmissionCost > 0, "NO_SUBMISSION_COST"); - require(msg.value == expectedEth, "WRONG_ETH_VALUE"); + _outboundTransferChecks(_maxGas, _gasPriceBid, _data); // will revert if msg.sender is not whitelisted return super.outboundTransferCustomRefund(_token, _refundTo, _to, _amount, _maxGas, _gasPriceBid, _data); From 40ed49024faaee2477d9ca1a6b963437b91f1d73 Mon Sep 17 00:00:00 2001 From: Harry Ng Date: Thu, 24 Mar 2022 00:17:44 +0800 Subject: [PATCH 010/128] gas optimization --- .../ethereum/gateway/L1GatewayRouter.sol | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol index 6fcaa8566d..bb2469ef85 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol @@ -221,18 +221,20 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute function _outboundTransferChecks( uint256 _maxGas, uint256 _gasPriceBid, - bytes calldata _data - ) internal{ + bytes memory _data + ) internal { // when sending a L1 to L2 transaction, we expect the user to send // eth in flight in order to pay for L2 gas costs // this check prevents users from misconfiguring the msg.value - (uint256 _maxSubmissionCost, ) = abi.decode(_data, (uint256, bytes)); + uint256 _maxSubmissionCost; + assembly { + _maxSubmissionCost := mload(add(_data, 0x20)) + } // here we don't use SafeMath since this validation is to prevent users // from shooting themselves on the foot. - uint256 expectedEth = _maxSubmissionCost + (_maxGas * _gasPriceBid); - require(_maxSubmissionCost > 0, "NO_SUBMISSION_COST"); - require(msg.value == expectedEth, "WRONG_ETH_VALUE"); + require(_maxSubmissionCost != 0, "NO_SUBMISSION_COST"); + require(msg.value == _maxSubmissionCost + (_maxGas * _gasPriceBid), "WRONG_ETH_VALUE"); } function outboundTransfer( From 019ee9bf4d2edba6e05125848d8d4e51254c1593 Mon Sep 17 00:00:00 2001 From: Harry Ng Date: Thu, 24 Mar 2022 23:34:31 +0800 Subject: [PATCH 011/128] add comment --- .../contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol index bb2469ef85..390a9f39ec 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol @@ -227,6 +227,8 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute // eth in flight in order to pay for L2 gas costs // this check prevents users from misconfiguring the msg.value uint256 _maxSubmissionCost; + // assembly code block below is the gas optimized version of + // _maxSubmissionCost = abi.decode(_data, (uint256, bytes)); assembly { _maxSubmissionCost := mload(add(_data, 0x20)) } From c0ba526eaa2f5f50dec3c90f7e316e38be3c0984 Mon Sep 17 00:00:00 2001 From: Harry Ng Date: Fri, 25 Mar 2022 15:50:12 +0800 Subject: [PATCH 012/128] allowlist OZ CVE-2021-46320 and fix ci --- package.json | 8 +-- .../test/gatewayRouter.l1.ts | 7 +-- yarn.lock | 49 ++++++++++++++----- 3 files changed, 44 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 9578a9d556..6ce3cd3d3e 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ }, "homepage": "https://offchainlabs.com/", "scripts": { - "audit:ci": "audit-ci -l -a 1006805 1006806 1006865 1006896 1006899", + "audit:ci": "audit-ci -l -a 1006805 1006806 1006865 1006896 1006899 1064613 1064693 1064692", "install:deps": "./scripts/install-deps", "install:validator": "./scripts/install-validator", "update:abi": "yarn go:generate && yarn workspace arb-ts update:abi", @@ -70,7 +70,9 @@ "ansi-regex": "^5.0.1", "lodash": "4.17.21", "underscore": "1.12.1", - "node-fetch": "2.6.1", - "yargs-parser": "20.2.2" + "node-fetch": "^2.6.7", + "yargs-parser": "20.2.2", + "follow-redirects": "^1.14.7", + "minimist": "^1.2.6" } } diff --git a/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts b/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts index e8e5d42901..102e3636ac 100644 --- a/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts +++ b/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts @@ -19,7 +19,6 @@ import { ethers } from 'hardhat' import { assert, expect } from 'chai' import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' import { Contract, ContractFactory } from 'ethers' -import { InboxMock__factory } from '../build/types' describe('Bridge peripherals layer 1', () => { let accounts: SignerWithAddress[] @@ -122,7 +121,7 @@ describe('Bridge peripherals layer 1', () => { gasPrice, data, { - value: maxSubmissionCost + maxGas * gasPrice + value: maxSubmissionCost + maxGas * gasPrice, } ) @@ -143,7 +142,6 @@ describe('Bridge peripherals layer 1', () => { accounts[0].address, 'Invalid callValueRefundAddress address' ) - }) it('should submit the custom refund address to inbox', async function () { @@ -185,7 +183,7 @@ describe('Bridge peripherals layer 1', () => { gasPrice, data, { - value: maxSubmissionCost + maxGas * gasPrice + value: maxSubmissionCost + maxGas * gasPrice, } ) @@ -206,6 +204,5 @@ describe('Bridge peripherals layer 1', () => { accounts[0].address, 'Invalid callValueRefundAddress address' ) - }) }) diff --git a/yarn.lock b/yarn.lock index bbf757c43d..5742077312 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1843,6 +1843,11 @@ arb-ts@^0.0.36: dotenv "^10.0.0" ethers "^5.1.0" +arbos-precompiles@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arbos-precompiles/-/arbos-precompiles-1.0.1.tgz#90de6534d652d5c17b7f6a8c4f58d66bd4cc2d67" + integrity sha512-KHTyjtp70ApKgTsLANlM7p75l7PKfP4ptjeh9XEwQsR8ZLxjZ5gsZOXydsKoMqgUUK0HfQtTpsZyZc4B1BLARQ== + archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" @@ -5357,10 +5362,10 @@ fmix@^0.1.0: dependencies: imul "^1.0.0" -follow-redirects@^1.12.1, follow-redirects@^1.14.0: - version "1.14.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.6.tgz#8cfb281bbc035b3c067d6cd975b0f6ade6e855cd" - integrity sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A== +follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.14.7: + version "1.14.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" + integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== for-each@^0.3.3, for-each@~0.3.3: version "0.3.3" @@ -7853,10 +7858,10 @@ minimalistic-crypto-utils@^1.0.1: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@~1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== minipass@^2.6.0, minipass@^2.9.0: version "2.9.0" @@ -8169,10 +8174,12 @@ node-environment-flags@1.0.6: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" -node-fetch@2.6.1, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@~1.7.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== +node-fetch@2.6.1, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7, node-fetch@~1.7.1: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: version "4.3.0" @@ -10791,6 +10798,11 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -12072,6 +12084,11 @@ web3@^1.0.0: web3-shh "1.6.1" web3-utils "1.6.1" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + websocket@1.0.32: version "1.0.32" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" @@ -12101,6 +12118,14 @@ whatwg-fetch@2.0.4: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" From b3b4cc3109558e8ac307d4a12b81176550e21d42 Mon Sep 17 00:00:00 2001 From: Harry Ng Date: Fri, 25 Mar 2022 20:29:28 +0800 Subject: [PATCH 013/128] fix test case --- .../tokenbridge/test/GatewayTest.sol | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol index d1d29ea3c7..9bcf44d6a9 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol @@ -47,9 +47,10 @@ abstract contract L1ArbitrumTestMessenger is L1ArbitrumMessenger { shouldUseInbox = _shouldUseInbox; } - function sendTxToL2( + function sendTxToL2CustomRefund( address, /* _inbox */ address _to, + address, /*_refundTo */ address, /* _user */ uint256, /* _l1CallValue */ uint256 _l2CallValue, @@ -123,9 +124,10 @@ abstract contract L2ArbitrumTestMessenger is L2ArbitrumMessenger { } contract L1GatewayTester is L1ArbitrumTestMessenger, L1ERC20Gateway { - function sendTxToL2( + function sendTxToL2CustomRefund( address _inbox, address _to, + address _refundTo, address _user, uint256 _l1CallValue, uint256 _l2CallValue, @@ -135,9 +137,10 @@ contract L1GatewayTester is L1ArbitrumTestMessenger, L1ERC20Gateway { bytes memory _data ) internal virtual override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) returns (uint256) { return - L1ArbitrumTestMessenger.sendTxToL2( + L1ArbitrumTestMessenger.sendTxToL2CustomRefund( _inbox, _to, + _refundTo, _user, _l1CallValue, _l2CallValue, @@ -203,9 +206,10 @@ contract L2GatewayTester is L2ArbitrumTestMessenger, L2ERC20Gateway { } contract L1CustomGatewayTester is L1ArbitrumTestMessenger, L1CustomGateway { - function sendTxToL2( + function sendTxToL2CustomRefund( address _inbox, address _to, + address _refundTo, address _user, uint256 _l1CallValue, uint256 _l2CallValue, @@ -215,9 +219,10 @@ contract L1CustomGatewayTester is L1ArbitrumTestMessenger, L1CustomGateway { bytes memory _data ) internal virtual override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) returns (uint256) { return - L1ArbitrumTestMessenger.sendTxToL2( + L1ArbitrumTestMessenger.sendTxToL2CustomRefund( _inbox, _to, + _refundTo, _user, _l1CallValue, _l2CallValue, @@ -261,9 +266,10 @@ contract L2CustomGatewayTester is L2ArbitrumTestMessenger, L2CustomGateway { } contract L1WethGatewayTester is L1ArbitrumTestMessenger, L1WethGateway { - function sendTxToL2( + function sendTxToL2CustomRefund( address _inbox, address _to, + address _refundTo, address _user, uint256 _l1CallValue, uint256 _l2CallValue, @@ -273,9 +279,10 @@ contract L1WethGatewayTester is L1ArbitrumTestMessenger, L1WethGateway { bytes memory _data ) internal virtual override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) returns (uint256) { return - L1ArbitrumTestMessenger.sendTxToL2( + L1ArbitrumTestMessenger.sendTxToL2CustomRefund( _inbox, _to, + _refundTo, _user, _l1CallValue, _l2CallValue, @@ -323,9 +330,10 @@ contract L2WethGatewayTester is L2ArbitrumTestMessenger, L2WethGateway { } contract L1GatewayRouterTester is L1ArbitrumTestMessenger, L1GatewayRouter { - function sendTxToL2( + function sendTxToL2CustomRefund( address _inbox, address _to, + address _refundTo, address _user, uint256 _l1CallValue, uint256 _l2CallValue, @@ -335,9 +343,10 @@ contract L1GatewayRouterTester is L1ArbitrumTestMessenger, L1GatewayRouter { bytes memory _data ) internal virtual override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) returns (uint256) { return - L1ArbitrumTestMessenger.sendTxToL2( + L1ArbitrumTestMessenger.sendTxToL2CustomRefund( _inbox, _to, + _refundTo, _user, _l1CallValue, _l2CallValue, From b6cd46e22cdc97f3d653f441f2b21dd86dfb9209 Mon Sep 17 00:00:00 2001 From: Harry Ng Date: Fri, 25 Mar 2022 20:29:48 +0800 Subject: [PATCH 014/128] add weth bridge l1 test --- .../test/wethBridge.l1.ts | 296 ++++++++++++++++++ 1 file changed, 296 insertions(+) create mode 100644 packages/arb-bridge-peripherals/test/wethBridge.l1.ts diff --git a/packages/arb-bridge-peripherals/test/wethBridge.l1.ts b/packages/arb-bridge-peripherals/test/wethBridge.l1.ts new file mode 100644 index 0000000000..77c1c46fbb --- /dev/null +++ b/packages/arb-bridge-peripherals/test/wethBridge.l1.ts @@ -0,0 +1,296 @@ +/* + * Copyright 2019-2020, Offchain Labs, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* eslint-env node, mocha */ +import { ethers, waffle } from 'hardhat' +import { assert, expect } from 'chai' +import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' +import { Contract, ContractFactory, providers } from 'ethers' +import { TestWETH9 } from '../build/types' + +describe('Bridge peripherals layer 1', () => { + let accounts: SignerWithAddress[] + let TestBridge: ContractFactory + let testBridge: Contract + + let inbox: Contract + const maxSubmissionCost = 1 + const maxGas = 1000000000 + const gasPrice = 0 + let l2Address: string + let weth: TestWETH9; + + before(async function () { + accounts = await ethers.getSigners() + l2Address = accounts[1].address + + TestBridge = await ethers.getContractFactory('L1WethGatewayTester') + testBridge = await TestBridge.deploy() + + const Inbox = await ethers.getContractFactory('InboxMock') + inbox = await Inbox.deploy() + + const Weth = await ethers.getContractFactory('TestWETH9') + weth = await Weth.deploy('weth','weth') + + await testBridge.initialize( + l2Address, + accounts[0].address, + inbox.address, + weth.address, // _l1Weth + accounts[0].address, // _l2Weth + ) + }) + + it('should escrow deposited weth as eth', async function () { + // send weth to bridge + const wethAmount = 100 + await weth.deposit({ value: wethAmount }) + await weth.approve(testBridge.address, wethAmount) + + let data = ethers.utils.defaultAbiCoder.encode( + ['uint256', 'bytes'], + [maxSubmissionCost, '0x'] + ) + + // router usually does this encoding part + data = ethers.utils.defaultAbiCoder.encode( + ['address', 'bytes'], + [accounts[0].address, data] + ) + const escrowPrevBalance = await waffle.provider.getBalance(l2Address) + await testBridge.outboundTransfer( + weth.address, + accounts[0].address, + wethAmount, + maxGas, + gasPrice, + data + ) + const escrowedWeth = await weth.balanceOf(testBridge.address) + assert.equal(escrowedWeth.toNumber(), 0, 'Weth should not be escrowed') + const escrowedETH = await waffle.provider.getBalance(l2Address) + assert.equal(escrowedETH.sub(escrowPrevBalance).toNumber(), wethAmount, 'ETH should be escrowed') + }) + + it('should escrow deposited weth as eth (new entrypoint)', async function () { + // send weth to bridge + const wethAmount = 100 + await weth.deposit({ value: wethAmount }) + await weth.approve(testBridge.address, wethAmount) + + let data = ethers.utils.defaultAbiCoder.encode( + ['uint256', 'bytes'], + [maxSubmissionCost, '0x'] + ) + + // router usually does this encoding part + data = ethers.utils.defaultAbiCoder.encode( + ['address', 'bytes'], + [accounts[0].address, data] + ) + const escrowPrevBalance = await waffle.provider.getBalance(l2Address) + await testBridge.outboundTransferCustomRefund( + weth.address, + accounts[0].address, + accounts[0].address, + wethAmount, + maxGas, + gasPrice, + data + ) + const escrowedWeth = await weth.balanceOf(testBridge.address) + assert.equal(escrowedWeth.toNumber(), 0, 'Weth should not be escrowed') + const escrowedETH = await waffle.provider.getBalance(l2Address) + assert.equal(escrowedETH.sub(escrowPrevBalance).toNumber(), wethAmount, 'ETH should be escrowed') + }) + + it('should revert post mint call correctly in outbound', async function () { + // send weth to bridge + const wethAmount = 100 + await weth.deposit({ value: wethAmount }) + await weth.approve(testBridge.address, wethAmount) + + let data = ethers.utils.defaultAbiCoder.encode( + ['uint256', 'bytes'], + [maxSubmissionCost, '0x01'] + ) + + // router usually does this encoding part + data = ethers.utils.defaultAbiCoder.encode( + ['address', 'bytes'], + [accounts[0].address, data] + ) + + await expect( + testBridge.outboundTransfer( + weth.address, + accounts[0].address, + wethAmount, + maxGas, + gasPrice, + data + ) + ).to.be.revertedWith('EXTRA_DATA_DISABLED') + }) + + it('should revert on inbound if there is data for post mint call', async function () { + // send weth to bridge + const wethAmount = 100 + await weth.deposit({ value: wethAmount }) + await weth.approve(testBridge.address, wethAmount) + + let data = ethers.utils.defaultAbiCoder.encode( + ['uint256', 'bytes'], + [maxSubmissionCost, '0x12'] + ) + + // router usually does this encoding part + data = ethers.utils.defaultAbiCoder.encode( + ['address', 'bytes'], + [accounts[0].address, data] + ) + + const exitNum = 0 + const withdrawData = ethers.utils.defaultAbiCoder.encode( + ['uint256', 'bytes'], + [exitNum, '0x11'] + ) + + await expect( + testBridge.finalizeInboundTransfer( + weth.address, + accounts[0].address, + accounts[0].address, + wethAmount, + withdrawData + ) + ).to.be.revertedWith('') + }) + it.skip('should withdraw weth from L2', async function () { + // send weth to bridge + const wethAmount = 100 + await weth.deposit({ value: wethAmount }) + await weth.approve(testBridge.address, wethAmount) + + let data = ethers.utils.defaultAbiCoder.encode( + ['uint256', 'bytes'], + [maxSubmissionCost, '0x'] + ) + + // router usually does this encoding part + data = ethers.utils.defaultAbiCoder.encode( + ['address', 'bytes'], + [accounts[0].address, data] + ) + + await testBridge.outboundTransfer( + weth.address, + accounts[0].address, + wethAmount, + maxGas, + gasPrice, + data + ) + + await inbox.setL2ToL1Sender(l2Address) + + const prevUserBalance = await weth.balanceOf(accounts[0].address) + + const exitNum = 0 + const withdrawData = ethers.utils.defaultAbiCoder.encode( + ['uint256', 'bytes'], + [exitNum, '0x'] + ) + + await testBridge.finalizeInboundTransfer( + weth.address, + accounts[0].address, + accounts[0].address, + wethAmount, + withdrawData + ) + + const postUserBalance = await weth.balanceOf(accounts[0].address) + + assert.equal( + prevUserBalance.toNumber() + wethAmount, + postUserBalance.toNumber(), + 'Weth not escrowed' + ) + }) + + it('should submit the correct submission cost to the inbox', async function () { + const L1WethGateway = await ethers.getContractFactory('L1WethGateway') + const l1WethGateway = await L1WethGateway.deploy() + + await l1WethGateway.initialize( + l2Address, + accounts[0].address, + inbox.address, + weth.address, // _l1Weth + accounts[0].address, // _l2Weth + ) + + // send weth to bridge + const wethAmount = 100 + await weth.deposit({ value: wethAmount }) + await weth.approve(l1WethGateway.address, wethAmount) + + let data = ethers.utils.defaultAbiCoder.encode( + ['uint256', 'bytes'], + [maxSubmissionCost, '0x'] + ) + + data = ethers.utils.defaultAbiCoder.encode( + ['address', 'bytes'], + [accounts[0].address, data] + ) + + const tx = await l1WethGateway.outboundTransfer( + weth.address, + accounts[0].address, + wethAmount, + maxGas, + gasPrice, + data + ) + const receipt = await tx.wait() + // TicketData(uint256) + const expectedTopic = + '0x7efacbad201ebbc50ec0ce4b474c54b735a31b1bac996acff50df7de0314e8f9' + const events = receipt.events + + if (!events) { + const msg = 'No events in receipt' + assert(events, msg) + throw new Error(msg) + } + + const logs = events + .filter((curr: any) => curr.topics[0] === expectedTopic) + .map((curr: any) => inbox.interface.parseLog(curr)) + + assert.equal( + logs[0].args.maxSubmissionCost.toNumber(), + maxSubmissionCost, + 'Invalid submission cost' + ) + + const escrowedWeth = await weth.balanceOf(l1WethGateway.address) + assert.equal(escrowedWeth.toNumber(), 0, 'Weth should not be escrowed') + }) +}) From c68ad8093c6586b154f221582b64706c33b545b3 Mon Sep 17 00:00:00 2001 From: Harry Ng Date: Fri, 25 Mar 2022 20:36:18 +0800 Subject: [PATCH 015/128] deprecate old entrypoint --- .../ethereum/gateway/L1ArbitrumGateway.sol | 17 ++++++----------- .../ethereum/gateway/L1CustomGateway.sol | 5 +++-- .../ethereum/gateway/L1ERC20Gateway.sol | 5 +++-- .../ethereum/gateway/L1WethGateway.sol | 3 ++- packages/arb-os | 2 +- 5 files changed, 15 insertions(+), 17 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol index 05723396f7..ae64a56595 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol @@ -173,6 +173,9 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { ); } + /** + * @notice DEPRECATED - look at createOutboundTxCustomRefund instead + */ function createOutboundTx( address _from, uint256 _tokenAmount, @@ -180,21 +183,13 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { uint256 _gasPriceBid, uint256 _maxSubmissionCost, bytes memory _outboundCalldata - ) internal virtual returns (uint256) { + ) internal returns (uint256) { return createOutboundTxCustomRefund(_from, _from, _tokenAmount, _maxGas, _gasPriceBid, _maxSubmissionCost, _outboundCalldata); } /** - * @notice Deposit ERC20 token from Ethereum into Arbitrum. If L2 side hasn't been deployed yet, includes name/symbol/decimals data for initial L2 deploy. Initiate by GatewayRouter. - * @param _l1Token L1 address of ERC20 - * @param _to account to be credited with the tokens in the L2 (can be the user's L2 account or a contract) - * @param _amount Token Amount - * @param _maxGas Max gas deducted from user's L2 balance to cover L2 execution - * @param _gasPriceBid Gas price for L2 execution - * @param _data encoded data from router and user - * @return res abi encoded inbox sequence number + * @notice DEPRECATED - look at outboundTransferCustomRefund instead */ - // * @param maxSubmissionCost Max gas deducted from user's L2 balance to cover base submission fee function outboundTransfer( address _l1Token, address _to, @@ -202,7 +197,7 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { uint256 _maxGas, uint256 _gasPriceBid, bytes calldata _data - ) public payable virtual override returns (bytes memory res) { + ) public payable override returns (bytes memory res) { return outboundTransferCustomRefund( _l1Token, _to, diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol index f4b9cff08f..5153a4fd68 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol @@ -57,15 +57,16 @@ contract L1CustomGateway is L1ArbitrumExtendedGateway, ICustomGateway { // end of inline reentrancy guard - function outboundTransfer( + function outboundTransferCustomRefund( address _l1Token, + address _refundTo, address _to, uint256 _amount, uint256 _maxGas, uint256 _gasPriceBid, bytes calldata _data ) public payable override nonReentrant returns (bytes memory res) { - return super.outboundTransfer(_l1Token, _to, _amount, _maxGas, _gasPriceBid, _data); + return super.outboundTransferCustomRefund(_l1Token, _refundTo, _to, _amount, _maxGas, _gasPriceBid, _data); } function finalizeInboundTransfer( diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ERC20Gateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ERC20Gateway.sol index ed2725a51c..7afd345883 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ERC20Gateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ERC20Gateway.sol @@ -54,15 +54,16 @@ contract L1ERC20Gateway is L1ArbitrumExtendedGateway { // end of inline reentrancy guard - function outboundTransfer( + function outboundTransferCustomRefund( address _l1Token, + address _refundTo, address _to, uint256 _amount, uint256 _maxGas, uint256 _gasPriceBid, bytes calldata _data ) public payable override nonReentrant returns (bytes memory res) { - return super.outboundTransfer(_l1Token, _to, _amount, _maxGas, _gasPriceBid, _data); + return super.outboundTransferCustomRefund(_l1Token, _refundTo, _to, _amount, _maxGas, _gasPriceBid, _data); } function finalizeInboundTransfer( diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1WethGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1WethGateway.sol index 8239efa02f..b762837e8f 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1WethGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1WethGateway.sol @@ -45,7 +45,8 @@ contract L1WethGateway is L1ArbitrumExtendedGateway { l2Weth = _l2Weth; } - function createOutboundTx( + function createOutboundTxCustomRefund( + address _refundTo, address _from, uint256 _tokenAmount, uint256 _maxGas, diff --git a/packages/arb-os b/packages/arb-os index 6f098d8e9c..6d00b0b018 160000 --- a/packages/arb-os +++ b/packages/arb-os @@ -1 +1 @@ -Subproject commit 6f098d8e9c3cb9e3451bef03a2830831216f3d8f +Subproject commit 6d00b0b018af6c5e2e408cac52f0409f6c6a74f6 From 1d4d9f22172bc2fa0d769564b3ce042c84cfda73 Mon Sep 17 00:00:00 2001 From: Harry Ng Date: Fri, 25 Mar 2022 20:52:31 +0800 Subject: [PATCH 016/128] make linter happy --- .../test/wethBridge.l1.ts | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/packages/arb-bridge-peripherals/test/wethBridge.l1.ts b/packages/arb-bridge-peripherals/test/wethBridge.l1.ts index 77c1c46fbb..80296c5877 100644 --- a/packages/arb-bridge-peripherals/test/wethBridge.l1.ts +++ b/packages/arb-bridge-peripherals/test/wethBridge.l1.ts @@ -18,7 +18,7 @@ import { ethers, waffle } from 'hardhat' import { assert, expect } from 'chai' import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' -import { Contract, ContractFactory, providers } from 'ethers' +import { Contract, ContractFactory } from 'ethers' import { TestWETH9 } from '../build/types' describe('Bridge peripherals layer 1', () => { @@ -31,8 +31,7 @@ describe('Bridge peripherals layer 1', () => { const maxGas = 1000000000 const gasPrice = 0 let l2Address: string - let weth: TestWETH9; - + let weth: TestWETH9 before(async function () { accounts = await ethers.getSigners() l2Address = accounts[1].address @@ -44,14 +43,14 @@ describe('Bridge peripherals layer 1', () => { inbox = await Inbox.deploy() const Weth = await ethers.getContractFactory('TestWETH9') - weth = await Weth.deploy('weth','weth') + weth = await Weth.deploy('weth', 'weth') await testBridge.initialize( l2Address, accounts[0].address, inbox.address, weth.address, // _l1Weth - accounts[0].address, // _l2Weth + accounts[0].address // _l2Weth ) }) @@ -83,7 +82,11 @@ describe('Bridge peripherals layer 1', () => { const escrowedWeth = await weth.balanceOf(testBridge.address) assert.equal(escrowedWeth.toNumber(), 0, 'Weth should not be escrowed') const escrowedETH = await waffle.provider.getBalance(l2Address) - assert.equal(escrowedETH.sub(escrowPrevBalance).toNumber(), wethAmount, 'ETH should be escrowed') + assert.equal( + escrowedETH.sub(escrowPrevBalance).toNumber(), + wethAmount, + 'ETH should be escrowed' + ) }) it('should escrow deposited weth as eth (new entrypoint)', async function () { @@ -115,7 +118,11 @@ describe('Bridge peripherals layer 1', () => { const escrowedWeth = await weth.balanceOf(testBridge.address) assert.equal(escrowedWeth.toNumber(), 0, 'Weth should not be escrowed') const escrowedETH = await waffle.provider.getBalance(l2Address) - assert.equal(escrowedETH.sub(escrowPrevBalance).toNumber(), wethAmount, 'ETH should be escrowed') + assert.equal( + escrowedETH.sub(escrowPrevBalance).toNumber(), + wethAmount, + 'ETH should be escrowed' + ) }) it('should revert post mint call correctly in outbound', async function () { @@ -153,17 +160,6 @@ describe('Bridge peripherals layer 1', () => { await weth.deposit({ value: wethAmount }) await weth.approve(testBridge.address, wethAmount) - let data = ethers.utils.defaultAbiCoder.encode( - ['uint256', 'bytes'], - [maxSubmissionCost, '0x12'] - ) - - // router usually does this encoding part - data = ethers.utils.defaultAbiCoder.encode( - ['address', 'bytes'], - [accounts[0].address, data] - ) - const exitNum = 0 const withdrawData = ethers.utils.defaultAbiCoder.encode( ['uint256', 'bytes'], @@ -180,6 +176,7 @@ describe('Bridge peripherals layer 1', () => { ) ).to.be.revertedWith('') }) + it.skip('should withdraw weth from L2', async function () { // send weth to bridge const wethAmount = 100 @@ -242,7 +239,7 @@ describe('Bridge peripherals layer 1', () => { accounts[0].address, inbox.address, weth.address, // _l1Weth - accounts[0].address, // _l2Weth + accounts[0].address // _l2Weth ) // send weth to bridge @@ -281,8 +278,8 @@ describe('Bridge peripherals layer 1', () => { } const logs = events - .filter((curr: any) => curr.topics[0] === expectedTopic) - .map((curr: any) => inbox.interface.parseLog(curr)) + .filter(curr => curr.topics[0] === expectedTopic) + .map(curr => inbox.interface.parseLog(curr)) assert.equal( logs[0].args.maxSubmissionCost.toNumber(), From bcfe55cfd2f5147fec64c430d709ba0fd42d2dca Mon Sep 17 00:00:00 2001 From: Harry Ng Date: Fri, 25 Mar 2022 21:20:09 +0800 Subject: [PATCH 017/128] fix missing typing in ci --- .../test/wethBridge.l1.ts | 67 ++++++++++++++++--- 1 file changed, 58 insertions(+), 9 deletions(-) diff --git a/packages/arb-bridge-peripherals/test/wethBridge.l1.ts b/packages/arb-bridge-peripherals/test/wethBridge.l1.ts index 80296c5877..f218980289 100644 --- a/packages/arb-bridge-peripherals/test/wethBridge.l1.ts +++ b/packages/arb-bridge-peripherals/test/wethBridge.l1.ts @@ -19,7 +19,6 @@ import { ethers, waffle } from 'hardhat' import { assert, expect } from 'chai' import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' import { Contract, ContractFactory } from 'ethers' -import { TestWETH9 } from '../build/types' describe('Bridge peripherals layer 1', () => { let accounts: SignerWithAddress[] @@ -31,20 +30,21 @@ describe('Bridge peripherals layer 1', () => { const maxGas = 1000000000 const gasPrice = 0 let l2Address: string - let weth: TestWETH9 before(async function () { accounts = await ethers.getSigners() l2Address = accounts[1].address TestBridge = await ethers.getContractFactory('L1WethGatewayTester') - testBridge = await TestBridge.deploy() const Inbox = await ethers.getContractFactory('InboxMock') inbox = await Inbox.deploy() + }) + it('should escrow deposited weth as eth', async function () { const Weth = await ethers.getContractFactory('TestWETH9') - weth = await Weth.deploy('weth', 'weth') + const weth = await Weth.deploy('weth', 'weth') + testBridge = await TestBridge.deploy() await testBridge.initialize( l2Address, accounts[0].address, @@ -52,9 +52,6 @@ describe('Bridge peripherals layer 1', () => { weth.address, // _l1Weth accounts[0].address // _l2Weth ) - }) - - it('should escrow deposited weth as eth', async function () { // send weth to bridge const wethAmount = 100 await weth.deposit({ value: wethAmount }) @@ -90,6 +87,17 @@ describe('Bridge peripherals layer 1', () => { }) it('should escrow deposited weth as eth (new entrypoint)', async function () { + const Weth = await ethers.getContractFactory('TestWETH9') + const weth = await Weth.deploy('weth', 'weth') + + testBridge = await TestBridge.deploy() + await testBridge.initialize( + l2Address, + accounts[0].address, + inbox.address, + weth.address, // _l1Weth + accounts[0].address // _l2Weth + ) // send weth to bridge const wethAmount = 100 await weth.deposit({ value: wethAmount }) @@ -126,6 +134,17 @@ describe('Bridge peripherals layer 1', () => { }) it('should revert post mint call correctly in outbound', async function () { + const Weth = await ethers.getContractFactory('TestWETH9') + const weth = await Weth.deploy('weth', 'weth') + + testBridge = await TestBridge.deploy() + await testBridge.initialize( + l2Address, + accounts[0].address, + inbox.address, + weth.address, // _l1Weth + accounts[0].address // _l2Weth + ) // send weth to bridge const wethAmount = 100 await weth.deposit({ value: wethAmount }) @@ -155,6 +174,17 @@ describe('Bridge peripherals layer 1', () => { }) it('should revert on inbound if there is data for post mint call', async function () { + const Weth = await ethers.getContractFactory('TestWETH9') + const weth = await Weth.deploy('weth', 'weth') + + testBridge = await TestBridge.deploy() + await testBridge.initialize( + l2Address, + accounts[0].address, + inbox.address, + weth.address, // _l1Weth + accounts[0].address // _l2Weth + ) // send weth to bridge const wethAmount = 100 await weth.deposit({ value: wethAmount }) @@ -178,6 +208,17 @@ describe('Bridge peripherals layer 1', () => { }) it.skip('should withdraw weth from L2', async function () { + const Weth = await ethers.getContractFactory('TestWETH9') + const weth = await Weth.deploy('weth', 'weth') + + testBridge = await TestBridge.deploy() + await testBridge.initialize( + l2Address, + accounts[0].address, + inbox.address, + weth.address, // _l1Weth + accounts[0].address // _l2Weth + ) // send weth to bridge const wethAmount = 100 await weth.deposit({ value: wethAmount }) @@ -231,6 +272,9 @@ describe('Bridge peripherals layer 1', () => { }) it('should submit the correct submission cost to the inbox', async function () { + const Weth = await ethers.getContractFactory('TestWETH9') + const weth = await Weth.deploy('weth', 'weth') + const L1WethGateway = await ethers.getContractFactory('L1WethGateway') const l1WethGateway = await L1WethGateway.deploy() @@ -278,8 +322,13 @@ describe('Bridge peripherals layer 1', () => { } const logs = events - .filter(curr => curr.topics[0] === expectedTopic) - .map(curr => inbox.interface.parseLog(curr)) + .filter( + (curr: { topics: string[]; data: string }) => + curr.topics[0] === expectedTopic + ) + .map((curr: { topics: string[]; data: string }) => + inbox.interface.parseLog(curr) + ) assert.equal( logs[0].args.maxSubmissionCost.toNumber(), From 6b230f2ff00775f2af72b305b37e74a0ab5e5444 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Mon, 11 Apr 2022 17:12:31 +0800 Subject: [PATCH 018/128] undo c0ba526ea --- package.json | 8 +++----- yarn.lock | 37 ++++++------------------------------- 2 files changed, 9 insertions(+), 36 deletions(-) diff --git a/package.json b/package.json index 6ce3cd3d3e..9578a9d556 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ }, "homepage": "https://offchainlabs.com/", "scripts": { - "audit:ci": "audit-ci -l -a 1006805 1006806 1006865 1006896 1006899 1064613 1064693 1064692", + "audit:ci": "audit-ci -l -a 1006805 1006806 1006865 1006896 1006899", "install:deps": "./scripts/install-deps", "install:validator": "./scripts/install-validator", "update:abi": "yarn go:generate && yarn workspace arb-ts update:abi", @@ -70,9 +70,7 @@ "ansi-regex": "^5.0.1", "lodash": "4.17.21", "underscore": "1.12.1", - "node-fetch": "^2.6.7", - "yargs-parser": "20.2.2", - "follow-redirects": "^1.14.7", - "minimist": "^1.2.6" + "node-fetch": "2.6.1", + "yargs-parser": "20.2.2" } } diff --git a/yarn.lock b/yarn.lock index 5742077312..26df4790ec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1843,11 +1843,6 @@ arb-ts@^0.0.36: dotenv "^10.0.0" ethers "^5.1.0" -arbos-precompiles@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arbos-precompiles/-/arbos-precompiles-1.0.1.tgz#90de6534d652d5c17b7f6a8c4f58d66bd4cc2d67" - integrity sha512-KHTyjtp70ApKgTsLANlM7p75l7PKfP4ptjeh9XEwQsR8ZLxjZ5gsZOXydsKoMqgUUK0HfQtTpsZyZc4B1BLARQ== - archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" @@ -5362,7 +5357,7 @@ fmix@^0.1.0: dependencies: imul "^1.0.0" -follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.14.7: +follow-redirects@^1.12.1, follow-redirects@^1.14.0: version "1.14.9" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== @@ -7858,7 +7853,7 @@ minimalistic-crypto-utils@^1.0.1: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.5: +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@~1.2.5: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== @@ -8174,12 +8169,10 @@ node-environment-flags@1.0.6: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" -node-fetch@2.6.1, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7, node-fetch@~1.7.1: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" +node-fetch@2.6.1, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@~1.7.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: version "4.3.0" @@ -10798,11 +10791,6 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -12084,11 +12072,6 @@ web3@^1.0.0: web3-shh "1.6.1" web3-utils "1.6.1" -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - websocket@1.0.32: version "1.0.32" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" @@ -12118,14 +12101,6 @@ whatwg-fetch@2.0.4: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" From af11813379cafa8911fcd7d2dfde79d60e4df89b Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Mon, 11 Apr 2022 17:19:09 +0800 Subject: [PATCH 019/128] Fix blockhash behavior in MulticallV2 --- .../contracts/rpc-utils/MulticallV2.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/rpc-utils/MulticallV2.sol b/packages/arb-bridge-peripherals/contracts/rpc-utils/MulticallV2.sol index 3ec041692a..d1e622918e 100644 --- a/packages/arb-bridge-peripherals/contracts/rpc-utils/MulticallV2.sol +++ b/packages/arb-bridge-peripherals/contracts/rpc-utils/MulticallV2.sol @@ -175,7 +175,7 @@ contract ArbMulticall2 { } function getLastBlockHash() public view returns (bytes32 blockHash) { - blockHash = blockhash(ArbSys(address(100)).arbBlockNumber() - 1); + blockHash = blockhash(block.number - 1); } function tryAggregate(bool requireSuccess, Call[] memory calls) @@ -203,7 +203,7 @@ contract ArbMulticall2 { ) { blockNumber = ArbSys(address(100)).arbBlockNumber(); - blockHash = blockhash(ArbSys(address(100)).arbBlockNumber()); + blockHash = blockhash(block.number); returnData = tryAggregate(requireSuccess, calls); } } From 2b01af9f720eb2445ff64083a225a66f99492d31 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Tue, 12 Apr 2022 17:15:58 +0800 Subject: [PATCH 020/128] Revert arb-os submodule update --- packages/arb-os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/arb-os b/packages/arb-os index 6d00b0b018..6f098d8e9c 160000 --- a/packages/arb-os +++ b/packages/arb-os @@ -1 +1 @@ -Subproject commit 6d00b0b018af6c5e2e408cac52f0409f6c6a74f6 +Subproject commit 6f098d8e9c3cb9e3451bef03a2830831216f3d8f From 63cb2f38db044d92a81bafdf1b3a933af8d7a892 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 13 Apr 2022 18:34:09 +0800 Subject: [PATCH 021/128] custom refund in weth gateway --- .../contracts/tokenbridge/ethereum/gateway/L1WethGateway.sol | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1WethGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1WethGateway.sol index b762837e8f..b5681e22f0 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1WethGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1WethGateway.sol @@ -55,9 +55,10 @@ contract L1WethGateway is L1ArbitrumExtendedGateway { bytes memory _outboundCalldata ) internal override returns (uint256) { return - sendTxToL2( + sendTxToL2CustomRefund( inbox, counterpartGateway, + _refundTo, _from, // msg.value does not include weth withdrawn from user, we need to add in that amount msg.value + _tokenAmount, From 9c5ab4a0ac49ac5396486cd02756e309626e0f42 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Thu, 14 Apr 2022 17:18:47 +0800 Subject: [PATCH 022/128] Fix some suggestions --- .../tokenbridge/ethereum/gateway/L1GatewayRouter.sol | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol index 390a9f39ec..956659af50 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol @@ -222,7 +222,7 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute uint256 _maxGas, uint256 _gasPriceBid, bytes memory _data - ) internal { + ) internal view { // when sending a L1 to L2 transaction, we expect the user to send // eth in flight in order to pay for L2 gas costs // this check prevents users from misconfiguring the msg.value @@ -246,7 +246,7 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute uint256 _maxGas, uint256 _gasPriceBid, bytes calldata _data - ) public payable override onlyWhitelisted returns (bytes memory) { + ) public payable override returns (bytes memory) { _outboundTransferChecks(_maxGas, _gasPriceBid, _data); // will revert if msg.sender is not whitelisted @@ -261,7 +261,7 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute uint256 _maxGas, uint256 _gasPriceBid, bytes calldata _data - ) public payable override onlyWhitelisted returns (bytes memory) { + ) public payable override returns (bytes memory) { // _refundTo is subject to L2 alias rewrite require(_refundTo != address(0), "INVALID_REFUND_ADDR"); _outboundTransferChecks(_maxGas, _gasPriceBid, _data); From e482169c8fab66a8e537f3523afd295bf1b8fd40 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Thu, 14 Apr 2022 18:44:45 +0800 Subject: [PATCH 023/128] Add natspec --- .../ethereum/gateway/L1ArbitrumGateway.sol | 5 ++++- .../tokenbridge/ethereum/gateway/L1GatewayRouter.sol | 12 ++++++++++++ .../tokenbridge/libraries/gateway/GatewayRouter.sol | 12 ++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol index ae64a56595..adaec26761 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol @@ -142,6 +142,9 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { IERC20(_l1Token).safeTransfer(_dest, _amount); } + /** + * @dev Only excess gas is refunded to the _refundTo account, l2 call value is always returned to the _to account + */ function createOutboundTxCustomRefund( address _refundTo, address _from, @@ -212,8 +215,8 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { /** * @notice Deposit ERC20 token from Ethereum into Arbitrum. If L2 side hasn't been deployed yet, includes name/symbol/decimals data for initial L2 deploy. Initiate by GatewayRouter. * @param _l1Token L1 address of ERC20 + * @param _refundTo account to be credited with the excess gas refund in the L2, subject to L2 alias rewrite if its a L1 contract * @param _to account to be credited with the tokens in the L2 (can be the user's L2 account or a contract) - * @param _refundTo account to be credited with the excess gas refund in the L2 (can be the user's L2 account or a contract) * @param _amount Token Amount * @param _maxGas Max gas deducted from user's L2 balance to cover L2 execution * @param _gasPriceBid Gas price for L2 execution diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol index 956659af50..fc9040b137 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol @@ -253,6 +253,18 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute return super.outboundTransfer(_token, _to, _amount, _maxGas, _gasPriceBid, _data); } + /** + * @notice Deposit ERC20 token from Ethereum into Arbitrum using the registered or otherwise default gateway + * @dev Some legacy gateway might not have the outboundTransferCustomRefund method and will revert, in such case use outboundTransfer instead + * @param _token L1 address of ERC20 + * @param _refundTo account to be credited with the excess gas refund in the L2, subject to L2 alias rewrite if its a L1 contract + * @param _to account to be credited with the tokens in the L2 (can be the user's L2 account or a contract) + * @param _amount Token Amount + * @param _maxGas Max gas deducted from user's L2 balance to cover L2 execution + * @param _gasPriceBid Gas price for L2 execution + * @param _data encoded data from router and user + * @return res abi encoded inbox sequence number + */ function outboundTransferCustomRefund( address _token, address _refundTo, diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol index d9798ba46d..2137c3758c 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol @@ -103,6 +103,18 @@ abstract contract GatewayRouter is TokenGateway { ); } + /** + * @notice Bridge ERC20 token using the registered or otherwise default gateway + * @dev Some legacy gateway might not have the outboundTransferCustomRefund method and will revert, in such case use outboundTransfer instead + * @param _token L1 address of ERC20 + * @param _refundTo account to be credited with the excess gas refund in the L2, subject to L2 alias rewrite if its a L1 contract + * @param _to account to be credited with the tokens in the L2 (can be the user's L2 account or a contract) + * @param _amount Token Amount + * @param _maxGas Max gas deducted from user's L2 balance to cover L2 execution + * @param _gasPriceBid Gas price for L2 execution + * @param _data encoded data from router and user + * @return res abi encoded inbox sequence number + */ function outboundTransferCustomRefund( address _token, address _refundTo, From e978e3e8a5051600c860a0433c030ecdd97a303f Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Fri, 6 May 2022 16:30:42 +0800 Subject: [PATCH 024/128] fix: TestCustomTokenL1 take 2 constructor args --- .../contracts/tokenbridge/test/TestCustomTokenL1.sol | 2 +- packages/arb-bridge-peripherals/test/customGateway.e2e.ts | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol index 9c3895d65f..ab5aa6d68e 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol @@ -87,7 +87,7 @@ contract TestCustomTokenL1 is aeERC20, ICustomToken { } contract MintableTestCustomTokenL1 is L1MintableToken, TestCustomTokenL1 { - constructor(address _bridge) public TestCustomTokenL1(_bridge) {} + constructor(address _bridge, address _router) public TestCustomTokenL1(_bridge, _router) {} function bridgeMint(address account, uint256 amount) public override(L1MintableToken) { _mint(account, amount); diff --git a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts index 18f6f58d93..5c5bde9a57 100644 --- a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts +++ b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts @@ -292,7 +292,10 @@ describe('Bridge peripherals end-to-end custom gateway', () => { const L1CustomToken = await ethers.getContractFactory( 'MintableTestCustomTokenL1' ) - const l1CustomToken = await L1CustomToken.deploy(l1TestBridge.address) + const l1CustomToken = await L1CustomToken.deploy( + l1TestBridge.address, + l1RouterTestBridge.address + ) const L2Token = await ethers.getContractFactory( 'MintableTestArbCustomToken' From bdb6a6c255a611029b9b4275b6fa801825d7bd8c Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Fri, 6 May 2022 16:31:14 +0800 Subject: [PATCH 025/128] fix: let typescript determine type --- .../arb-bridge-peripherals/test/customGateway.e2e.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts index 5c5bde9a57..13e0949f3e 100644 --- a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts +++ b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts @@ -41,7 +41,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { accounts = await ethers.getSigners() // l1 side deploy - const L1RouterTestBridge: ContractFactory = await ethers.getContractFactory( + const L1RouterTestBridge = await ethers.getContractFactory( 'L1GatewayRouterTester' ) l1RouterTestBridge = await L1RouterTestBridge.deploy() @@ -58,7 +58,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { ) l2TestBridge = await L2TestBridge.deploy() - const L2RouterTestBridge: ContractFactory = await ethers.getContractFactory( + const L2RouterTestBridge = await ethers.getContractFactory( 'L2GatewayRouterTester' ) l2RouterTestBridge = await L2RouterTestBridge.deploy() @@ -92,7 +92,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { it('should deposit tokens', async function () { // custom token setup - const L1CustomToken: ContractFactory = await ethers.getContractFactory( + const L1CustomToken = await ethers.getContractFactory( 'TestCustomTokenL1' ) const l1CustomToken = await L1CustomToken.deploy( @@ -151,7 +151,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { it('should withdraw tokens', async function () { // custom token setup - const L1CustomToken: ContractFactory = await ethers.getContractFactory( + const L1CustomToken = await ethers.getContractFactory( 'TestCustomTokenL1' ) const l1CustomToken = await L1CustomToken.deploy( @@ -217,7 +217,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { }) it('should force withdraw tokens if no token is deployed in L2', async function () { // custom token setup - const L1CustomToken: ContractFactory = await ethers.getContractFactory( + const L1CustomToken = await ethers.getContractFactory( 'TestCustomTokenL1' ) const l1CustomToken = await L1CustomToken.deploy( From 8fdd9991ca773b753018bcbe50d220cee13e60d1 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Fri, 6 May 2022 17:28:12 +0800 Subject: [PATCH 026/128] fix: e2e test after 10fd24d --- .../arbitrum/gateway/L2ArbitrumGateway.sol | 2 +- .../tokenbridge/test/GatewayTest.sol | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol index 7fa9b1cea7..9e235bd5f9 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol @@ -53,7 +53,7 @@ abstract contract L2ArbitrumGateway is L2ArbitrumMessenger, TokenGateway { uint256 _amount ); - modifier onlyCounterpartGateway() override { + modifier onlyCounterpartGateway() virtual override { require( msg.sender == AddressAliasHelper.applyL1ToL2Alias(counterpartGateway), "ONLY_COUNTERPART_GATEWAY" diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol index 9bcf44d6a9..5844d4084c 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol @@ -173,6 +173,13 @@ contract L1GatewayTester is L1ArbitrumTestMessenger, L1ERC20Gateway { } contract L2GatewayTester is L2ArbitrumTestMessenger, L2ERC20Gateway { + modifier onlyCounterpartGateway() override { + require( + msg.sender == counterpartGateway, + "ONLY_COUNTERPART_GATEWAY" + ); + _; + } function sendTxToL1( uint256 _l1CallValue, address _from, @@ -255,6 +262,13 @@ contract L1CustomGatewayTester is L1ArbitrumTestMessenger, L1CustomGateway { } contract L2CustomGatewayTester is L2ArbitrumTestMessenger, L2CustomGateway { + modifier onlyCounterpartGateway() override { + require( + msg.sender == counterpartGateway, + "ONLY_COUNTERPART_GATEWAY" + ); + _; + } function sendTxToL1( uint256 _l1CallValue, address _from, @@ -315,6 +329,13 @@ contract L1WethGatewayTester is L1ArbitrumTestMessenger, L1WethGateway { } contract L2WethGatewayTester is L2ArbitrumTestMessenger, L2WethGateway { + modifier onlyCounterpartGateway() override { + require( + msg.sender == counterpartGateway, + "ONLY_COUNTERPART_GATEWAY" + ); + _; + } function sendTxToL1( uint256 _l1CallValue, address _from, From 5dc7d6266081399685a58c43df29fe01cc7cbb17 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Fri, 6 May 2022 17:31:55 +0800 Subject: [PATCH 027/128] style: yarn prettier --- .../contracts/tokenbridge/test/GatewayTest.sol | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol index 5844d4084c..b99d87f240 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol @@ -174,12 +174,10 @@ contract L1GatewayTester is L1ArbitrumTestMessenger, L1ERC20Gateway { contract L2GatewayTester is L2ArbitrumTestMessenger, L2ERC20Gateway { modifier onlyCounterpartGateway() override { - require( - msg.sender == counterpartGateway, - "ONLY_COUNTERPART_GATEWAY" - ); + require(msg.sender == counterpartGateway, "ONLY_COUNTERPART_GATEWAY"); _; } + function sendTxToL1( uint256 _l1CallValue, address _from, @@ -263,12 +261,10 @@ contract L1CustomGatewayTester is L1ArbitrumTestMessenger, L1CustomGateway { contract L2CustomGatewayTester is L2ArbitrumTestMessenger, L2CustomGateway { modifier onlyCounterpartGateway() override { - require( - msg.sender == counterpartGateway, - "ONLY_COUNTERPART_GATEWAY" - ); + require(msg.sender == counterpartGateway, "ONLY_COUNTERPART_GATEWAY"); _; } + function sendTxToL1( uint256 _l1CallValue, address _from, @@ -330,12 +326,10 @@ contract L1WethGatewayTester is L1ArbitrumTestMessenger, L1WethGateway { contract L2WethGatewayTester is L2ArbitrumTestMessenger, L2WethGateway { modifier onlyCounterpartGateway() override { - require( - msg.sender == counterpartGateway, - "ONLY_COUNTERPART_GATEWAY" - ); + require(msg.sender == counterpartGateway, "ONLY_COUNTERPART_GATEWAY"); _; } + function sendTxToL1( uint256 _l1CallValue, address _from, From f64413ab437bd4762c9f6ef0f216b3a187751fb4 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Fri, 6 May 2022 18:21:25 +0800 Subject: [PATCH 028/128] fix: e2e test of l1 gateway mintable token --- .../test/customGateway.e2e.ts | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts index 13e0949f3e..f38e5f2e03 100644 --- a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts +++ b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts @@ -287,7 +287,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { ) }) - it('should withdraw tokens when minted in L2', async function () { + it.only('should withdraw tokens when minted in L2', async function () { // custom token setup const L1CustomToken = await ethers.getContractFactory( 'MintableTestCustomTokenL1' @@ -312,6 +312,13 @@ describe('Bridge peripherals end-to-end custom gateway', () => { 0, 0 ) + await l1RouterTestBridge.setGateways( + [l1CustomToken.address], + [l1TestBridge.address], + 0, + 0, + 0 + ) // send escrowed tokens to bridge const tokenAmount = 100 @@ -351,6 +358,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { await l2TestBridge.functions[ 'outboundTransfer(address,address,uint256,bytes)' ](l1CustomToken.address, accounts[0].address, smallWithdrawal, '0x') + await l2TestBridge.triggerTxToL1() const midUserBalance = await l1CustomToken.balanceOf(accounts[0].address) const midEscrow = await l1CustomToken.balanceOf(l1TestBridge.address) @@ -366,14 +374,13 @@ describe('Bridge peripherals end-to-end custom gateway', () => { 'Wrong escrow balance in initial withdrawal' ) - await expect( - l2TestBridge.functions['outboundTransfer(address,address,uint256,bytes)']( - l1CustomToken.address, - accounts[0].address, - l2Balance.sub(smallWithdrawal), - '0x' - ) + await l2TestBridge.functions['outboundTransfer(address,address,uint256,bytes)']( + l1CustomToken.address, + accounts[0].address, + l2Balance.sub(smallWithdrawal), + '0x' ) + await expect(l2TestBridge.triggerTxToL1()) .to.emit(l1CustomToken, 'Transfer(address,address,uint256)') .withArgs(ethers.constants.AddressZero, l1TestBridge.address, tokenAmount) // this is the mint From 34cdc3bc6b8c741f10b7fa01863cad3189f10d91 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Fri, 6 May 2022 18:26:34 +0800 Subject: [PATCH 029/128] chore: remove only keyword --- packages/arb-bridge-peripherals/test/customGateway.e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts index f38e5f2e03..65a5f427d6 100644 --- a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts +++ b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts @@ -287,7 +287,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { ) }) - it.only('should withdraw tokens when minted in L2', async function () { + it('should withdraw tokens when minted in L2', async function () { // custom token setup const L1CustomToken = await ethers.getContractFactory( 'MintableTestCustomTokenL1' From 0d1d1d17eb418c15b97c057eba05a198b4485dd9 Mon Sep 17 00:00:00 2001 From: fredlacs <32464905+fredlacs@users.noreply.github.com> Date: Tue, 10 May 2022 18:06:51 +0100 Subject: [PATCH 030/128] Refactor test rig to rely less on smart contract affordances --- .../test/canonicalBridge.e2e.ts | 84 ++++++++++++++----- 1 file changed, 61 insertions(+), 23 deletions(-) diff --git a/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts b/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts index bacd09f342..1ee93c66bd 100644 --- a/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts +++ b/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts @@ -15,18 +15,24 @@ */ /* eslint-env node, mocha */ -import { ethers } from 'hardhat' +import { ethers, network } from 'hardhat' import { assert, expect } from 'chai' import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' -import { Contract, ContractFactory } from 'ethers' +import { Contract, ContractTransaction } from 'ethers' +import { + L1ERC20Gateway, + L1GatewayRouter, + L2ERC20Gateway, + L2GatewayRouter, +} from '../build/types' describe('Bridge peripherals end-to-end', () => { let accounts: SignerWithAddress[] - let l1RouterTestBridge: Contract - let l2RouterTestBridge: Contract - let l1TestBridge: Contract - let l2TestBridge: Contract + let l1RouterTestBridge: L1GatewayRouter + let l2RouterTestBridge: L2GatewayRouter + let l1TestBridge: L1ERC20Gateway + let l2TestBridge: L2ERC20Gateway const maxSubmissionCost = 1 const maxGas = 1000000000 @@ -35,15 +41,16 @@ describe('Bridge peripherals end-to-end', () => { before(async function () { accounts = await ethers.getSigners() + const InboxMock = await ethers.getContractFactory('InboxMock') + const inboxMock = await InboxMock.deploy() + // l1 side deploy - const L1RouterTestBridge: ContractFactory = await ethers.getContractFactory( + const L1RouterTestBridge = await ethers.getContractFactory( 'L1GatewayRouter' ) l1RouterTestBridge = await L1RouterTestBridge.deploy() - const L1TestBridge: ContractFactory = await ethers.getContractFactory( - 'L1GatewayTester' - ) + const L1TestBridge = await ethers.getContractFactory('L1ERC20Gateway') l1TestBridge = await L1TestBridge.deploy() // l2 side deploy @@ -63,12 +70,10 @@ describe('Bridge peripherals end-to-end', () => { await beaconProxyFactory.initialize(beacon.address) - const L2TestBridge: ContractFactory = await ethers.getContractFactory( - 'L2GatewayTester' - ) + const L2TestBridge = await ethers.getContractFactory('L2ERC20Gateway') l2TestBridge = await L2TestBridge.deploy() - const L2RouterTestBridge: ContractFactory = await ethers.getContractFactory( + const L2RouterTestBridge = await ethers.getContractFactory( 'L2GatewayRouter' ) l2RouterTestBridge = await L2RouterTestBridge.deploy() @@ -76,7 +81,7 @@ describe('Bridge peripherals end-to-end', () => { await l1TestBridge.functions.initialize( l2TestBridge.address, l1RouterTestBridge.address, - accounts[0].address, // inbox + inboxMock.address, // inbox cloneableProxyHash, beaconProxyFactory.address ) @@ -92,7 +97,7 @@ describe('Bridge peripherals end-to-end', () => { l1TestBridge.address, // defaultGateway '0x0000000000000000000000000000000000000000', // no whitelist l2RouterTestBridge.address, // counterparty - accounts[0].address // inbox + inboxMock.address // inbox ) const l2DefaultGateway = await l1TestBridge.counterpartGateway() @@ -108,7 +113,7 @@ describe('Bridge peripherals end-to-end', () => { ) }) - it('should deposit tokens', async function () { + it.only('should deposit tokens', async function () { const Token = await ethers.getContractFactory('TestERC20') const token = await Token.deploy() // send escrowed tokens to bridge @@ -155,7 +160,39 @@ describe('Bridge peripherals end-to-end', () => { ) ).to.be.revertedWith('WRONG_ETH_VALUE') - await l1RouterTestBridge.outboundTransfer( + const processL1ToL2Tx = async ( + tx: Promise | ContractTransaction + ) => { + const receipt = await (await tx).wait() + if (!receipt.events) throw new Error('No L1 to L2 txs') + const l1ToL2Txs = receipt.events + .filter(event => event.event === 'TxToL2') + .filter(event => event.args) + .map(event => { + const to = event.args!._to + const data = event.args!._data + const from = event.args!._from + // TODO: apply alias + const fromAliased = from + + return network.provider + .request({ + method: 'hardhat_impersonateAccount', + params: [fromAliased], + }) + .then(() => ethers.getSigner(fromAliased)) + .then(signer => + signer.sendTransaction({ + to: to, + data: data, + }) + ) + }) + + return Promise.all(l1ToL2Txs) + } + + const tx = await l1RouterTestBridge.outboundTransfer( token.address, accounts[0].address, tokenAmount, @@ -164,6 +201,7 @@ describe('Bridge peripherals end-to-end', () => { data, { value: maxSubmissionCost + maxGas * gasPrice } ) + await processL1ToL2Tx(tx) const escrowedTokens = await token.balanceOf(l1TestBridge.address) assert.equal(escrowedTokens.toNumber(), tokenAmount, 'Tokens not escrowed') @@ -212,7 +250,7 @@ describe('Bridge peripherals end-to-end', () => { await l2TestBridge.functions[ 'outboundTransfer(address,address,uint256,bytes)' ](token.address, accounts[0].address, tokenAmount, '0x') - await l2TestBridge.triggerTxToL1() + // await l2TestBridge.triggerTxToL1() const postUserBalance = await token.balanceOf(accounts[0].address) @@ -251,7 +289,7 @@ describe('Bridge peripherals end-to-end', () => { await l2RouterTestBridge.functions[ 'outboundTransfer(address,address,uint256,bytes)' ](token.address, accounts[0].address, tokenAmount, '0x') - await l2TestBridge.triggerTxToL1() + // await l2TestBridge.triggerTxToL1() const postUserBalance = await token.balanceOf(accounts[0].address) @@ -282,7 +320,7 @@ describe('Bridge peripherals end-to-end', () => { ) // here we set the L2 router to recover in case of a bad BeaconProxyFactory deploy - await l2TestBridge.setStubAddressOracleReturn(accounts[0].address) + // await l2TestBridge.setStubAddressOracleReturn(accounts[0].address) await l1RouterTestBridge.outboundTransfer( token.address, @@ -293,7 +331,7 @@ describe('Bridge peripherals end-to-end', () => { data, { value: maxSubmissionCost + maxGas * gasPrice } ) - await l2TestBridge.triggerTxToL1() + // await l2TestBridge.triggerTxToL1() const postUserBalance = await token.balanceOf(accounts[0].address) const postAllowance = await token.allowance( @@ -322,7 +360,7 @@ describe('Bridge peripherals end-to-end', () => { assert.equal(l2Balance.toNumber(), 0, 'User has tokens in L2') // reset stub return in test case - await l2TestBridge.setStubAddressOracleReturn(ethers.constants.AddressZero) + // await l2TestBridge.setStubAddressOracleReturn(ethers.constants.AddressZero) }) it('should deposit tokens with bytes32 field correctly', async function () { From 20dc21d89747cc1098740f9ebfc0c190030b9083 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 11 May 2022 03:28:23 +0800 Subject: [PATCH 031/128] refactor: processL1ToL2Tx test rig for canonical --- .../contracts/tokenbridge/test/ArbSysMock.sol | 7 ++ .../test/canonicalBridge.e2e.ts | 87 +++++++------- .../arb-bridge-peripherals/test/testhelper.ts | 107 ++++++++++++++++++ 3 files changed, 156 insertions(+), 45 deletions(-) create mode 100644 packages/arb-bridge-peripherals/contracts/tokenbridge/test/ArbSysMock.sol create mode 100644 packages/arb-bridge-peripherals/test/testhelper.ts diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/ArbSysMock.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/ArbSysMock.sol new file mode 100644 index 0000000000..e4f1f3123e --- /dev/null +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/ArbSysMock.sol @@ -0,0 +1,7 @@ +pragma solidity ^0.6.11; + +contract ArbSysMock { + function sendTxToL1(address destination, bytes calldata calldataForL1) external payable returns(uint){ + return 0; + } +} \ No newline at end of file diff --git a/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts b/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts index 1ee93c66bd..c0da36d8bc 100644 --- a/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts +++ b/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts @@ -20,11 +20,13 @@ import { assert, expect } from 'chai' import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' import { Contract, ContractTransaction } from 'ethers' import { + InboxMock, L1ERC20Gateway, L1GatewayRouter, L2ERC20Gateway, L2GatewayRouter, } from '../build/types' +import { processL1ToL2Tx, processL2ToL1Tx } from './testhelper' describe('Bridge peripherals end-to-end', () => { let accounts: SignerWithAddress[] @@ -33,6 +35,7 @@ describe('Bridge peripherals end-to-end', () => { let l2RouterTestBridge: L2GatewayRouter let l1TestBridge: L1ERC20Gateway let l2TestBridge: L2ERC20Gateway + let inboxMock: InboxMock const maxSubmissionCost = 1 const maxGas = 1000000000 @@ -42,7 +45,7 @@ describe('Bridge peripherals end-to-end', () => { accounts = await ethers.getSigners() const InboxMock = await ethers.getContractFactory('InboxMock') - const inboxMock = await InboxMock.deploy() + inboxMock = await InboxMock.deploy() // l1 side deploy const L1RouterTestBridge = await ethers.getContractFactory( @@ -111,9 +114,15 @@ describe('Bridge peripherals end-to-end', () => { await l1TestBridge.cloneableProxyHash(), 'Wrong cloneable Proxy Hash' ) + + const ArbSysMock = await ethers.getContractFactory('ArbSysMock') + await network.provider.send('hardhat_setCode', [ + '0x0000000000000000000000000000000000000064', + ArbSysMock.bytecode, + ]) }) - it.only('should deposit tokens', async function () { + it('should deposit tokens', async function () { const Token = await ethers.getContractFactory('TestERC20') const token = await Token.deploy() // send escrowed tokens to bridge @@ -160,38 +169,6 @@ describe('Bridge peripherals end-to-end', () => { ) ).to.be.revertedWith('WRONG_ETH_VALUE') - const processL1ToL2Tx = async ( - tx: Promise | ContractTransaction - ) => { - const receipt = await (await tx).wait() - if (!receipt.events) throw new Error('No L1 to L2 txs') - const l1ToL2Txs = receipt.events - .filter(event => event.event === 'TxToL2') - .filter(event => event.args) - .map(event => { - const to = event.args!._to - const data = event.args!._data - const from = event.args!._from - // TODO: apply alias - const fromAliased = from - - return network.provider - .request({ - method: 'hardhat_impersonateAccount', - params: [fromAliased], - }) - .then(() => ethers.getSigner(fromAliased)) - .then(signer => - signer.sendTransaction({ - to: to, - data: data, - }) - ) - }) - - return Promise.all(l1ToL2Txs) - } - const tx = await l1RouterTestBridge.outboundTransfer( token.address, accounts[0].address, @@ -235,7 +212,7 @@ describe('Bridge peripherals end-to-end', () => { [maxSubmissionCost, '0x'] ) - await l1RouterTestBridge.outboundTransfer( + const tx = await l1RouterTestBridge.outboundTransfer( token.address, accounts[0].address, tokenAmount, @@ -244,12 +221,16 @@ describe('Bridge peripherals end-to-end', () => { data, { value: maxSubmissionCost + maxGas * gasPrice } ) + await processL1ToL2Tx(tx) const prevUserBalance = await token.balanceOf(accounts[0].address) - await l2TestBridge.functions[ - 'outboundTransfer(address,address,uint256,bytes)' - ](token.address, accounts[0].address, tokenAmount, '0x') + await processL2ToL1Tx( + await l2RouterTestBridge.functions[ + 'outboundTransfer(address,address,uint256,bytes)' + ](token.address, accounts[0].address, tokenAmount, '0x'), + inboxMock + ) // await l2TestBridge.triggerTxToL1() const postUserBalance = await token.balanceOf(accounts[0].address) @@ -274,7 +255,7 @@ describe('Bridge peripherals end-to-end', () => { [maxSubmissionCost, '0x'] ) - await l1RouterTestBridge.outboundTransfer( + const tx = await l1RouterTestBridge.outboundTransfer( token.address, accounts[0].address, tokenAmount, @@ -283,12 +264,16 @@ describe('Bridge peripherals end-to-end', () => { data, { value: maxSubmissionCost + maxGas * gasPrice } ) + await processL1ToL2Tx(tx) const prevUserBalance = await token.balanceOf(accounts[0].address) - await l2RouterTestBridge.functions[ - 'outboundTransfer(address,address,uint256,bytes)' - ](token.address, accounts[0].address, tokenAmount, '0x') + await processL2ToL1Tx( + await l2RouterTestBridge.functions[ + 'outboundTransfer(address,address,uint256,bytes)' + ](token.address, accounts[0].address, tokenAmount, '0x'), + inboxMock + ) // await l2TestBridge.triggerTxToL1() const postUserBalance = await token.balanceOf(accounts[0].address) @@ -322,7 +307,7 @@ describe('Bridge peripherals end-to-end', () => { // here we set the L2 router to recover in case of a bad BeaconProxyFactory deploy // await l2TestBridge.setStubAddressOracleReturn(accounts[0].address) - await l1RouterTestBridge.outboundTransfer( + const tx = await l1RouterTestBridge.outboundTransfer( token.address, accounts[0].address, tokenAmount, @@ -331,6 +316,16 @@ describe('Bridge peripherals end-to-end', () => { data, { value: maxSubmissionCost + maxGas * gasPrice } ) + const original_code = await accounts[0].provider?.getCode(token.address) + await network.provider.send('hardhat_setCode', [ + await l2TestBridge.calculateL2TokenAddress(token.address), + '0x69', + ]) + await processL2ToL1Tx((await processL1ToL2Tx(tx))[0], inboxMock) + await network.provider.send('hardhat_setCode', [ + await l2TestBridge.calculateL2TokenAddress(token.address), + original_code, + ]) // await l2TestBridge.triggerTxToL1() const postUserBalance = await token.balanceOf(accounts[0].address) @@ -376,7 +371,7 @@ describe('Bridge peripherals end-to-end', () => { [maxSubmissionCost, '0x'] ) - await l1RouterTestBridge.outboundTransfer( + const tx = await l1RouterTestBridge.outboundTransfer( token.address, accounts[0].address, tokenAmount, @@ -385,6 +380,7 @@ describe('Bridge peripherals end-to-end', () => { data, { value: maxSubmissionCost + maxGas * gasPrice } ) + await processL1ToL2Tx(tx) const l2TokenAddress = await l2RouterTestBridge.calculateL2TokenAddress( token.address @@ -418,7 +414,7 @@ describe('Bridge peripherals end-to-end', () => { [maxSubmissionCost, '0x'] ) - await l1RouterTestBridge.outboundTransfer( + const tx = await l1RouterTestBridge.outboundTransfer( token.address, accounts[0].address, tokenAmount, @@ -427,6 +423,7 @@ describe('Bridge peripherals end-to-end', () => { data, { value: maxSubmissionCost + maxGas * gasPrice } ) + await processL1ToL2Tx(tx) const l2TokenAddress = await l2RouterTestBridge.calculateL2TokenAddress( token.address diff --git a/packages/arb-bridge-peripherals/test/testhelper.ts b/packages/arb-bridge-peripherals/test/testhelper.ts new file mode 100644 index 0000000000..7b9a4fd869 --- /dev/null +++ b/packages/arb-bridge-peripherals/test/testhelper.ts @@ -0,0 +1,107 @@ +/* + * Copyright 2019-2020, Offchain Labs, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* eslint-env node, mocha */ +import { ethers, network } from 'hardhat' +import { ContractTransaction } from 'ethers' +import { + InboxMock, + L1ArbitrumMessenger__factory, + L2ArbitrumMessenger__factory, +} from '../build/types' +import { TxToL1Event } from '../build/types/L2ArbitrumMessenger' + +export const processL1ToL2Tx = async ( + tx: Promise | ContractTransaction +) => { + const receipt = await (await tx).wait() + const iface = L1ArbitrumMessenger__factory.createInterface() + const logs = receipt.logs.filter( + log => log.topics[0] === iface.getEventTopic('TxToL2') + ) + if (logs.length === 0) throw new Error('No L1 to L2 txs') + const l1ToL2Logs = logs.map(log => { + const event = iface.parseLog(log) + const to = event.args!._to + const data = event.args!._data + const from = log.address + const fromAliased = + '0x' + + BigInt.asUintN( + 160, + BigInt(from) + BigInt('0x1111000000000000000000000000000000001111') + ) + .toString(16) + .padStart(40, '0') + return network.provider + .request({ + method: 'hardhat_setBalance', + params: [fromAliased, '0xffffffffffffffffffff'], + }) + .then(() => + network.provider.request({ + method: 'hardhat_impersonateAccount', + params: [fromAliased], + }) + ) + .then(() => ethers.getSigner(fromAliased)) + .then(signer => + signer.sendTransaction({ + to: to, + data: data, + }) + ) + }) + return Promise.all(l1ToL2Logs) +} + +export const processL2ToL1Tx = async ( + tx: Promise | ContractTransaction, + inboxMock: InboxMock +) => { + const receipt = await (await tx).wait() + const iface = L2ArbitrumMessenger__factory.createInterface() + const logs = receipt.logs.filter( + log => log.topics[0] === iface.getEventTopic('TxToL1') + ) + if (logs.length === 0) throw new Error('No L2 to L1 txs') + const l2ToL1Logs = logs.map(log => { + const event = iface.parseLog(log) + const to = event.args._to + const data = event.args._data + const from = log.address + return network.provider + .request({ + method: 'hardhat_setBalance', + params: [inboxMock.address, '0xffffffffffffffffffff'], + }) + .then(() => + network.provider.request({ + method: 'hardhat_impersonateAccount', + params: [inboxMock.address], + }) + ) + .then(() => inboxMock.setL2ToL1Sender(from, { gasLimit: 5000000 })) + .then(() => ethers.getSigner(inboxMock.address)) + .then(signer => + signer.sendTransaction({ + to: to, + data: data, + }) + ) + }) + return Promise.all(l2ToL1Logs) +} From f4f5b25a7e3011f29635b554c4d2493ce454a109 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 11 May 2022 03:34:00 +0800 Subject: [PATCH 032/128] Revert "fix: e2e test after 10fd24d" This reverts commit 8fdd9991ca773b753018bcbe50d220cee13e60d1. --- .../arbitrum/gateway/L2ArbitrumGateway.sol | 2 +- .../contracts/tokenbridge/test/GatewayTest.sol | 15 --------------- 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol index 9e235bd5f9..7fa9b1cea7 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol @@ -53,7 +53,7 @@ abstract contract L2ArbitrumGateway is L2ArbitrumMessenger, TokenGateway { uint256 _amount ); - modifier onlyCounterpartGateway() virtual override { + modifier onlyCounterpartGateway() override { require( msg.sender == AddressAliasHelper.applyL1ToL2Alias(counterpartGateway), "ONLY_COUNTERPART_GATEWAY" diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol index b99d87f240..9bcf44d6a9 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol @@ -173,11 +173,6 @@ contract L1GatewayTester is L1ArbitrumTestMessenger, L1ERC20Gateway { } contract L2GatewayTester is L2ArbitrumTestMessenger, L2ERC20Gateway { - modifier onlyCounterpartGateway() override { - require(msg.sender == counterpartGateway, "ONLY_COUNTERPART_GATEWAY"); - _; - } - function sendTxToL1( uint256 _l1CallValue, address _from, @@ -260,11 +255,6 @@ contract L1CustomGatewayTester is L1ArbitrumTestMessenger, L1CustomGateway { } contract L2CustomGatewayTester is L2ArbitrumTestMessenger, L2CustomGateway { - modifier onlyCounterpartGateway() override { - require(msg.sender == counterpartGateway, "ONLY_COUNTERPART_GATEWAY"); - _; - } - function sendTxToL1( uint256 _l1CallValue, address _from, @@ -325,11 +315,6 @@ contract L1WethGatewayTester is L1ArbitrumTestMessenger, L1WethGateway { } contract L2WethGatewayTester is L2ArbitrumTestMessenger, L2WethGateway { - modifier onlyCounterpartGateway() override { - require(msg.sender == counterpartGateway, "ONLY_COUNTERPART_GATEWAY"); - _; - } - function sendTxToL1( uint256 _l1CallValue, address _from, From 5cb1893e2cabba4510caa7f82b6d8c14cd4e32c3 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 11 May 2022 17:04:03 +0800 Subject: [PATCH 033/128] refactor: test rig for customGateway.e2e.ts --- .../test/customGateway.e2e.ts | 90 ++++++++++--------- 1 file changed, 50 insertions(+), 40 deletions(-) diff --git a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts index 65a5f427d6..1ab8383f53 100644 --- a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts +++ b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts @@ -15,23 +15,26 @@ */ /* eslint-env node, mocha */ -import { ethers } from 'hardhat' +import { ethers, network } from 'hardhat' import { assert, expect } from 'chai' import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' import { - L1CustomGatewayTester, + InboxMock, + L1CustomGateway, L1GatewayRouter, - L2CustomGatewayTester, + L2CustomGateway, L2GatewayRouter, } from '../build/types' +import { processL1ToL2Tx, processL2ToL1Tx } from './testhelper' describe('Bridge peripherals end-to-end custom gateway', () => { let accounts: SignerWithAddress[] let l1RouterTestBridge: L1GatewayRouter let l2RouterTestBridge: L2GatewayRouter - let l1TestBridge: L1CustomGatewayTester - let l2TestBridge: L2CustomGatewayTester + let l1TestBridge: L1CustomGateway + let l2TestBridge: L2CustomGateway + let inboxMock: InboxMock const maxSubmissionCost = 1 const maxGas = 1000000000 @@ -40,33 +43,36 @@ describe('Bridge peripherals end-to-end custom gateway', () => { before(async function () { accounts = await ethers.getSigners() + const InboxMock = await ethers.getContractFactory('InboxMock') + inboxMock = await InboxMock.deploy() + // l1 side deploy const L1RouterTestBridge = await ethers.getContractFactory( - 'L1GatewayRouterTester' + 'L1GatewayRouter' ) l1RouterTestBridge = await L1RouterTestBridge.deploy() const L1TestBridge = await ethers.getContractFactory( - 'L1CustomGatewayTester' + 'L1CustomGateway' ) l1TestBridge = await L1TestBridge.deploy() // l2 side deploy const L2TestBridge = await ethers.getContractFactory( - 'L2CustomGatewayTester' + 'L2CustomGateway' ) l2TestBridge = await L2TestBridge.deploy() const L2RouterTestBridge = await ethers.getContractFactory( - 'L2GatewayRouterTester' + 'L2GatewayRouter' ) l2RouterTestBridge = await L2RouterTestBridge.deploy() await l1TestBridge.functions.initialize( l2TestBridge.address, l1RouterTestBridge.address, - accounts[0].address, // inbox + inboxMock.address, // inbox accounts[0].address // owner ) @@ -80,7 +86,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { ethers.constants.AddressZero, // l1TestBridge.address, // defaultGateway '0x0000000000000000000000000000000000000000', // no whitelist l2RouterTestBridge.address, // counterparty - accounts[0].address // inbox + inboxMock.address // inbox ) const l2DefaultGateway = await l1TestBridge.counterpartGateway() @@ -88,13 +94,17 @@ describe('Bridge peripherals end-to-end custom gateway', () => { l1RouterTestBridge.address, l2DefaultGateway ) + + const ArbSysMock = await ethers.getContractFactory('ArbSysMock') + await network.provider.send('hardhat_setCode', [ + '0x0000000000000000000000000000000000000064', + ArbSysMock.bytecode, + ]) }) it('should deposit tokens', async function () { // custom token setup - const L1CustomToken = await ethers.getContractFactory( - 'TestCustomTokenL1' - ) + const L1CustomToken = await ethers.getContractFactory('TestCustomTokenL1') const l1CustomToken = await L1CustomToken.deploy( l1TestBridge.address, l1RouterTestBridge.address @@ -106,7 +116,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { l1CustomToken.address ) - await l1CustomToken.registerTokenOnL2( + await processL1ToL2Tx(await l1CustomToken.registerTokenOnL2( l2Token.address, 0, 0, @@ -116,7 +126,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { 0, 0, accounts[0].address - ) + )) // send escrowed tokens to bridge const tokenAmount = 100 @@ -137,6 +147,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { data, { value: maxSubmissionCost + maxGas * gasPrice } ) + await processL1ToL2Tx(tx) const escrowedTokens = await l1CustomToken.balanceOf(l1TestBridge.address) assert.equal(escrowedTokens.toNumber(), tokenAmount, 'Tokens not escrowed') @@ -151,9 +162,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { it('should withdraw tokens', async function () { // custom token setup - const L1CustomToken = await ethers.getContractFactory( - 'TestCustomTokenL1' - ) + const L1CustomToken = await ethers.getContractFactory('TestCustomTokenL1') const l1CustomToken = await L1CustomToken.deploy( l1TestBridge.address, l1RouterTestBridge.address @@ -165,13 +174,13 @@ describe('Bridge peripherals end-to-end custom gateway', () => { l1CustomToken.address ) - await l1TestBridge.forceRegisterTokenToL2( + await processL1ToL2Tx(await l1TestBridge.forceRegisterTokenToL2( [l1CustomToken.address], [l2Token.address], 0, 0, 0 - ) + )) await l1RouterTestBridge.setGateways( [l1CustomToken.address], [l1TestBridge.address], @@ -199,13 +208,14 @@ describe('Bridge peripherals end-to-end custom gateway', () => { data, { value: maxSubmissionCost + maxGas * gasPrice } ) + await processL1ToL2Tx(tx) const prevUserBalance = await l1CustomToken.balanceOf(accounts[0].address) - await l2TestBridge.functions[ + await processL2ToL1Tx(await l2TestBridge.functions[ 'outboundTransfer(address,address,uint256,bytes)' - ](l1CustomToken.address, accounts[0].address, tokenAmount, '0x') - await l2TestBridge.triggerTxToL1() + ](l1CustomToken.address, accounts[0].address, tokenAmount, '0x'), inboxMock) + // await l2TestBridge.triggerTxToL1() const postUserBalance = await l1CustomToken.balanceOf(accounts[0].address) @@ -217,22 +227,20 @@ describe('Bridge peripherals end-to-end custom gateway', () => { }) it('should force withdraw tokens if no token is deployed in L2', async function () { // custom token setup - const L1CustomToken = await ethers.getContractFactory( - 'TestCustomTokenL1' - ) + const L1CustomToken = await ethers.getContractFactory('TestCustomTokenL1') const l1CustomToken = await L1CustomToken.deploy( l1TestBridge.address, l1RouterTestBridge.address ) // register a non-existent L2 token so we can test the force withdrawal - await l1TestBridge.forceRegisterTokenToL2( + await processL1ToL2Tx(await l1TestBridge.forceRegisterTokenToL2( [l1CustomToken.address], ['0x0000000000000000000000000000000000000001'], 0, 0, 0 - ) + )) await l1RouterTestBridge.setGateways( [l1CustomToken.address], [l1TestBridge.address], @@ -267,7 +275,8 @@ describe('Bridge peripherals end-to-end custom gateway', () => { data, { value: maxSubmissionCost + maxGas * gasPrice } ) - await l2TestBridge.triggerTxToL1() + await processL2ToL1Tx((await processL1ToL2Tx(tx))[0], inboxMock) + // await l2TestBridge.triggerTxToL1() const postUserBalance = await l1CustomToken.balanceOf(accounts[0].address) const postAllowance = await l1CustomToken.allowance( @@ -305,13 +314,13 @@ describe('Bridge peripherals end-to-end custom gateway', () => { l1CustomToken.address ) - await l1TestBridge.forceRegisterTokenToL2( + await processL1ToL2Tx(await l1TestBridge.forceRegisterTokenToL2( [l1CustomToken.address], [l2Token.address], 0, 0, 0 - ) + )) await l1RouterTestBridge.setGateways( [l1CustomToken.address], [l1TestBridge.address], @@ -330,7 +339,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { [maxSubmissionCost, '0x'] ) - await l1RouterTestBridge.outboundTransfer( + const tx = await l1RouterTestBridge.outboundTransfer( l1CustomToken.address, accounts[0].address, tokenAmount, @@ -339,6 +348,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { data, { value: maxSubmissionCost + maxGas * gasPrice } ) + await processL1ToL2Tx(tx) // mint tokens for the user in L2 await l2Token.userMint(accounts[0].address, tokenAmount) @@ -355,10 +365,10 @@ describe('Bridge peripherals end-to-end custom gateway', () => { // do a small withdrawal that will have enough collateral const smallWithdrawal = tokenAmount / 2 - await l2TestBridge.functions[ + await processL2ToL1Tx(await l2TestBridge.functions[ 'outboundTransfer(address,address,uint256,bytes)' - ](l1CustomToken.address, accounts[0].address, smallWithdrawal, '0x') - await l2TestBridge.triggerTxToL1() + ](l1CustomToken.address, accounts[0].address, smallWithdrawal, '0x'), inboxMock) + // await l2TestBridge.triggerTxToL1() const midUserBalance = await l1CustomToken.balanceOf(accounts[0].address) const midEscrow = await l1CustomToken.balanceOf(l1TestBridge.address) @@ -374,14 +384,14 @@ describe('Bridge peripherals end-to-end custom gateway', () => { 'Wrong escrow balance in initial withdrawal' ) - await l2TestBridge.functions['outboundTransfer(address,address,uint256,bytes)']( + await expect((await processL2ToL1Tx(await l2TestBridge.functions[ + 'outboundTransfer(address,address,uint256,bytes)' + ]( l1CustomToken.address, accounts[0].address, l2Balance.sub(smallWithdrawal), '0x' - ) - await expect(l2TestBridge.triggerTxToL1()) - .to.emit(l1CustomToken, 'Transfer(address,address,uint256)') + ), inboxMock))[0]).to.emit(l1CustomToken, 'Transfer(address,address,uint256)') .withArgs(ethers.constants.AddressZero, l1TestBridge.address, tokenAmount) // this is the mint const postUserBalance = await l1CustomToken.balanceOf(accounts[0].address) From a976669e35343cfad87b81dff2b50415f65a5fd7 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 11 May 2022 17:32:21 +0800 Subject: [PATCH 034/128] refactor: test rig for wethGateway.e2e.ts --- .../test/wethGateway.e2e.ts | 84 +++++++++++++------ 1 file changed, 58 insertions(+), 26 deletions(-) diff --git a/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts b/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts index 5829ae6c62..8ce53d335c 100644 --- a/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts +++ b/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts @@ -15,20 +15,29 @@ */ /* eslint-env node, mocha */ -import { ethers } from 'hardhat' +import { ethers, network } from 'hardhat' import { assert, expect } from 'chai' import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' -import { Contract, ContractFactory } from 'ethers' - -describe('Bridge peripherals end-to-end weth gateway', () => { +import { + InboxMock, + L1WethGateway, + L1GatewayRouter, + L2WethGateway, + L2GatewayRouter, +} from '../build/types' +import { processL1ToL2Tx, processL2ToL1Tx } from './testhelper' +import { Contract } from 'ethers' + +describe.only('Bridge peripherals end-to-end weth gateway', () => { let accounts: SignerWithAddress[] - let l1RouterTestBridge: Contract - let l2RouterTestBridge: Contract - let l1TestBridge: Contract - let l2TestBridge: Contract + let l1RouterTestBridge: L1GatewayRouter + let l2RouterTestBridge: L2GatewayRouter + let l1TestBridge: L1WethGateway + let l2TestBridge: L2WethGateway let l1Weth: Contract let l2Weth: Contract + let inboxMock: InboxMock const maxSubmissionCost = 1 const maxGas = 1000000000 @@ -37,18 +46,21 @@ describe('Bridge peripherals end-to-end weth gateway', () => { before(async function () { accounts = await ethers.getSigners() - const TestWETH9: ContractFactory = await ethers.getContractFactory( + const InboxMock = await ethers.getContractFactory('InboxMock') + inboxMock = await InboxMock.deploy() + + const TestWETH9 = await ethers.getContractFactory( 'TestWETH9' ) // l1 side deploy - const L1RouterTestBridge: ContractFactory = await ethers.getContractFactory( + const L1RouterTestBridge = await ethers.getContractFactory( 'L1GatewayRouter' ) l1RouterTestBridge = await L1RouterTestBridge.deploy() - const L1TestBridge: ContractFactory = await ethers.getContractFactory( - 'L1WethGatewayTester' + const L1TestBridge = await ethers.getContractFactory( + 'L1WethGateway' ) l1TestBridge = await L1TestBridge.deploy() @@ -57,17 +69,17 @@ describe('Bridge peripherals end-to-end weth gateway', () => { // l2 side deploy - const L2TestBridge: ContractFactory = await ethers.getContractFactory( - 'L2WethGatewayTester' + const L2TestBridge = await ethers.getContractFactory( + 'L2WethGateway' ) l2TestBridge = await L2TestBridge.deploy() - const L2RouterTestBridge: ContractFactory = await ethers.getContractFactory( + const L2RouterTestBridge = await ethers.getContractFactory( 'L2GatewayRouter' ) l2RouterTestBridge = await L2RouterTestBridge.deploy() - const L2Weth: ContractFactory = await ethers.getContractFactory('aeWETH') + const L2Weth = await ethers.getContractFactory('aeWETH') l2Weth = await L2Weth.deploy() await l2Weth.deployed() // initialize contracts @@ -82,7 +94,7 @@ describe('Bridge peripherals end-to-end weth gateway', () => { ) ).to.be.revertedWith('Initializable: contract is already initialized') - const Proxy: ContractFactory = await ethers.getContractFactory( + const Proxy = await ethers.getContractFactory( 'TransparentUpgradeableProxy' ) l2Weth = await Proxy.deploy(l2Weth.address, accounts[1].address, '0x') @@ -98,7 +110,7 @@ describe('Bridge peripherals end-to-end weth gateway', () => { await l1TestBridge.functions.initialize( l2TestBridge.address, l1RouterTestBridge.address, - accounts[0].address, // inbox + inboxMock.address, // inbox l1Weth.address, l2Weth.address ) @@ -115,7 +127,7 @@ describe('Bridge peripherals end-to-end weth gateway', () => { l1TestBridge.address, // defaultGateway '0x0000000000000000000000000000000000000000', // no whitelist l2RouterTestBridge.address, // counterparty - accounts[0].address // inbox + inboxMock.address // inbox ) const l2DefaultGateway = await l1TestBridge.counterpartGateway() @@ -123,6 +135,19 @@ describe('Bridge peripherals end-to-end weth gateway', () => { l1RouterTestBridge.address, l2DefaultGateway ) + + const ArbSysMock = await ethers.getContractFactory('ArbSysMock') + const arbsysmock = await ArbSysMock.deploy() + await network.provider.send('hardhat_setCode', [ + '0x0000000000000000000000000000000000000064', + await network.provider.send('eth_getCode', [arbsysmock.address]), + ]) + + network.provider + .request({ + method: 'hardhat_setBalance', + params: [l2TestBridge.address, '0xffffffffffffffffffff'], + }) }) it('should deposit tokens', async function () { @@ -165,6 +190,7 @@ describe('Bridge peripherals end-to-end weth gateway', () => { data, { value: maxSubmissionCost + maxGas * gasPrice } ) + await processL1ToL2Tx(tx) const escrowedTokens = await l1Weth.balanceOf(l1TestBridge.address) assert.equal(escrowedTokens, 0, 'Tokens should not be escrowed') @@ -216,15 +242,16 @@ describe('Bridge peripherals end-to-end weth gateway', () => { data, { value: maxSubmissionCost + maxGas * gasPrice } ) + await processL1ToL2Tx(tx) const prevUserBalance = await l1Weth.balanceOf(accounts[0].address) await l2Weth.approve(l2TestBridge.address, tokenAmount) - const withdrawTx = await l2TestBridge.functions[ + await processL2ToL1Tx(await l2TestBridge.functions[ 'outboundTransfer(address,address,uint256,bytes)' - ](l1Weth.address, accounts[0].address, tokenAmount, '0x') - await l2TestBridge.triggerTxToL1() + ](l1Weth.address, accounts[0].address, tokenAmount, '0x'), inboxMock) + // await l2TestBridge.triggerTxToL1() const postUserBalance = await l1Weth.balanceOf(accounts[0].address) @@ -239,7 +266,7 @@ describe('Bridge peripherals end-to-end weth gateway', () => { const ZERO_ADDR = '0x0000000000000000000000000000000000000000' // set L2 weth to address zero to test if force withdraw is triggered when // no contract is deployed - await l2TestBridge.setL2WethAddress(ZERO_ADDR) + // await l2TestBridge.setL2WethAddress(ZERO_ADDR) // send escrowed tokens to bridge const tokenAmount = 100 @@ -257,7 +284,7 @@ describe('Bridge peripherals end-to-end weth gateway', () => { [maxSubmissionCost, '0x'] ) - await l1RouterTestBridge.outboundTransfer( + const tx = await l1RouterTestBridge.outboundTransfer( l1Weth.address, accounts[0].address, tokenAmount, @@ -266,7 +293,12 @@ describe('Bridge peripherals end-to-end weth gateway', () => { data, { value: maxSubmissionCost + maxGas * gasPrice } ) - await l2TestBridge.triggerTxToL1() + await network.provider.send('hardhat_setCode', [ + l2Weth.address, + '0x69', + ]) + await processL2ToL1Tx((await processL1ToL2Tx(tx))[0], inboxMock) + // await l2TestBridge.triggerTxToL1() const postUserBalance = await l1Weth.balanceOf(accounts[0].address) const postAllowance = await l1Weth.allowance( @@ -286,6 +318,6 @@ describe('Bridge peripherals end-to-end weth gateway', () => { 'Tokens not spent in allowance' ) // unset the custom l2 address as to not affect other tests - await l2TestBridge.setL2WethAddress(l2Weth.address) + // await l2TestBridge.setL2WethAddress(l2Weth.address) }) }) From 61a153ac08327327c46a8fc408663153d0a8d23b Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 11 May 2022 17:33:24 +0800 Subject: [PATCH 035/128] fix: fund to address in processL2ToL1Tx --- packages/arb-bridge-peripherals/test/testhelper.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/arb-bridge-peripherals/test/testhelper.ts b/packages/arb-bridge-peripherals/test/testhelper.ts index 7b9a4fd869..25c36ad104 100644 --- a/packages/arb-bridge-peripherals/test/testhelper.ts +++ b/packages/arb-bridge-peripherals/test/testhelper.ts @@ -88,6 +88,12 @@ export const processL2ToL1Tx = async ( method: 'hardhat_setBalance', params: [inboxMock.address, '0xffffffffffffffffffff'], }) + .then(() => // Also fund to address (which can be wethgateway) + network.provider.request({ + method: 'hardhat_setBalance', + params: [to, '0xffffffffffffffffffff'], + }) + ) .then(() => network.provider.request({ method: 'hardhat_impersonateAccount', From 1b65983658192b3d9ffb85ba0f8c9142db8d295e Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 11 May 2022 17:39:27 +0800 Subject: [PATCH 036/128] fix: use deployed arbSysMock bytecode --- packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts | 4 ++-- packages/arb-bridge-peripherals/test/customGateway.e2e.ts | 3 ++- packages/arb-bridge-peripherals/test/wethGateway.e2e.ts | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts b/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts index c0da36d8bc..2377b05652 100644 --- a/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts +++ b/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts @@ -18,7 +18,6 @@ import { ethers, network } from 'hardhat' import { assert, expect } from 'chai' import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' -import { Contract, ContractTransaction } from 'ethers' import { InboxMock, L1ERC20Gateway, @@ -116,9 +115,10 @@ describe('Bridge peripherals end-to-end', () => { ) const ArbSysMock = await ethers.getContractFactory('ArbSysMock') + const arbsysmock = await ArbSysMock.deploy() await network.provider.send('hardhat_setCode', [ '0x0000000000000000000000000000000000000064', - ArbSysMock.bytecode, + await network.provider.send('eth_getCode', [arbsysmock.address]), ]) }) diff --git a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts index 1ab8383f53..fe36f3ec2b 100644 --- a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts +++ b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts @@ -96,9 +96,10 @@ describe('Bridge peripherals end-to-end custom gateway', () => { ) const ArbSysMock = await ethers.getContractFactory('ArbSysMock') + const arbsysmock = await ArbSysMock.deploy() await network.provider.send('hardhat_setCode', [ '0x0000000000000000000000000000000000000064', - ArbSysMock.bytecode, + await network.provider.send('eth_getCode', [arbsysmock.address]), ]) }) diff --git a/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts b/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts index 8ce53d335c..8eaf272a40 100644 --- a/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts +++ b/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts @@ -28,7 +28,7 @@ import { import { processL1ToL2Tx, processL2ToL1Tx } from './testhelper' import { Contract } from 'ethers' -describe.only('Bridge peripherals end-to-end weth gateway', () => { +describe('Bridge peripherals end-to-end weth gateway', () => { let accounts: SignerWithAddress[] let l1RouterTestBridge: L1GatewayRouter From 8687b31537943434fd3a6643afe0d3df65cd80b6 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 11 May 2022 17:56:46 +0800 Subject: [PATCH 037/128] style: prettier and code style --- .../contracts/tokenbridge/test/ArbSysMock.sol | 2 +- .../test/canonicalBridge.e2e.ts | 106 ++++----- .../test/customGateway.e2e.ts | 207 ++++++++++-------- .../arb-bridge-peripherals/test/testhelper.ts | 63 +++--- .../test/wethGateway.e2e.ts | 92 ++++---- 5 files changed, 242 insertions(+), 228 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/ArbSysMock.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/ArbSysMock.sol index e4f1f3123e..9e30d274e2 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/ArbSysMock.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/ArbSysMock.sol @@ -4,4 +4,4 @@ contract ArbSysMock { function sendTxToL1(address destination, bytes calldata calldataForL1) external payable returns(uint){ return 0; } -} \ No newline at end of file +} diff --git a/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts b/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts index 2377b05652..53b4efb297 100644 --- a/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts +++ b/packages/arb-bridge-peripherals/test/canonicalBridge.e2e.ts @@ -56,7 +56,6 @@ describe('Bridge peripherals end-to-end', () => { l1TestBridge = await L1TestBridge.deploy() // l2 side deploy - const StandardArbERC20 = await ethers.getContractFactory('StandardArbERC20') const standardArbERC20Logic = await StandardArbERC20.deploy() @@ -169,16 +168,17 @@ describe('Bridge peripherals end-to-end', () => { ) ).to.be.revertedWith('WRONG_ETH_VALUE') - const tx = await l1RouterTestBridge.outboundTransfer( - token.address, - accounts[0].address, - tokenAmount, - maxGas, - gasPrice, - data, - { value: maxSubmissionCost + maxGas * gasPrice } + await processL1ToL2Tx( + await l1RouterTestBridge.outboundTransfer( + token.address, + accounts[0].address, + tokenAmount, + maxGas, + gasPrice, + data, + { value: maxSubmissionCost + maxGas * gasPrice } + ) ) - await processL1ToL2Tx(tx) const escrowedTokens = await token.balanceOf(l1TestBridge.address) assert.equal(escrowedTokens.toNumber(), tokenAmount, 'Tokens not escrowed') @@ -212,16 +212,17 @@ describe('Bridge peripherals end-to-end', () => { [maxSubmissionCost, '0x'] ) - const tx = await l1RouterTestBridge.outboundTransfer( - token.address, - accounts[0].address, - tokenAmount, - maxGas, - gasPrice, - data, - { value: maxSubmissionCost + maxGas * gasPrice } + await processL1ToL2Tx( + await l1RouterTestBridge.outboundTransfer( + token.address, + accounts[0].address, + tokenAmount, + maxGas, + gasPrice, + data, + { value: maxSubmissionCost + maxGas * gasPrice } + ) ) - await processL1ToL2Tx(tx) const prevUserBalance = await token.balanceOf(accounts[0].address) @@ -231,7 +232,6 @@ describe('Bridge peripherals end-to-end', () => { ](token.address, accounts[0].address, tokenAmount, '0x'), inboxMock ) - // await l2TestBridge.triggerTxToL1() const postUserBalance = await token.balanceOf(accounts[0].address) @@ -255,16 +255,17 @@ describe('Bridge peripherals end-to-end', () => { [maxSubmissionCost, '0x'] ) - const tx = await l1RouterTestBridge.outboundTransfer( - token.address, - accounts[0].address, - tokenAmount, - maxGas, - gasPrice, - data, - { value: maxSubmissionCost + maxGas * gasPrice } + await processL1ToL2Tx( + await l1RouterTestBridge.outboundTransfer( + token.address, + accounts[0].address, + tokenAmount, + maxGas, + gasPrice, + data, + { value: maxSubmissionCost + maxGas * gasPrice } + ) ) - await processL1ToL2Tx(tx) const prevUserBalance = await token.balanceOf(accounts[0].address) @@ -274,7 +275,6 @@ describe('Bridge peripherals end-to-end', () => { ](token.address, accounts[0].address, tokenAmount, '0x'), inboxMock ) - // await l2TestBridge.triggerTxToL1() const postUserBalance = await token.balanceOf(accounts[0].address) @@ -317,16 +317,17 @@ describe('Bridge peripherals end-to-end', () => { { value: maxSubmissionCost + maxGas * gasPrice } ) const original_code = await accounts[0].provider?.getCode(token.address) + // Set l2 token to invalid code to trigger force withdraw await network.provider.send('hardhat_setCode', [ await l2TestBridge.calculateL2TokenAddress(token.address), - '0x69', + '0x00', ]) await processL2ToL1Tx((await processL1ToL2Tx(tx))[0], inboxMock) + // Revert previous setCode await network.provider.send('hardhat_setCode', [ await l2TestBridge.calculateL2TokenAddress(token.address), original_code, ]) - // await l2TestBridge.triggerTxToL1() const postUserBalance = await token.balanceOf(accounts[0].address) const postAllowance = await token.allowance( @@ -353,9 +354,6 @@ describe('Bridge peripherals end-to-end', () => { const l2Balance = await l2Token.balanceOf(accounts[0].address) assert.equal(l2Balance.toNumber(), 0, 'User has tokens in L2') - - // reset stub return in test case - // await l2TestBridge.setStubAddressOracleReturn(ethers.constants.AddressZero) }) it('should deposit tokens with bytes32 field correctly', async function () { @@ -371,16 +369,17 @@ describe('Bridge peripherals end-to-end', () => { [maxSubmissionCost, '0x'] ) - const tx = await l1RouterTestBridge.outboundTransfer( - token.address, - accounts[0].address, - tokenAmount, - maxGas, - gasPrice, - data, - { value: maxSubmissionCost + maxGas * gasPrice } + await processL1ToL2Tx( + await l1RouterTestBridge.outboundTransfer( + token.address, + accounts[0].address, + tokenAmount, + maxGas, + gasPrice, + data, + { value: maxSubmissionCost + maxGas * gasPrice } + ) ) - await processL1ToL2Tx(tx) const l2TokenAddress = await l2RouterTestBridge.calculateL2TokenAddress( token.address @@ -414,16 +413,17 @@ describe('Bridge peripherals end-to-end', () => { [maxSubmissionCost, '0x'] ) - const tx = await l1RouterTestBridge.outboundTransfer( - token.address, - accounts[0].address, - tokenAmount, - maxGas, - gasPrice, - data, - { value: maxSubmissionCost + maxGas * gasPrice } + await processL1ToL2Tx( + await l1RouterTestBridge.outboundTransfer( + token.address, + accounts[0].address, + tokenAmount, + maxGas, + gasPrice, + data, + { value: maxSubmissionCost + maxGas * gasPrice } + ) ) - await processL1ToL2Tx(tx) const l2TokenAddress = await l2RouterTestBridge.calculateL2TokenAddress( token.address diff --git a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts index fe36f3ec2b..44692f8a55 100644 --- a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts +++ b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts @@ -52,16 +52,11 @@ describe('Bridge peripherals end-to-end custom gateway', () => { ) l1RouterTestBridge = await L1RouterTestBridge.deploy() - const L1TestBridge = await ethers.getContractFactory( - 'L1CustomGateway' - ) + const L1TestBridge = await ethers.getContractFactory('L1CustomGateway') l1TestBridge = await L1TestBridge.deploy() // l2 side deploy - - const L2TestBridge = await ethers.getContractFactory( - 'L2CustomGateway' - ) + const L2TestBridge = await ethers.getContractFactory('L2CustomGateway') l2TestBridge = await L2TestBridge.deploy() const L2RouterTestBridge = await ethers.getContractFactory( @@ -117,17 +112,19 @@ describe('Bridge peripherals end-to-end custom gateway', () => { l1CustomToken.address ) - await processL1ToL2Tx(await l1CustomToken.registerTokenOnL2( - l2Token.address, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - accounts[0].address - )) + await processL1ToL2Tx( + await l1CustomToken.registerTokenOnL2( + l2Token.address, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + accounts[0].address + ) + ) // send escrowed tokens to bridge const tokenAmount = 100 @@ -139,16 +136,17 @@ describe('Bridge peripherals end-to-end custom gateway', () => { [maxSubmissionCost, '0x'] ) - const tx = await l1RouterTestBridge.outboundTransfer( - l1CustomToken.address, - accounts[0].address, - tokenAmount, - maxGas, - gasPrice, - data, - { value: maxSubmissionCost + maxGas * gasPrice } + await processL1ToL2Tx( + await l1RouterTestBridge.outboundTransfer( + l1CustomToken.address, + accounts[0].address, + tokenAmount, + maxGas, + gasPrice, + data, + { value: maxSubmissionCost + maxGas * gasPrice } + ) ) - await processL1ToL2Tx(tx) const escrowedTokens = await l1CustomToken.balanceOf(l1TestBridge.address) assert.equal(escrowedTokens.toNumber(), tokenAmount, 'Tokens not escrowed') @@ -175,13 +173,15 @@ describe('Bridge peripherals end-to-end custom gateway', () => { l1CustomToken.address ) - await processL1ToL2Tx(await l1TestBridge.forceRegisterTokenToL2( - [l1CustomToken.address], - [l2Token.address], - 0, - 0, - 0 - )) + await processL1ToL2Tx( + await l1TestBridge.forceRegisterTokenToL2( + [l1CustomToken.address], + [l2Token.address], + 0, + 0, + 0 + ) + ) await l1RouterTestBridge.setGateways( [l1CustomToken.address], [l1TestBridge.address], @@ -200,23 +200,26 @@ describe('Bridge peripherals end-to-end custom gateway', () => { [maxSubmissionCost, '0x'] ) - const tx = await l1RouterTestBridge.outboundTransfer( - l1CustomToken.address, - accounts[0].address, - tokenAmount, - maxGas, - gasPrice, - data, - { value: maxSubmissionCost + maxGas * gasPrice } + await processL1ToL2Tx( + await l1RouterTestBridge.outboundTransfer( + l1CustomToken.address, + accounts[0].address, + tokenAmount, + maxGas, + gasPrice, + data, + { value: maxSubmissionCost + maxGas * gasPrice } + ) ) - await processL1ToL2Tx(tx) const prevUserBalance = await l1CustomToken.balanceOf(accounts[0].address) - await processL2ToL1Tx(await l2TestBridge.functions[ - 'outboundTransfer(address,address,uint256,bytes)' - ](l1CustomToken.address, accounts[0].address, tokenAmount, '0x'), inboxMock) - // await l2TestBridge.triggerTxToL1() + await processL2ToL1Tx( + await l2TestBridge.functions[ + 'outboundTransfer(address,address,uint256,bytes)' + ](l1CustomToken.address, accounts[0].address, tokenAmount, '0x'), + inboxMock + ) const postUserBalance = await l1CustomToken.balanceOf(accounts[0].address) @@ -235,13 +238,15 @@ describe('Bridge peripherals end-to-end custom gateway', () => { ) // register a non-existent L2 token so we can test the force withdrawal - await processL1ToL2Tx(await l1TestBridge.forceRegisterTokenToL2( - [l1CustomToken.address], - ['0x0000000000000000000000000000000000000001'], - 0, - 0, - 0 - )) + await processL1ToL2Tx( + await l1TestBridge.forceRegisterTokenToL2( + [l1CustomToken.address], + ['0x0000000000000000000000000000000000000001'], + 0, + 0, + 0 + ) + ) await l1RouterTestBridge.setGateways( [l1CustomToken.address], [l1TestBridge.address], @@ -267,17 +272,22 @@ describe('Bridge peripherals end-to-end custom gateway', () => { const prevUserBalance = await l1CustomToken.balanceOf(accounts[0].address) - const tx = await l1RouterTestBridge.outboundTransfer( - l1CustomToken.address, - accounts[0].address, - tokenAmount, - maxGas, - gasPrice, - data, - { value: maxSubmissionCost + maxGas * gasPrice } + await processL2ToL1Tx( + ( + await processL1ToL2Tx( + await l1RouterTestBridge.outboundTransfer( + l1CustomToken.address, + accounts[0].address, + tokenAmount, + maxGas, + gasPrice, + data, + { value: maxSubmissionCost + maxGas * gasPrice } + ) + ) + )[0], + inboxMock ) - await processL2ToL1Tx((await processL1ToL2Tx(tx))[0], inboxMock) - // await l2TestBridge.triggerTxToL1() const postUserBalance = await l1CustomToken.balanceOf(accounts[0].address) const postAllowance = await l1CustomToken.allowance( @@ -315,13 +325,15 @@ describe('Bridge peripherals end-to-end custom gateway', () => { l1CustomToken.address ) - await processL1ToL2Tx(await l1TestBridge.forceRegisterTokenToL2( - [l1CustomToken.address], - [l2Token.address], - 0, - 0, - 0 - )) + await processL1ToL2Tx( + await l1TestBridge.forceRegisterTokenToL2( + [l1CustomToken.address], + [l2Token.address], + 0, + 0, + 0 + ) + ) await l1RouterTestBridge.setGateways( [l1CustomToken.address], [l1TestBridge.address], @@ -340,16 +352,17 @@ describe('Bridge peripherals end-to-end custom gateway', () => { [maxSubmissionCost, '0x'] ) - const tx = await l1RouterTestBridge.outboundTransfer( - l1CustomToken.address, - accounts[0].address, - tokenAmount, - maxGas, - gasPrice, - data, - { value: maxSubmissionCost + maxGas * gasPrice } + await processL1ToL2Tx( + await l1RouterTestBridge.outboundTransfer( + l1CustomToken.address, + accounts[0].address, + tokenAmount, + maxGas, + gasPrice, + data, + { value: maxSubmissionCost + maxGas * gasPrice } + ) ) - await processL1ToL2Tx(tx) // mint tokens for the user in L2 await l2Token.userMint(accounts[0].address, tokenAmount) @@ -366,10 +379,12 @@ describe('Bridge peripherals end-to-end custom gateway', () => { // do a small withdrawal that will have enough collateral const smallWithdrawal = tokenAmount / 2 - await processL2ToL1Tx(await l2TestBridge.functions[ - 'outboundTransfer(address,address,uint256,bytes)' - ](l1CustomToken.address, accounts[0].address, smallWithdrawal, '0x'), inboxMock) - // await l2TestBridge.triggerTxToL1() + await processL2ToL1Tx( + await l2TestBridge.functions[ + 'outboundTransfer(address,address,uint256,bytes)' + ](l1CustomToken.address, accounts[0].address, smallWithdrawal, '0x'), + inboxMock + ) const midUserBalance = await l1CustomToken.balanceOf(accounts[0].address) const midEscrow = await l1CustomToken.balanceOf(l1TestBridge.address) @@ -385,14 +400,22 @@ describe('Bridge peripherals end-to-end custom gateway', () => { 'Wrong escrow balance in initial withdrawal' ) - await expect((await processL2ToL1Tx(await l2TestBridge.functions[ - 'outboundTransfer(address,address,uint256,bytes)' - ]( - l1CustomToken.address, - accounts[0].address, - l2Balance.sub(smallWithdrawal), - '0x' - ), inboxMock))[0]).to.emit(l1CustomToken, 'Transfer(address,address,uint256)') + await expect( + ( + await processL2ToL1Tx( + await l2TestBridge.functions[ + 'outboundTransfer(address,address,uint256,bytes)' + ]( + l1CustomToken.address, + accounts[0].address, + l2Balance.sub(smallWithdrawal), + '0x' + ), + inboxMock + ) + )[0] + ) + .to.emit(l1CustomToken, 'Transfer(address,address,uint256)') .withArgs(ethers.constants.AddressZero, l1TestBridge.address, tokenAmount) // this is the mint const postUserBalance = await l1CustomToken.balanceOf(accounts[0].address) diff --git a/packages/arb-bridge-peripherals/test/testhelper.ts b/packages/arb-bridge-peripherals/test/testhelper.ts index 25c36ad104..cb42c4441d 100644 --- a/packages/arb-bridge-peripherals/test/testhelper.ts +++ b/packages/arb-bridge-peripherals/test/testhelper.ts @@ -34,37 +34,37 @@ export const processL1ToL2Tx = async ( ) if (logs.length === 0) throw new Error('No L1 to L2 txs') const l1ToL2Logs = logs.map(log => { - const event = iface.parseLog(log) - const to = event.args!._to - const data = event.args!._data - const from = log.address - const fromAliased = - '0x' + - BigInt.asUintN( - 160, - BigInt(from) + BigInt('0x1111000000000000000000000000000000001111') - ) - .toString(16) - .padStart(40, '0') - return network.provider - .request({ - method: 'hardhat_setBalance', - params: [fromAliased, '0xffffffffffffffffffff'], + const event = iface.parseLog(log) + const to = event.args!._to + const data = event.args!._data + const from = log.address + const fromAliased = + '0x' + + BigInt.asUintN( + 160, + BigInt(from) + BigInt('0x1111000000000000000000000000000000001111') + ) + .toString(16) + .padStart(40, '0') + return network.provider + .request({ + method: 'hardhat_setBalance', + params: [fromAliased, '0xffffffffffffffffffff'], + }) + .then(() => + network.provider.request({ + method: 'hardhat_impersonateAccount', + params: [fromAliased], + }) + ) + .then(() => ethers.getSigner(fromAliased)) + .then(signer => + signer.sendTransaction({ + to: to, + data: data, }) - .then(() => - network.provider.request({ - method: 'hardhat_impersonateAccount', - params: [fromAliased], - }) - ) - .then(() => ethers.getSigner(fromAliased)) - .then(signer => - signer.sendTransaction({ - to: to, - data: data, - }) - ) - }) + ) + }) return Promise.all(l1ToL2Logs) } @@ -88,7 +88,8 @@ export const processL2ToL1Tx = async ( method: 'hardhat_setBalance', params: [inboxMock.address, '0xffffffffffffffffffff'], }) - .then(() => // Also fund to address (which can be wethgateway) + .then(() => + // Also fund to address (which can be wethgateway) network.provider.request({ method: 'hardhat_setBalance', params: [to, '0xffffffffffffffffffff'], diff --git a/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts b/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts index 8eaf272a40..f5a5f6dffd 100644 --- a/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts +++ b/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts @@ -49,9 +49,7 @@ describe('Bridge peripherals end-to-end weth gateway', () => { const InboxMock = await ethers.getContractFactory('InboxMock') inboxMock = await InboxMock.deploy() - const TestWETH9 = await ethers.getContractFactory( - 'TestWETH9' - ) + const TestWETH9 = await ethers.getContractFactory('TestWETH9') // l1 side deploy const L1RouterTestBridge = await ethers.getContractFactory( @@ -59,19 +57,14 @@ describe('Bridge peripherals end-to-end weth gateway', () => { ) l1RouterTestBridge = await L1RouterTestBridge.deploy() - const L1TestBridge = await ethers.getContractFactory( - 'L1WethGateway' - ) + const L1TestBridge = await ethers.getContractFactory('L1WethGateway') l1TestBridge = await L1TestBridge.deploy() l1Weth = await TestWETH9.deploy('wethl1', 'wl1') l1Weth = await l1Weth.deployed() // l2 side deploy - - const L2TestBridge = await ethers.getContractFactory( - 'L2WethGateway' - ) + const L2TestBridge = await ethers.getContractFactory('L2WethGateway') l2TestBridge = await L2TestBridge.deploy() const L2RouterTestBridge = await ethers.getContractFactory( @@ -94,9 +87,7 @@ describe('Bridge peripherals end-to-end weth gateway', () => { ) ).to.be.revertedWith('Initializable: contract is already initialized') - const Proxy = await ethers.getContractFactory( - 'TransparentUpgradeableProxy' - ) + const Proxy = await ethers.getContractFactory('TransparentUpgradeableProxy') l2Weth = await Proxy.deploy(l2Weth.address, accounts[1].address, '0x') l2Weth = await L2Weth.attach(l2Weth.address) await l2Weth.initialize( @@ -143,11 +134,10 @@ describe('Bridge peripherals end-to-end weth gateway', () => { await network.provider.send('eth_getCode', [arbsysmock.address]), ]) - network.provider - .request({ - method: 'hardhat_setBalance', - params: [l2TestBridge.address, '0xffffffffffffffffffff'], - }) + network.provider.request({ + method: 'hardhat_setBalance', + params: [l2TestBridge.address, '0xffffffffffffffffffff'], + }) }) it('should deposit tokens', async function () { @@ -181,16 +171,17 @@ describe('Bridge peripherals end-to-end weth gateway', () => { 'Not expected l2 weth address' ) - const tx = await l1RouterTestBridge.outboundTransfer( - l1Weth.address, - accounts[0].address, - tokenAmount, - maxGas, - gasPrice, - data, - { value: maxSubmissionCost + maxGas * gasPrice } + await processL1ToL2Tx( + await l1RouterTestBridge.outboundTransfer( + l1Weth.address, + accounts[0].address, + tokenAmount, + maxGas, + gasPrice, + data, + { value: maxSubmissionCost + maxGas * gasPrice } + ) ) - await processL1ToL2Tx(tx) const escrowedTokens = await l1Weth.balanceOf(l1TestBridge.address) assert.equal(escrowedTokens, 0, 'Tokens should not be escrowed') @@ -233,25 +224,28 @@ describe('Bridge peripherals end-to-end weth gateway', () => { 'Not expected l2 weth address' ) - const tx = await l1RouterTestBridge.outboundTransfer( - l1Weth.address, - accounts[0].address, - tokenAmount, - maxGas, - gasPrice, - data, - { value: maxSubmissionCost + maxGas * gasPrice } + await processL1ToL2Tx( + await l1RouterTestBridge.outboundTransfer( + l1Weth.address, + accounts[0].address, + tokenAmount, + maxGas, + gasPrice, + data, + { value: maxSubmissionCost + maxGas * gasPrice } + ) ) - await processL1ToL2Tx(tx) const prevUserBalance = await l1Weth.balanceOf(accounts[0].address) await l2Weth.approve(l2TestBridge.address, tokenAmount) - await processL2ToL1Tx(await l2TestBridge.functions[ - 'outboundTransfer(address,address,uint256,bytes)' - ](l1Weth.address, accounts[0].address, tokenAmount, '0x'), inboxMock) - // await l2TestBridge.triggerTxToL1() + await processL2ToL1Tx( + await l2TestBridge.functions[ + 'outboundTransfer(address,address,uint256,bytes)' + ](l1Weth.address, accounts[0].address, tokenAmount, '0x'), + inboxMock + ) const postUserBalance = await l1Weth.balanceOf(accounts[0].address) @@ -263,11 +257,6 @@ describe('Bridge peripherals end-to-end weth gateway', () => { }) it('should withdraw tokens if no token is deployed', async function () { - const ZERO_ADDR = '0x0000000000000000000000000000000000000000' - // set L2 weth to address zero to test if force withdraw is triggered when - // no contract is deployed - // await l2TestBridge.setL2WethAddress(ZERO_ADDR) - // send escrowed tokens to bridge const tokenAmount = 100 await l1Weth.deposit({ value: tokenAmount }) @@ -293,12 +282,15 @@ describe('Bridge peripherals end-to-end weth gateway', () => { data, { value: maxSubmissionCost + maxGas * gasPrice } ) + const original_code = await accounts[0].provider?.getCode(l2Weth.address) + // Set l2Weth to invalid code to trigger force withdraw + await network.provider.send('hardhat_setCode', [l2Weth.address, '0x00']) + await processL2ToL1Tx((await processL1ToL2Tx(tx))[0], inboxMock) + // Revert previous setCode await network.provider.send('hardhat_setCode', [ - l2Weth.address, - '0x69', + await l2TestBridge.calculateL2TokenAddress(l2Weth.address), + original_code, ]) - await processL2ToL1Tx((await processL1ToL2Tx(tx))[0], inboxMock) - // await l2TestBridge.triggerTxToL1() const postUserBalance = await l1Weth.balanceOf(accounts[0].address) const postAllowance = await l1Weth.allowance( @@ -317,7 +309,5 @@ describe('Bridge peripherals end-to-end weth gateway', () => { postAllowance.toNumber(), 'Tokens not spent in allowance' ) - // unset the custom l2 address as to not affect other tests - // await l2TestBridge.setL2WethAddress(l2Weth.address) }) }) From 2e8c28c81866d8cab0eb3b4ab11cc8ac964686f1 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 11 May 2022 17:59:05 +0800 Subject: [PATCH 038/128] docs: add comments to testhelper --- packages/arb-bridge-peripherals/test/testhelper.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/arb-bridge-peripherals/test/testhelper.ts b/packages/arb-bridge-peripherals/test/testhelper.ts index cb42c4441d..8323344563 100644 --- a/packages/arb-bridge-peripherals/test/testhelper.ts +++ b/packages/arb-bridge-peripherals/test/testhelper.ts @@ -22,7 +22,6 @@ import { L1ArbitrumMessenger__factory, L2ArbitrumMessenger__factory, } from '../build/types' -import { TxToL1Event } from '../build/types/L2ArbitrumMessenger' export const processL1ToL2Tx = async ( tx: Promise | ContractTransaction @@ -48,6 +47,7 @@ export const processL1ToL2Tx = async ( .padStart(40, '0') return network.provider .request({ + // Fund fromAliased to send transaction method: 'hardhat_setBalance', params: [fromAliased, '0xffffffffffffffffffff'], }) @@ -85,6 +85,7 @@ export const processL2ToL1Tx = async ( const from = log.address return network.provider .request({ + // Fund inboxMock to send transaction method: 'hardhat_setBalance', params: [inboxMock.address, '0xffffffffffffffffffff'], }) From c6500277983b39af0fabf7fe578bc955ab567ff0 Mon Sep 17 00:00:00 2001 From: fredlacs <32464905+fredlacs@users.noreply.github.com> Date: Wed, 11 May 2022 14:29:38 +0100 Subject: [PATCH 039/128] Refactor to rely on events emitted by mock instead of bridge contracts --- .../contracts/tokenbridge/test/ArbSysMock.sol | 14 ++++++-- .../contracts/tokenbridge/test/InboxMock.sol | 14 ++++---- .../arb-bridge-peripherals/test/testhelper.ts | 34 ++++++++----------- 3 files changed, 35 insertions(+), 27 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/ArbSysMock.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/ArbSysMock.sol index 9e30d274e2..f8721f9110 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/ArbSysMock.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/ArbSysMock.sol @@ -1,7 +1,17 @@ pragma solidity ^0.6.11; contract ArbSysMock { - function sendTxToL1(address destination, bytes calldata calldataForL1) external payable returns(uint){ - return 0; + event ArbSysL2ToL1Tx(address from, address to, uint256 value, bytes data); + uint256 counter; + + function sendTxToL1(address destination, bytes calldata calldataForL1) + external + payable + returns (uint256 exitNum) + { + exitNum = counter; + counter = exitNum + 1; + emit ArbSysL2ToL1Tx(msg.sender, destination, msg.value, calldataForL1); + return exitNum; } } diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/InboxMock.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/InboxMock.sol index 2cd451bdc4..fe6da75fb1 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/InboxMock.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/InboxMock.sol @@ -26,20 +26,22 @@ contract InboxMock { address l2ToL1SenderMock = address(0); event TicketData(uint256 maxSubmissionCost); - event RefundAddresses(address excessFeeRefundAddress,address callValueRefundAddress); + event RefundAddresses(address excessFeeRefundAddress, address callValueRefundAddress); + event InboxRetryableTicket(address from, address to, uint256 value, uint256 maxGas, bytes data); function createRetryableTicket( - address, /* destAddr */ - uint256, /* l2CallValue */ + address destAddr, + uint256 l2CallValue, uint256 maxSubmissionCost, address excessFeeRefundAddress, address callValueRefundAddress, - uint256, /* maxGas */ + uint256 maxGas, uint256, /* gasPriceBid */ - bytes calldata /* data */ + bytes calldata data ) external payable returns (uint256) { emit TicketData(maxSubmissionCost); - emit RefundAddresses(excessFeeRefundAddress,callValueRefundAddress); + emit RefundAddresses(excessFeeRefundAddress, callValueRefundAddress); + emit InboxRetryableTicket(msg.sender, destAddr, l2CallValue, maxGas, data); return 0; } diff --git a/packages/arb-bridge-peripherals/test/testhelper.ts b/packages/arb-bridge-peripherals/test/testhelper.ts index 8323344563..883a88b6cf 100644 --- a/packages/arb-bridge-peripherals/test/testhelper.ts +++ b/packages/arb-bridge-peripherals/test/testhelper.ts @@ -19,24 +19,25 @@ import { ethers, network } from 'hardhat' import { ContractTransaction } from 'ethers' import { InboxMock, - L1ArbitrumMessenger__factory, - L2ArbitrumMessenger__factory, + InboxMock__factory, + ArbSysMock__factory, } from '../build/types' export const processL1ToL2Tx = async ( tx: Promise | ContractTransaction ) => { const receipt = await (await tx).wait() - const iface = L1ArbitrumMessenger__factory.createInterface() + const iface = InboxMock__factory.createInterface() const logs = receipt.logs.filter( - log => log.topics[0] === iface.getEventTopic('TxToL2') + log => log.topics[0] === iface.getEventTopic('InboxRetryableTicket') ) if (logs.length === 0) throw new Error('No L1 to L2 txs') const l1ToL2Logs = logs.map(log => { const event = iface.parseLog(log) - const to = event.args!._to - const data = event.args!._data - const from = log.address + const to = event.args.to + const data = event.args.data + const from = event.args.from + const value = event.args.value const fromAliased = '0x' + BigInt.asUintN( @@ -73,29 +74,23 @@ export const processL2ToL1Tx = async ( inboxMock: InboxMock ) => { const receipt = await (await tx).wait() - const iface = L2ArbitrumMessenger__factory.createInterface() + const iface = ArbSysMock__factory.createInterface() const logs = receipt.logs.filter( - log => log.topics[0] === iface.getEventTopic('TxToL1') + log => log.topics[0] === iface.getEventTopic('ArbSysL2ToL1Tx') ) if (logs.length === 0) throw new Error('No L2 to L1 txs') const l2ToL1Logs = logs.map(log => { const event = iface.parseLog(log) - const to = event.args._to - const data = event.args._data - const from = log.address + const to = event.args.to + const data = event.args.data + const from = event.args.from + const value = event.args.value return network.provider .request({ // Fund inboxMock to send transaction method: 'hardhat_setBalance', params: [inboxMock.address, '0xffffffffffffffffffff'], }) - .then(() => - // Also fund to address (which can be wethgateway) - network.provider.request({ - method: 'hardhat_setBalance', - params: [to, '0xffffffffffffffffffff'], - }) - ) .then(() => network.provider.request({ method: 'hardhat_impersonateAccount', @@ -108,6 +103,7 @@ export const processL2ToL1Tx = async ( signer.sendTransaction({ to: to, data: data, + value: value, }) ) }) From ebcc7669d04ec6e59a1178e29185be06e720897e Mon Sep 17 00:00:00 2001 From: fredlacs <32464905+fredlacs@users.noreply.github.com> Date: Wed, 11 May 2022 14:30:19 +0100 Subject: [PATCH 040/128] Add in missing value field to tx --- packages/arb-bridge-peripherals/test/testhelper.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/arb-bridge-peripherals/test/testhelper.ts b/packages/arb-bridge-peripherals/test/testhelper.ts index 883a88b6cf..ecda7309a4 100644 --- a/packages/arb-bridge-peripherals/test/testhelper.ts +++ b/packages/arb-bridge-peripherals/test/testhelper.ts @@ -63,6 +63,7 @@ export const processL1ToL2Tx = async ( signer.sendTransaction({ to: to, data: data, + value: value, }) ) }) From 5243f0595d49d03c22f351d58692c3199b0a3378 Mon Sep 17 00:00:00 2001 From: fredlacs <32464905+fredlacs@users.noreply.github.com> Date: Wed, 11 May 2022 14:38:13 +0100 Subject: [PATCH 041/128] Remove unneeded test setup in contracts --- .../arbitrum/L2ArbitrumMessenger.sol | 2 +- .../arbitrum/gateway/L2ArbitrumGateway.sol | 6 +- .../ethereum/L1ArbitrumMessenger.sol | 26 +- .../tokenbridge/test/GatewayTest.sol | 390 ------------------ 4 files changed, 23 insertions(+), 401 deletions(-) delete mode 100644 packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/L2ArbitrumMessenger.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/L2ArbitrumMessenger.sol index 95217c0f0d..fed9965c5a 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/L2ArbitrumMessenger.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/L2ArbitrumMessenger.sol @@ -32,7 +32,7 @@ abstract contract L2ArbitrumMessenger { address _from, address _to, bytes memory _data - ) internal virtual returns (uint256) { + ) internal returns (uint256) { uint256 _id = ArbSys(ARB_SYS_ADDRESS).sendTxToL1{ value: _l1CallValue }(_to, _data); emit TxToL1(_from, _to, _id, _data); return _id; diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol index 7fa9b1cea7..680007bc6f 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol @@ -119,7 +119,7 @@ abstract contract L2ArbitrumGateway is L2ArbitrumMessenger, TokenGateway { address _to, uint256 _amount, bytes calldata _data - ) public payable virtual returns (bytes memory) { + ) public payable returns (bytes memory) { return outboundTransfer(_l1Token, _to, _amount, 0, 0, _data); } @@ -131,7 +131,7 @@ abstract contract L2ArbitrumGateway is L2ArbitrumMessenger, TokenGateway { uint256, /* _maxGas */ uint256, /* _gasPriceBid */ bytes calldata _data - ) public payable virtual override returns (bytes memory res) { + ) public payable override returns (bytes memory res) { return outboundTransfer(_l1Token, _to, _amount, 0, 0, _data); } @@ -149,7 +149,7 @@ abstract contract L2ArbitrumGateway is L2ArbitrumMessenger, TokenGateway { uint256, /* _maxGas */ uint256, /* _gasPriceBid */ bytes calldata _data - ) public payable virtual override returns (bytes memory res) { + ) public payable override returns (bytes memory res) { // This function is set as public and virtual so that subclasses can override // it and add custom validation for callers (ie only whitelisted users) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/L1ArbitrumMessenger.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/L1ArbitrumMessenger.sol index 07fb156c78..7c846f76d8 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/L1ArbitrumMessenger.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/L1ArbitrumMessenger.sol @@ -41,7 +41,7 @@ abstract contract L1ArbitrumMessenger { uint256 _l2CallValue, L2GasParams memory _l2GasParams, bytes memory _data - ) internal virtual returns (uint256) { + ) internal returns (uint256) { // alternative function entry point when struggling with the stack size return sendTxToL2CustomRefund( @@ -66,7 +66,7 @@ abstract contract L1ArbitrumMessenger { uint256 _l2CallValue, L2GasParams memory _l2GasParams, bytes memory _data - ) internal virtual returns (uint256) { + ) internal returns (uint256) { // alternative function entry point when struggling with the stack size return sendTxToL2( @@ -93,7 +93,7 @@ abstract contract L1ArbitrumMessenger { uint256 _maxGas, uint256 _gasPriceBid, bytes memory _data - ) internal virtual returns (uint256) { + ) internal returns (uint256) { uint256 seqNum = IInbox(_inbox).createRetryableTicket{ value: _l1CallValue }( _to, _l2CallValue, @@ -118,16 +118,28 @@ abstract contract L1ArbitrumMessenger { uint256 _maxGas, uint256 _gasPriceBid, bytes memory _data - ) internal virtual returns (uint256) { - return sendTxToL2CustomRefund(_inbox, _to, _user, _user, _l1CallValue, _l2CallValue, _maxSubmissionCost, _maxGas, _gasPriceBid,_data); + ) internal returns (uint256) { + return + sendTxToL2CustomRefund( + _inbox, + _to, + _user, + _user, + _l1CallValue, + _l2CallValue, + _maxSubmissionCost, + _maxGas, + _gasPriceBid, + _data + ); } - function getBridge(address _inbox) internal view virtual returns (IBridge) { + function getBridge(address _inbox) internal view returns (IBridge) { return IInbox(_inbox).bridge(); } /// @dev the l2ToL1Sender behaves as the tx.origin, the msg.sender should be validated to protect against reentrancies - function getL2ToL1Sender(address _inbox) internal view virtual returns (address) { + function getL2ToL1Sender(address _inbox) internal view returns (address) { IOutbox outbox = IOutbox(getBridge(_inbox).activeOutbox()); address l2ToL1Sender = outbox.l2ToL1Sender(); diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol deleted file mode 100644 index 9bcf44d6a9..0000000000 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/GatewayTest.sol +++ /dev/null @@ -1,390 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 - -/* - * Copyright 2020, Offchain Labs, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -pragma solidity ^0.6.11; - -import "../ethereum/gateway/L1GatewayRouter.sol"; -import "../ethereum/gateway/L1WethGateway.sol"; -import "../ethereum/gateway/L1CustomGateway.sol"; -import "../ethereum/gateway/L1ERC20Gateway.sol"; -import "../ethereum/L1ArbitrumMessenger.sol"; - -import "../arbitrum/gateway/L2GatewayRouter.sol"; -import "../arbitrum/gateway/L2WethGateway.sol"; -import "../arbitrum/gateway/L2CustomGateway.sol"; -import "../arbitrum/gateway/L2ERC20Gateway.sol"; -import "../arbitrum/L2ArbitrumMessenger.sol"; -import "arb-bridge-eth/contracts/libraries/AddressAliasHelper.sol"; - -contract AddressMappingTest is L2ArbitrumMessenger { - function getL1AddressTest(address sender) external pure returns (address l1Address) { - return AddressAliasHelper.undoL1ToL2Alias(sender); - } -} - -// these contracts are used to "flatten" out communication between contracts -// this way the token bridge can be tested fully in the base layer -// assembly code from OZ's proxy is used to surface revert messages correctly -abstract contract L1ArbitrumTestMessenger is L1ArbitrumMessenger { - bool shouldUseInbox; - - function setInboxUse(bool _shouldUseInbox) public { - shouldUseInbox = _shouldUseInbox; - } - - function sendTxToL2CustomRefund( - address, /* _inbox */ - address _to, - address, /*_refundTo */ - address, /* _user */ - uint256, /* _l1CallValue */ - uint256 _l2CallValue, - uint256, /* _maxSubmissionCost */ - uint256, /* _maxGas */ - uint256, /* _gasPriceBid */ - bytes memory _data - ) internal virtual override returns (uint256) { - (bool success, bytes memory retdata) = _to.call{ value: _l2CallValue }(_data); - assembly { - switch success - case 0 { - revert(add(retdata, 32), mload(retdata)) - } - } - return 1337; - } - - function getBridge(address _inboxMock) internal view virtual override returns (IBridge) { - if (shouldUseInbox) { - // the inbox mock covers the role of bridge/inbox/outbox - return IBridge(_inboxMock); - } else { - return IBridge(msg.sender); - } - } - - function getL2ToL1Sender(address _inbox) internal view virtual override returns (address) { - if (shouldUseInbox) { - return super.getL2ToL1Sender(_inbox); - } else { - return msg.sender; - } - } -} - -abstract contract L2ArbitrumTestMessenger is L2ArbitrumMessenger { - struct PendingCall { - address _to; - uint256 _l1CallValue; - bytes _data; - } - PendingCall[] pending; - - function sendTxToL1( - uint256 _l1CallValue, - address, /* _from */ - address _to, - bytes memory _data - ) internal virtual override returns (uint256) { - pending.push(PendingCall({ _to: _to, _l1CallValue: _l1CallValue, _data: _data })); - } - - function triggerTxToL1() external { - PendingCall storage currCall = pending[pending.length - 1]; - - address _to = currCall._to; - uint256 _l1CallValue = currCall._l1CallValue; - bytes memory _data = currCall._data; - - pending.pop(); - - (bool success, bytes memory retdata) = _to.call{ value: _l1CallValue }(_data); - assembly { - switch success - case 0 { - revert(add(retdata, 32), mload(retdata)) - } - } - } -} - -contract L1GatewayTester is L1ArbitrumTestMessenger, L1ERC20Gateway { - function sendTxToL2CustomRefund( - address _inbox, - address _to, - address _refundTo, - address _user, - uint256 _l1CallValue, - uint256 _l2CallValue, - uint256 _maxSubmissionCost, - uint256 _maxGas, - uint256 _gasPriceBid, - bytes memory _data - ) internal virtual override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) returns (uint256) { - return - L1ArbitrumTestMessenger.sendTxToL2CustomRefund( - _inbox, - _to, - _refundTo, - _user, - _l1CallValue, - _l2CallValue, - _maxSubmissionCost, - _maxGas, - _gasPriceBid, - _data - ); - } - - function getL2ToL1Sender(address _inbox) - internal - view - virtual - override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) - returns (address) - { - return L1ArbitrumTestMessenger.getL2ToL1Sender(_inbox); - } - - function getBridge(address _inbox) - internal - view - virtual - override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) - returns (IBridge) - { - return L1ArbitrumTestMessenger.getBridge(_inbox); - } -} - -contract L2GatewayTester is L2ArbitrumTestMessenger, L2ERC20Gateway { - function sendTxToL1( - uint256 _l1CallValue, - address _from, - address _to, - bytes memory _data - ) internal virtual override(L2ArbitrumMessenger, L2ArbitrumTestMessenger) returns (uint256) { - return L2ArbitrumTestMessenger.sendTxToL1(_l1CallValue, _from, _to, _data); - } - - address public stubAddressOracleReturn; - - function setStubAddressOracleReturn(address _stubValue) external { - stubAddressOracleReturn = _stubValue; - } - - function calculateL2TokenAddress(address l1ERC20) - public - view - virtual - override - returns (address) - { - // only return stub address if it is set - // we use this to test the _withdraws initiated by the bridge - // in case something goes wrong - if (stubAddressOracleReturn != address(0)) { - return stubAddressOracleReturn; - } - return super.calculateL2TokenAddress(l1ERC20); - } -} - -contract L1CustomGatewayTester is L1ArbitrumTestMessenger, L1CustomGateway { - function sendTxToL2CustomRefund( - address _inbox, - address _to, - address _refundTo, - address _user, - uint256 _l1CallValue, - uint256 _l2CallValue, - uint256 _maxSubmissionCost, - uint256 _maxGas, - uint256 _gasPriceBid, - bytes memory _data - ) internal virtual override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) returns (uint256) { - return - L1ArbitrumTestMessenger.sendTxToL2CustomRefund( - _inbox, - _to, - _refundTo, - _user, - _l1CallValue, - _l2CallValue, - _maxSubmissionCost, - _maxGas, - _gasPriceBid, - _data - ); - } - - function getL2ToL1Sender(address _inbox) - internal - view - virtual - override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) - returns (address) - { - return L1ArbitrumTestMessenger.getL2ToL1Sender(_inbox); - } - - function getBridge(address _inbox) - internal - view - virtual - override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) - returns (IBridge) - { - return L1ArbitrumTestMessenger.getBridge(_inbox); - } -} - -contract L2CustomGatewayTester is L2ArbitrumTestMessenger, L2CustomGateway { - function sendTxToL1( - uint256 _l1CallValue, - address _from, - address _to, - bytes memory _data - ) internal virtual override(L2ArbitrumMessenger, L2ArbitrumTestMessenger) returns (uint256) { - return L2ArbitrumTestMessenger.sendTxToL1(_l1CallValue, _from, _to, _data); - } -} - -contract L1WethGatewayTester is L1ArbitrumTestMessenger, L1WethGateway { - function sendTxToL2CustomRefund( - address _inbox, - address _to, - address _refundTo, - address _user, - uint256 _l1CallValue, - uint256 _l2CallValue, - uint256 _maxSubmissionCost, - uint256 _maxGas, - uint256 _gasPriceBid, - bytes memory _data - ) internal virtual override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) returns (uint256) { - return - L1ArbitrumTestMessenger.sendTxToL2CustomRefund( - _inbox, - _to, - _refundTo, - _user, - _l1CallValue, - _l2CallValue, - _maxSubmissionCost, - _maxGas, - _gasPriceBid, - _data - ); - } - - function getL2ToL1Sender(address _inbox) - internal - view - virtual - override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) - returns (address) - { - return L1ArbitrumTestMessenger.getL2ToL1Sender(_inbox); - } - - function getBridge(address _inbox) - internal - view - virtual - override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) - returns (IBridge) - { - return L1ArbitrumTestMessenger.getBridge(_inbox); - } -} - -contract L2WethGatewayTester is L2ArbitrumTestMessenger, L2WethGateway { - function sendTxToL1( - uint256 _l1CallValue, - address _from, - address _to, - bytes memory _data - ) internal virtual override(L2ArbitrumMessenger, L2ArbitrumTestMessenger) returns (uint256) { - return L2ArbitrumTestMessenger.sendTxToL1(_l1CallValue, _from, _to, _data); - } - - function setL2WethAddress(address _l2Weth) external { - L2WethGateway.l2Weth = _l2Weth; - } -} - -contract L1GatewayRouterTester is L1ArbitrumTestMessenger, L1GatewayRouter { - function sendTxToL2CustomRefund( - address _inbox, - address _to, - address _refundTo, - address _user, - uint256 _l1CallValue, - uint256 _l2CallValue, - uint256 _maxSubmissionCost, - uint256 _maxGas, - uint256 _gasPriceBid, - bytes memory _data - ) internal virtual override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) returns (uint256) { - return - L1ArbitrumTestMessenger.sendTxToL2CustomRefund( - _inbox, - _to, - _refundTo, - _user, - _l1CallValue, - _l2CallValue, - _maxSubmissionCost, - _maxGas, - _gasPriceBid, - _data - ); - } - - function getL2ToL1Sender(address _inbox) - internal - view - virtual - override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) - returns (address) - { - return L1ArbitrumTestMessenger.getL2ToL1Sender(_inbox); - } - - function getBridge(address _inbox) - internal - view - virtual - override(L1ArbitrumMessenger, L1ArbitrumTestMessenger) - returns (IBridge) - { - return L1ArbitrumTestMessenger.getBridge(_inbox); - } -} - -contract L2GatewayRouterTester is L2ArbitrumTestMessenger, L2GatewayRouter { - function sendTxToL1( - uint256 _l1CallValue, - address _from, - address _to, - bytes memory _data - ) internal virtual override(L2ArbitrumMessenger, L2ArbitrumTestMessenger) returns (uint256) { - return L2ArbitrumTestMessenger.sendTxToL1(_l1CallValue, _from, _to, _data); - } -} From 837357b40f2b7da39a8593f172713b9f1f8d1691 Mon Sep 17 00:00:00 2001 From: fredlacs <32464905+fredlacs@users.noreply.github.com> Date: Wed, 11 May 2022 14:46:15 +0100 Subject: [PATCH 042/128] Remove unnecessary code --- .../arbitrum/gateway/L2ArbitrumGateway.sol | 2 +- .../ethereum/gateway/L1ArbitrumGateway.sol | 24 +++++++------ .../libraries/gateway/ITokenGateway.sol | 8 +++++ .../libraries/gateway/TokenGateway.sol | 35 ------------------- 4 files changed, 22 insertions(+), 47 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol index 680007bc6f..d1bc099311 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol @@ -103,7 +103,7 @@ abstract contract L2ArbitrumGateway is L2ArbitrumMessenger, TokenGateway { bytes memory _data ) public view override returns (bytes memory outboundCalldata) { outboundCalldata = abi.encodeWithSelector( - TokenGateway.finalizeInboundTransfer.selector, + ITokenGateway.finalizeInboundTransfer.selector, _token, _from, _to, diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol index adaec26761..7ab2b7aff9 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol @@ -187,7 +187,16 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { uint256 _maxSubmissionCost, bytes memory _outboundCalldata ) internal returns (uint256) { - return createOutboundTxCustomRefund(_from, _from, _tokenAmount, _maxGas, _gasPriceBid, _maxSubmissionCost, _outboundCalldata); + return + createOutboundTxCustomRefund( + _from, + _from, + _tokenAmount, + _maxGas, + _gasPriceBid, + _maxSubmissionCost, + _outboundCalldata + ); } /** @@ -201,15 +210,8 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { uint256 _gasPriceBid, bytes calldata _data ) public payable override returns (bytes memory res) { - return outboundTransferCustomRefund( - _l1Token, - _to, - _to, - _amount, - _maxGas, - _gasPriceBid, - _data - ); + return + outboundTransferCustomRefund(_l1Token, _to, _to, _amount, _maxGas, _gasPriceBid, _data); } /** @@ -303,7 +305,7 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { bytes memory emptyBytes = ""; outboundCalldata = abi.encodeWithSelector( - TokenGateway.finalizeInboundTransfer.selector, + ITokenGateway.finalizeInboundTransfer.selector, _l1Token, _from, _to, diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol index 4e2ec1cb9c..7781f82931 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol @@ -74,4 +74,12 @@ interface ITokenGateway { * @return L2 address of a bridged ERC20 token */ function calculateL2TokenAddress(address l1ERC20) external view returns (address); + + function getOutboundCalldata( + address _token, + address _from, + address _to, + uint256 _amount, + bytes memory _data + ) external view returns (bytes memory); } diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol index 14d461b11f..db5e1ae42f 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol @@ -61,39 +61,4 @@ abstract contract TokenGateway is ITokenGateway { virtual override returns (address); - - function outboundTransfer( - address _token, - address _to, - uint256 _amount, - uint256 _maxGas, - uint256 _gasPriceBid, - bytes calldata _data - ) external payable virtual override returns (bytes memory); - - function outboundTransferCustomRefund( - address _token, - address _refundTo, - address _to, - uint256 _amount, - uint256 _maxGas, - uint256 _gasPriceBid, - bytes calldata _data - ) external payable virtual override returns (bytes memory); - - function getOutboundCalldata( - address _token, - address _from, - address _to, - uint256 _amount, - bytes memory _data - ) public view virtual returns (bytes memory); - - function finalizeInboundTransfer( - address _token, - address _from, - address _to, - uint256 _amount, - bytes calldata _data - ) external payable virtual override; } From b164a75dc2640b20b61eb3d613faa9013ed0b198 Mon Sep 17 00:00:00 2001 From: fredlacs <32464905+fredlacs@users.noreply.github.com> Date: Wed, 11 May 2022 14:55:11 +0100 Subject: [PATCH 043/128] Simplify initialization of gateways --- .../arbitrum/gateway/L2ArbitrumGateway.sol | 2 +- .../ethereum/gateway/L1ArbitrumExtendedGateway.sol | 8 -------- .../ethereum/gateway/L1ArbitrumGateway.sol | 2 +- .../ethereum/gateway/L1CustomGateway.sol | 13 +++++++++++-- .../tokenbridge/ethereum/gateway/L1ERC20Gateway.sol | 13 +++++++++++-- .../tokenbridge/ethereum/gateway/L1WethGateway.sol | 2 +- 6 files changed, 25 insertions(+), 15 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol index d1bc099311..1392f13083 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol @@ -69,7 +69,7 @@ abstract contract L2ArbitrumGateway is L2ArbitrumMessenger, TokenGateway { // this has no other logic since the current upgrade doesn't require this logic } - function _initialize(address _l1Counterpart, address _router) internal virtual override { + function _initialize(address _l1Counterpart, address _router) internal override { TokenGateway._initialize(_l1Counterpart, _router); // L1 gateway must have a router require(_router != address(0), "BAD_ROUTER"); diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumExtendedGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumExtendedGateway.sol index a82577d4e7..9ba0414190 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumExtendedGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumExtendedGateway.sol @@ -39,14 +39,6 @@ abstract contract L1ArbitrumExtendedGateway is L1ArbitrumGateway { mapping(bytes32 => ExitData) public redirectedExits; - function _initialize( - address _l2Counterpart, - address _router, - address _inbox - ) internal virtual override { - L1ArbitrumGateway._initialize(_l2Counterpart, _router, _inbox); - } - event WithdrawRedirected( address indexed from, address indexed to, diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol index 7ab2b7aff9..651463e44e 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol @@ -82,7 +82,7 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { address _l2Counterpart, address _router, address _inbox - ) internal virtual { + ) internal { TokenGateway._initialize(_l2Counterpart, _router); // L1 gateway must have a router require(_router != address(0), "BAD_ROUTER"); diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol index a0e4129a23..250aa55c26 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol @@ -66,7 +66,16 @@ contract L1CustomGateway is L1ArbitrumExtendedGateway, ICustomGateway { uint256 _gasPriceBid, bytes calldata _data ) public payable override nonReentrant returns (bytes memory res) { - return super.outboundTransferCustomRefund(_l1Token, _refundTo, _to, _amount, _maxGas, _gasPriceBid, _data); + return + super.outboundTransferCustomRefund( + _l1Token, + _refundTo, + _to, + _amount, + _maxGas, + _gasPriceBid, + _data + ); } function finalizeInboundTransfer( @@ -86,7 +95,7 @@ contract L1CustomGateway is L1ArbitrumExtendedGateway, ICustomGateway { address _inbox, address _owner ) public { - L1ArbitrumExtendedGateway._initialize(_l1Counterpart, _l1Router, _inbox); + L1ArbitrumGateway._initialize(_l1Counterpart, _l1Router, _inbox); owner = _owner; // disable whitelist by default whitelist = address(0); diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ERC20Gateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ERC20Gateway.sol index 7afd345883..d1cf72c29f 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ERC20Gateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ERC20Gateway.sol @@ -63,7 +63,16 @@ contract L1ERC20Gateway is L1ArbitrumExtendedGateway { uint256 _gasPriceBid, bytes calldata _data ) public payable override nonReentrant returns (bytes memory res) { - return super.outboundTransferCustomRefund(_l1Token, _refundTo, _to, _amount, _maxGas, _gasPriceBid, _data); + return + super.outboundTransferCustomRefund( + _l1Token, + _refundTo, + _to, + _amount, + _maxGas, + _gasPriceBid, + _data + ); } function finalizeInboundTransfer( @@ -84,7 +93,7 @@ contract L1ERC20Gateway is L1ArbitrumExtendedGateway { bytes32 _cloneableProxyHash, address _l2BeaconProxyFactory ) public { - L1ArbitrumExtendedGateway._initialize(_l2Counterpart, _router, _inbox); + L1ArbitrumGateway._initialize(_l2Counterpart, _router, _inbox); require(_cloneableProxyHash != bytes32(0), "INVALID_PROXYHASH"); require(_l2BeaconProxyFactory != address(0), "INVALID_BEACON"); cloneableProxyHash = _cloneableProxyHash; diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1WethGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1WethGateway.sol index b5681e22f0..c0473df609 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1WethGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1WethGateway.sol @@ -38,7 +38,7 @@ contract L1WethGateway is L1ArbitrumExtendedGateway { address _l1Weth, address _l2Weth ) public { - L1ArbitrumExtendedGateway._initialize(_l1Counterpart, _l1Router, _inbox); + L1ArbitrumGateway._initialize(_l1Counterpart, _l1Router, _inbox); require(_l1Weth != address(0), "INVALID_L1WETH"); require(_l2Weth != address(0), "INVALID_L2WETH"); l1Weth = _l1Weth; From 19001a489fcd5b6077b810b870fca2c317eb71df Mon Sep 17 00:00:00 2001 From: fredlacs <32464905+fredlacs@users.noreply.github.com> Date: Wed, 11 May 2022 19:52:26 +0100 Subject: [PATCH 044/128] Fix unit tests --- .../tokenbridge/test/AddressMappingTest.sol | 28 ++++++++++ packages/arb-bridge-peripherals/package.json | 2 +- .../test/canonicalBridge.l1.ts | 31 ++++++----- .../test/canonicalBridge.l2.ts | 26 +++++++--- .../arb-bridge-peripherals/test/testhelper.ts | 51 +++++++++++-------- .../test/wethBridge.l1.ts | 24 +++++---- .../test/wethBridge.l2.ts | 38 +++++++++----- 7 files changed, 134 insertions(+), 66 deletions(-) create mode 100644 packages/arb-bridge-peripherals/contracts/tokenbridge/test/AddressMappingTest.sol diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/AddressMappingTest.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/AddressMappingTest.sol new file mode 100644 index 0000000000..6991aca9e9 --- /dev/null +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/AddressMappingTest.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: Apache-2.0 + +/* + * Copyright 2020, Offchain Labs, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +pragma solidity ^0.6.11; + +import "../arbitrum/L2ArbitrumMessenger.sol"; +import "arb-bridge-eth/contracts/libraries/AddressAliasHelper.sol"; + +contract AddressMappingTest is L2ArbitrumMessenger { + function getL1AddressTest(address sender) external pure returns (address l1Address) { + return AddressAliasHelper.undoL1ToL2Alias(sender); + } +} diff --git a/packages/arb-bridge-peripherals/package.json b/packages/arb-bridge-peripherals/package.json index 0627c9a0b6..d830acb249 100644 --- a/packages/arb-bridge-peripherals/package.json +++ b/packages/arb-bridge-peripherals/package.json @@ -6,7 +6,7 @@ "build": "./scripts/build.bash", "test:e2e": "hardhat test test/*.e2e.ts", "test:l1": "hardhat test test/*.l1.ts", - "test:l2": "hardhat test test/*.l2.ts --network arbitrum", + "test:l2": "hardhat test test/*.l2.ts", "typechain": "hardhat typechain", "deploy:tokenbridge": "hardhat run scripts/deploy_token_bridge_l1.ts --network mainnet", "gen:uml": "sol2uml ./contracts/tokenbridge/arbitrum,./contracts/tokenbridge/ethereum,./contracts/tokenbridge/libraries -o ./gatewayUML.svg", diff --git a/packages/arb-bridge-peripherals/test/canonicalBridge.l1.ts b/packages/arb-bridge-peripherals/test/canonicalBridge.l1.ts index 48884dfec3..ad0cea336a 100644 --- a/packages/arb-bridge-peripherals/test/canonicalBridge.l1.ts +++ b/packages/arb-bridge-peripherals/test/canonicalBridge.l1.ts @@ -18,14 +18,19 @@ import { ethers } from 'hardhat' import { assert, expect } from 'chai' import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' -import { Contract, ContractFactory } from 'ethers' +import { + InboxMock, + L1ERC20Gateway, + L1ERC20Gateway__factory, +} from '../build/types' +import { impersonateAccount } from './testhelper' describe('Bridge peripherals layer 1', () => { let accounts: SignerWithAddress[] - let TestBridge: ContractFactory - let testBridge: Contract + let TestBridge: L1ERC20Gateway__factory + let testBridge: L1ERC20Gateway - let inbox: Contract + let inbox: InboxMock const maxSubmissionCost = 1 const maxGas = 1000000000 const gasPrice = 0 @@ -37,7 +42,7 @@ describe('Bridge peripherals layer 1', () => { accounts = await ethers.getSigners() l2Address = accounts[0].address - TestBridge = await ethers.getContractFactory('L1GatewayTester') + TestBridge = await ethers.getContractFactory('L1ERC20Gateway') testBridge = await TestBridge.deploy() const Inbox = await ethers.getContractFactory('InboxMock') @@ -190,13 +195,15 @@ describe('Bridge peripherals layer 1', () => { [exitNum, '0x'] ) - await testBridge.finalizeInboundTransfer( - token.address, - accounts[0].address, - accounts[0].address, - tokenAmount, - withdrawData - ) + await testBridge + .connect(await impersonateAccount(inbox.address)) + .finalizeInboundTransfer( + token.address, + accounts[0].address, + accounts[0].address, + tokenAmount, + withdrawData + ) const postUserBalance = await token.balanceOf(accounts[0].address) diff --git a/packages/arb-bridge-peripherals/test/canonicalBridge.l2.ts b/packages/arb-bridge-peripherals/test/canonicalBridge.l2.ts index 8bd157f7c9..3808552e61 100644 --- a/packages/arb-bridge-peripherals/test/canonicalBridge.l2.ts +++ b/packages/arb-bridge-peripherals/test/canonicalBridge.l2.ts @@ -15,10 +15,11 @@ */ /* eslint-env node, mocha */ -import { ethers } from 'hardhat' +import { ethers, network } from 'hardhat' import { assert, expect } from 'chai' import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' -import { Contract, ContractFactory } from 'ethers' +import { L2ERC20Gateway, L2ERC20Gateway__factory } from '../build/types' +import { applyAlias, impersonateAccount } from './testhelper' const encodeTokenInitData = ( name: string, @@ -37,9 +38,8 @@ const encodeTokenInitData = ( describe('Bridge peripherals layer 2', () => { let accounts: SignerWithAddress[] - let TestBridge: ContractFactory - let testBridge: Contract - let erc20Proxy: string + let TestBridge: L2ERC20Gateway__factory + let testBridge: L2ERC20Gateway before(async function () { // constructor(uint256 _gasPrice, uint256 _maxGas, address erc777Template, address erc20Template) @@ -61,12 +61,22 @@ describe('Bridge peripherals layer 2', () => { await beaconProxyFactory.initialize(beacon.address) + const ArbSysMock = await ethers.getContractFactory('ArbSysMock') + const arbsysmock = await ArbSysMock.deploy() + await network.provider.send('hardhat_setCode', [ + '0x0000000000000000000000000000000000000064', + await network.provider.send('eth_getCode', [arbsysmock.address]), + ]) + testBridge = await TestBridge.deploy() await testBridge.initialize( accounts[0].address, accounts[3].address, beaconProxyFactory.address ) + testBridge = testBridge.connect( + await impersonateAccount(applyAlias(accounts[0].address)) + ) }) it('should deploy erc20 tokens correctly', async function () { @@ -245,7 +255,7 @@ describe('Bridge peripherals layer 2', () => { const eventTopic = '0x11ff8525c5d96036231ee652c108808dee4c40728a6117830a75029298bb7de6' - const filteredEvents: Array = receipt.events.filter( + const filteredEvents: Array = receipt.logs.filter( (event: any) => event.topics[0] === eventTopic ) @@ -309,7 +319,7 @@ describe('Bridge peripherals layer 2', () => { const eventTopic = '0x11ff8525c5d96036231ee652c108808dee4c40728a6117830a75029298bb7de6' - const filteredEvents: Array = receipt.events.filter( + const filteredEvents: Array = receipt.logs.filter( (event: any) => event.topics[0] === eventTopic ) @@ -325,7 +335,7 @@ describe('Bridge peripherals layer 2', () => { it('should burn on withdraw', async function () { const l1ERC20 = '0x0000000000000003000000000000000000000001' - const sender = accounts[0].address + const sender = applyAlias(accounts[0].address) const dest = sender const amount = '10' const initializeData = encodeTokenInitData('ArbToken', 'ATKN', '18') diff --git a/packages/arb-bridge-peripherals/test/testhelper.ts b/packages/arb-bridge-peripherals/test/testhelper.ts index ecda7309a4..ddf2d35464 100644 --- a/packages/arb-bridge-peripherals/test/testhelper.ts +++ b/packages/arb-bridge-peripherals/test/testhelper.ts @@ -38,14 +38,8 @@ export const processL1ToL2Tx = async ( const data = event.args.data const from = event.args.from const value = event.args.value - const fromAliased = - '0x' + - BigInt.asUintN( - 160, - BigInt(from) + BigInt('0x1111000000000000000000000000000000001111') - ) - .toString(16) - .padStart(40, '0') + const fromAliased = applyAlias(from) + return network.provider .request({ // Fund fromAliased to send transaction @@ -70,6 +64,30 @@ export const processL1ToL2Tx = async ( return Promise.all(l1ToL2Logs) } +export const impersonateAccount = (address: string) => + network.provider + .request({ + // Fund inboxMock to send transaction + method: 'hardhat_setBalance', + params: [address, '0xffffffffffffffffffff'], + }) + .then(() => + network.provider.request({ + method: 'hardhat_impersonateAccount', + params: [address], + }) + ) + .then(() => ethers.getSigner(address)) + +export const applyAlias = (address: string) => + '0x' + + BigInt.asUintN( + 160, + BigInt(address) + BigInt('0x1111000000000000000000000000000000001111') + ) + .toString(16) + .padStart(40, '0') + export const processL2ToL1Tx = async ( tx: Promise | ContractTransaction, inboxMock: InboxMock @@ -86,20 +104,9 @@ export const processL2ToL1Tx = async ( const data = event.args.data const from = event.args.from const value = event.args.value - return network.provider - .request({ - // Fund inboxMock to send transaction - method: 'hardhat_setBalance', - params: [inboxMock.address, '0xffffffffffffffffffff'], - }) - .then(() => - network.provider.request({ - method: 'hardhat_impersonateAccount', - params: [inboxMock.address], - }) - ) - .then(() => inboxMock.setL2ToL1Sender(from, { gasLimit: 5000000 })) - .then(() => ethers.getSigner(inboxMock.address)) + return inboxMock + .setL2ToL1Sender(from, { gasLimit: 5000000 }) + .then(() => impersonateAccount(inboxMock.address)) .then(signer => signer.sendTransaction({ to: to, diff --git a/packages/arb-bridge-peripherals/test/wethBridge.l1.ts b/packages/arb-bridge-peripherals/test/wethBridge.l1.ts index f218980289..f5a9d4014b 100644 --- a/packages/arb-bridge-peripherals/test/wethBridge.l1.ts +++ b/packages/arb-bridge-peripherals/test/wethBridge.l1.ts @@ -18,14 +18,18 @@ import { ethers, waffle } from 'hardhat' import { assert, expect } from 'chai' import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' -import { Contract, ContractFactory } from 'ethers' +import { + InboxMock, + L1WethGateway, + L1WethGateway__factory, +} from '../build/types' describe('Bridge peripherals layer 1', () => { let accounts: SignerWithAddress[] - let TestBridge: ContractFactory - let testBridge: Contract + let TestBridge: L1WethGateway__factory + let testBridge: L1WethGateway - let inbox: Contract + let inbox: InboxMock const maxSubmissionCost = 1 const maxGas = 1000000000 const gasPrice = 0 @@ -34,7 +38,7 @@ describe('Bridge peripherals layer 1', () => { accounts = await ethers.getSigners() l2Address = accounts[1].address - TestBridge = await ethers.getContractFactory('L1WethGatewayTester') + TestBridge = await ethers.getContractFactory('L1WethGateway') const Inbox = await ethers.getContractFactory('InboxMock') inbox = await Inbox.deploy() @@ -67,8 +71,8 @@ describe('Bridge peripherals layer 1', () => { ['address', 'bytes'], [accounts[0].address, data] ) - const escrowPrevBalance = await waffle.provider.getBalance(l2Address) - await testBridge.outboundTransfer( + const escrowPrevBalance = await waffle.provider.getBalance(inbox.address) + const tx = await testBridge.outboundTransfer( weth.address, accounts[0].address, wethAmount, @@ -78,7 +82,7 @@ describe('Bridge peripherals layer 1', () => { ) const escrowedWeth = await weth.balanceOf(testBridge.address) assert.equal(escrowedWeth.toNumber(), 0, 'Weth should not be escrowed') - const escrowedETH = await waffle.provider.getBalance(l2Address) + const escrowedETH = await waffle.provider.getBalance(inbox.address) assert.equal( escrowedETH.sub(escrowPrevBalance).toNumber(), wethAmount, @@ -113,7 +117,7 @@ describe('Bridge peripherals layer 1', () => { ['address', 'bytes'], [accounts[0].address, data] ) - const escrowPrevBalance = await waffle.provider.getBalance(l2Address) + const escrowPrevBalance = await waffle.provider.getBalance(inbox.address) await testBridge.outboundTransferCustomRefund( weth.address, accounts[0].address, @@ -125,7 +129,7 @@ describe('Bridge peripherals layer 1', () => { ) const escrowedWeth = await weth.balanceOf(testBridge.address) assert.equal(escrowedWeth.toNumber(), 0, 'Weth should not be escrowed') - const escrowedETH = await waffle.provider.getBalance(l2Address) + const escrowedETH = await waffle.provider.getBalance(inbox.address) assert.equal( escrowedETH.sub(escrowPrevBalance).toNumber(), wethAmount, diff --git a/packages/arb-bridge-peripherals/test/wethBridge.l2.ts b/packages/arb-bridge-peripherals/test/wethBridge.l2.ts index 619f7a7f72..e0a3dad8a4 100644 --- a/packages/arb-bridge-peripherals/test/wethBridge.l2.ts +++ b/packages/arb-bridge-peripherals/test/wethBridge.l2.ts @@ -15,23 +15,25 @@ */ /* eslint-env node, mocha */ -import { ethers } from 'hardhat' +import { ethers, network } from 'hardhat' import { assert, expect } from 'chai' import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' import { Contract, ContractFactory } from 'ethers' +import { AeWETH, L2WethGateway, L2WethGateway__factory } from '../build/types' +import { applyAlias, impersonateAccount } from './testhelper' -describe('Bridge peripherals weth layer 2', () => { +describe.only('Bridge peripherals weth layer 2', () => { let accounts: SignerWithAddress[] - let TestBridge: ContractFactory - let testBridge: Contract + let TestBridge: L2WethGateway__factory + let testBridge: L2WethGateway const l1WethAddr = '0x0000000000000000000000000000000000004351' - let l2Weth: Contract + let l2Weth: AeWETH before(async function () { // constructor(uint256 _gasPrice, uint256 _maxGas, address erc777Template, address erc20Template) accounts = await ethers.getSigners() TestBridge = await ethers.getContractFactory('L2WethGateway') - const L2Weth = await ethers.getContractFactory('aeWETH') + const L2Weth = (await ethers.getContractFactory('aeWETH')) as any l2Weth = await L2Weth.deploy() testBridge = await TestBridge.deploy() @@ -44,16 +46,28 @@ describe('Bridge peripherals weth layer 2', () => { '0x' ) - testBridge = testBridge.attach(proxy.address) + const ArbSysMock = await ethers.getContractFactory('ArbSysMock') + const arbsysmock = await ArbSysMock.deploy() + await network.provider.send('hardhat_setCode', [ + '0x0000000000000000000000000000000000000064', + await network.provider.send('eth_getCode', [arbsysmock.address]), + ]) + + testBridge = testBridge + .attach(proxy.address) + .connect(await impersonateAccount(applyAlias(accounts[0].address))) await expect( l2Weth.initialize('WETH9', 'WETH', 18, testBridge.address, l1WethAddr) ).to.be.revertedWith('Initializable: contract is already initialized') - l2Weth = await Proxy.deploy(l2Weth.address, accounts[1].address, '0x') - l2Weth = await L2Weth.attach(l2Weth.address) + const wethProxy = await Proxy.deploy( + l2Weth.address, + accounts[1].address, + '0x' + ) + l2Weth = await L2Weth.attach(wethProxy.address) await l2Weth.initialize('WETH9', 'WETH', 18, testBridge.address, l1WethAddr) - await testBridge.initialize( accounts[0].address, // l1 counterpart accounts[3].address, // l2 router @@ -72,8 +86,6 @@ describe('Bridge peripherals weth layer 2', () => { ['0x', '0x'] ) - console.log('here') - const tx = await testBridge.finalizeInboundTransfer( l1WethAddr, sender, @@ -91,7 +103,7 @@ describe('Bridge peripherals weth layer 2', () => { }) it('should burn on withdraw', async function () { - const sender = accounts[0].address + const sender = applyAlias(accounts[0].address) const dest = sender const amount = '10' From 12fd5dbacdcd54acccc41270ac5de3c730b3b4d6 Mon Sep 17 00:00:00 2001 From: fredlacs <32464905+fredlacs@users.noreply.github.com> Date: Wed, 11 May 2022 20:14:41 +0100 Subject: [PATCH 045/128] Add compile step to ci --- .circleci/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 21bff983f4..95e189583d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -348,17 +348,17 @@ jobs: - run: name: test arb-bridge-peripherals l1 command: | - yarn test:l1 + yarn hardhat compile && yarn test:l1 working_directory: /home/user/project/packages/arb-bridge-peripherals - run: name: test arb-bridge-peripherals l2 command: | - yarn test:l2 + yarn hardhat compile && yarn test:l2 working_directory: /home/user/project/packages/arb-bridge-peripherals - run: name: test arb-bridge-peripherals e2e command: | - yarn test:e2e + yarn hardhat compile && yarn test:e2e working_directory: /home/user/project/packages/arb-bridge-peripherals - store_test_results: path: *test-path From afcae27c45f6f5211e788d5063d3b9b3249d80dc Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Mon, 30 May 2022 17:35:19 +0800 Subject: [PATCH 046/128] doc: disable whitelsit in L1GatewayRouter --- .../tokenbridge/ethereum/gateway/L1GatewayRouter.sol | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol index fc9040b137..9d5f71911f 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol @@ -41,13 +41,13 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute function initialize( address _owner, address _defaultGateway, - address _whitelist, + address , // was _whitelist, now unused address _counterpartGateway, address _inbox ) public { GatewayRouter._initialize(_counterpartGateway, address(0), _defaultGateway); owner = _owner; - WhitelistConsumer.whitelist = _whitelist; + WhitelistConsumer.whitelist = address(0); inbox = _inbox; } @@ -249,7 +249,6 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute ) public payable override returns (bytes memory) { _outboundTransferChecks(_maxGas, _gasPriceBid, _data); - // will revert if msg.sender is not whitelisted return super.outboundTransfer(_token, _to, _amount, _maxGas, _gasPriceBid, _data); } @@ -278,7 +277,6 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute require(_refundTo != address(0), "INVALID_REFUND_ADDR"); _outboundTransferChecks(_maxGas, _gasPriceBid, _data); - // will revert if msg.sender is not whitelisted return super.outboundTransferCustomRefund(_token, _refundTo, _to, _amount, _maxGas, _gasPriceBid, _data); } From bdbc976ed32595fb35656ecf0097dd18930ef570 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Mon, 30 May 2022 18:30:52 +0800 Subject: [PATCH 047/128] doc: improve natspec on aliasing rule --- .../tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol | 5 +++-- .../tokenbridge/ethereum/gateway/L1GatewayRouter.sol | 7 ++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol index 651463e44e..d876f6f6bc 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol @@ -217,8 +217,9 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { /** * @notice Deposit ERC20 token from Ethereum into Arbitrum. If L2 side hasn't been deployed yet, includes name/symbol/decimals data for initial L2 deploy. Initiate by GatewayRouter. * @param _l1Token L1 address of ERC20 - * @param _refundTo account to be credited with the excess gas refund in the L2, subject to L2 alias rewrite if its a L1 contract - * @param _to account to be credited with the tokens in the L2 (can be the user's L2 account or a contract) + * @param _refundTo Account, or its L2 alias if it have code in L1, to be credited with excess gas refund in L2 + * @param _to Account to be credited with the tokens in the L2 (can be the user's L2 account or a contract), not subject to L2 aliasing + This account, or its L2 alias if it have code in L1, will also be able to cancel the retryable ticket and receive callvalue refund * @param _amount Token Amount * @param _maxGas Max gas deducted from user's L2 balance to cover L2 execution * @param _gasPriceBid Gas price for L2 execution diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol index 9d5f71911f..172dcfef66 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol @@ -256,8 +256,9 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute * @notice Deposit ERC20 token from Ethereum into Arbitrum using the registered or otherwise default gateway * @dev Some legacy gateway might not have the outboundTransferCustomRefund method and will revert, in such case use outboundTransfer instead * @param _token L1 address of ERC20 - * @param _refundTo account to be credited with the excess gas refund in the L2, subject to L2 alias rewrite if its a L1 contract - * @param _to account to be credited with the tokens in the L2 (can be the user's L2 account or a contract) + * @param _refundTo Account, or its L2 alias if it have code in L1, to be credited with excess gas refund in L2 + * @param _to Account to be credited with the tokens in the L2 (can be the user's L2 account or a contract), not subject to L2 aliasing + This account, or its L2 alias if it have code in L1, will also be able to cancel the retryable ticket and receive callvalue refund * @param _amount Token Amount * @param _maxGas Max gas deducted from user's L2 balance to cover L2 execution * @param _gasPriceBid Gas price for L2 execution @@ -273,7 +274,7 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute uint256 _gasPriceBid, bytes calldata _data ) public payable override returns (bytes memory) { - // _refundTo is subject to L2 alias rewrite + // _refundTo will be rewritten to L2 alias if the address have code in L1 require(_refundTo != address(0), "INVALID_REFUND_ADDR"); _outboundTransferChecks(_maxGas, _gasPriceBid, _data); From 317ae352b1b1ecb67b2f37d29e849a0bb2bb6fda Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Tue, 31 May 2022 23:22:24 +0800 Subject: [PATCH 048/128] fix: remove assembly usage (#2259) --- .../tokenbridge/ethereum/gateway/L1GatewayRouter.sol | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol index fc9040b137..efd6a7e209 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol @@ -221,17 +221,14 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute function _outboundTransferChecks( uint256 _maxGas, uint256 _gasPriceBid, - bytes memory _data + bytes calldata _data ) internal view { // when sending a L1 to L2 transaction, we expect the user to send // eth in flight in order to pay for L2 gas costs // this check prevents users from misconfiguring the msg.value - uint256 _maxSubmissionCost; - // assembly code block below is the gas optimized version of - // _maxSubmissionCost = abi.decode(_data, (uint256, bytes)); - assembly { - _maxSubmissionCost := mload(add(_data, 0x20)) - } + + // _data is (uint256, bytes) encoded, but we don't need the bytes + uint256 _maxSubmissionCost = abi.decode(_data, (uint256)); // here we don't use SafeMath since this validation is to prevent users // from shooting themselves on the foot. From 858967a08eeccf3e4931f7eb78a35c38c7f51c8a Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 1 Jun 2022 15:25:39 +0800 Subject: [PATCH 049/128] docs: add more aliasing rule explaination --- .../tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol | 5 +++++ .../tokenbridge/ethereum/gateway/L1GatewayRouter.sol | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol index d876f6f6bc..d56e9a6f0c 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol @@ -216,6 +216,11 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { /** * @notice Deposit ERC20 token from Ethereum into Arbitrum. If L2 side hasn't been deployed yet, includes name/symbol/decimals data for initial L2 deploy. Initiate by GatewayRouter. + * @dev L2 address alias will not be applied to the following types of addresses on L1: + * - an externally-owned account + * - a contract in construction + * - an address where a contract will be created + * - an address where a contract lived, but was destroyed * @param _l1Token L1 address of ERC20 * @param _refundTo Account, or its L2 alias if it have code in L1, to be credited with excess gas refund in L2 * @param _to Account to be credited with the tokens in the L2 (can be the user's L2 account or a contract), not subject to L2 aliasing diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol index 172dcfef66..84b0c9053a 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol @@ -255,6 +255,11 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute /** * @notice Deposit ERC20 token from Ethereum into Arbitrum using the registered or otherwise default gateway * @dev Some legacy gateway might not have the outboundTransferCustomRefund method and will revert, in such case use outboundTransfer instead + * L2 address alias will not be applied to the following types of addresses on L1: + * - an externally-owned account + * - a contract in construction + * - an address where a contract will be created + * - an address where a contract lived, but was destroyed * @param _token L1 address of ERC20 * @param _refundTo Account, or its L2 alias if it have code in L1, to be credited with excess gas refund in L2 * @param _to Account to be credited with the tokens in the L2 (can be the user's L2 account or a contract), not subject to L2 aliasing From 2342e1b9b9937ca54d07ade4ff70ea3a2e9ab73d Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Fri, 10 Jun 2022 19:58:54 +0800 Subject: [PATCH 050/128] fix: remove hardhat_setBalance --- packages/arb-bridge-peripherals/test/wethGateway.e2e.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts b/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts index f5a5f6dffd..791fb28afb 100644 --- a/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts +++ b/packages/arb-bridge-peripherals/test/wethGateway.e2e.ts @@ -133,11 +133,6 @@ describe('Bridge peripherals end-to-end weth gateway', () => { '0x0000000000000000000000000000000000000064', await network.provider.send('eth_getCode', [arbsysmock.address]), ]) - - network.provider.request({ - method: 'hardhat_setBalance', - params: [l2TestBridge.address, '0xffffffffffffffffffff'], - }) }) it('should deposit tokens', async function () { From 3d154a52b81146eb0874c340b0d3206c7f14a632 Mon Sep 17 00:00:00 2001 From: Lee Bousfield Date: Sun, 10 Jul 2022 16:52:37 -0500 Subject: [PATCH 051/128] Allow inbox reader to reorg when it's past the current height --- packages/arb-node-core/monitor/inboxReader.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/arb-node-core/monitor/inboxReader.go b/packages/arb-node-core/monitor/inboxReader.go index a6a9e6ed7d..dfd053b556 100644 --- a/packages/arb-node-core/monitor/inboxReader.go +++ b/packages/arb-node-core/monitor/inboxReader.go @@ -277,7 +277,11 @@ func (ir *InboxReader) getMessages(ctx context.Context, temporarilyParanoid bool } } if from.Cmp(currentHeight) >= 0 { - break + if reorgingDelayed || reorgingSequencer { + from = new(big.Int).Sub(currentHeight, new(big.Int).SetUint64(blocksToFetch)) + } else { + break + } } to := new(big.Int).Add(from, new(big.Int).SetUint64(blocksToFetch)) if to.Cmp(currentHeight) > 0 { From 333f3c114389a318202da8972bcac89183a714bf Mon Sep 17 00:00:00 2001 From: Lee Bousfield Date: Sun, 10 Jul 2022 16:58:03 -0500 Subject: [PATCH 052/128] Harden caught up target during backwards reorgs --- packages/arb-node-core/monitor/inboxReader.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/arb-node-core/monitor/inboxReader.go b/packages/arb-node-core/monitor/inboxReader.go index dfd053b556..727849441f 100644 --- a/packages/arb-node-core/monitor/inboxReader.go +++ b/packages/arb-node-core/monitor/inboxReader.go @@ -295,15 +295,20 @@ func (ir *InboxReader) getMessages(ctx context.Context, temporarilyParanoid bool if err != nil { return err } - if ir.caughtUpTarget == nil && to.Cmp(currentHeight) == 0 { + if to.Cmp(currentHeight) == 0 && !reorgingDelayed && !reorgingSequencer { + var newCaughtUpTarget *big.Int if len(sequencerBatches) > 0 { - ir.caughtUpTarget = sequencerBatches[len(sequencerBatches)-1].GetAfterCount() + newCaughtUpTarget = sequencerBatches[len(sequencerBatches)-1].GetAfterCount() } else { dbMessageCount, err := ir.db.GetMessageCount() if err != nil { return err } - ir.caughtUpTarget = dbMessageCount + newCaughtUpTarget = dbMessageCount + } + // Only let the caught up target decrease (to avoid perpetually being not caught up) + if ir.caughtUpTarget == nil || newCaughtUpTarget.Cmp(ir.caughtUpTarget) < 0 { + ir.caughtUpTarget = newCaughtUpTarget } } if len(sequencerBatches) > 0 { From 0435a59e97484b224f83d89ead1d8b936761dd64 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Tue, 12 Jul 2022 18:28:00 +0800 Subject: [PATCH 053/128] refactor: onlyOwner modifier in L1CustomGateway --- .../tokenbridge/ethereum/gateway/L1CustomGateway.sol | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol index 250aa55c26..2b53590297 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol @@ -55,7 +55,10 @@ contract L1CustomGateway is L1ArbitrumExtendedGateway, ICustomGateway { _status = _NOT_ENTERED; } - // end of inline reentrancy guard + modifier onlyOwner() { + require(msg.sender == owner, "ONLY_OWNER"); + _; + } function outboundTransferCustomRefund( address _l1Token, @@ -229,8 +232,7 @@ contract L1CustomGateway is L1ArbitrumExtendedGateway, ICustomGateway { uint256 _maxGas, uint256 _gasPriceBid, uint256 _maxSubmissionCost - ) external payable returns (uint256) { - require(msg.sender == owner, "ONLY_OWNER"); + ) external payable onlyOwner returns (uint256) { require(_l1Addresses.length == _l2Addresses.length, "INVALID_LENGTHS"); for (uint256 i = 0; i < _l1Addresses.length; i++) { From 8301fae2dd91933bf7a93ae1aa9d1c17bdfd0e3f Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Tue, 12 Jul 2022 18:29:30 +0800 Subject: [PATCH 054/128] feat: add setOwner to L1CustomGateway --- .../tokenbridge/ethereum/gateway/L1CustomGateway.sol | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol index 2b53590297..d3e32a292b 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol @@ -216,6 +216,11 @@ contract L1CustomGateway is L1ArbitrumExtendedGateway, ICustomGateway { ); } + function setOwner(address newOwner) external onlyOwner { + require(newOwner != address(0), "INVALID_OWNER"); + owner = newOwner; + } + /** * @notice Allows owner to force register a custom L1/L2 token pair. * @dev _l1Addresses[i] counterpart is assumed to be _l2Addresses[i] From b807c3d12b6428139e90c1ddd4b15a40be8ae5e4 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Tue, 12 Jul 2022 18:45:49 +0800 Subject: [PATCH 055/128] chore: add linter to arb-bridge-peripherals --- packages/arb-bridge-eth/.eslintignore | 2 +- packages/arb-bridge-peripherals/.eslintignore | 5 +++++ packages/arb-bridge-peripherals/.prettierignore | 7 ++++++- packages/arb-bridge-peripherals/.solhint.json | 9 +++++++++ packages/arb-bridge-peripherals/package.json | 14 ++++++++++++++ 5 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 packages/arb-bridge-peripherals/.eslintignore create mode 100644 packages/arb-bridge-peripherals/.solhint.json diff --git a/packages/arb-bridge-eth/.eslintignore b/packages/arb-bridge-eth/.eslintignore index 1e6271e9a7..ce7439c9f4 100644 --- a/packages/arb-bridge-eth/.eslintignore +++ b/packages/arb-bridge-eth/.eslintignore @@ -1,7 +1,7 @@ cache coverage build -deployments +_deployments dist test/proofs test/challenges diff --git a/packages/arb-bridge-peripherals/.eslintignore b/packages/arb-bridge-peripherals/.eslintignore new file mode 100644 index 0000000000..f0546a9e05 --- /dev/null +++ b/packages/arb-bridge-peripherals/.eslintignore @@ -0,0 +1,5 @@ +cache +coverage +build +_deployments +dist \ No newline at end of file diff --git a/packages/arb-bridge-peripherals/.prettierignore b/packages/arb-bridge-peripherals/.prettierignore index d938049d42..d530387ebc 100644 --- a/packages/arb-bridge-peripherals/.prettierignore +++ b/packages/arb-bridge-peripherals/.prettierignore @@ -1 +1,6 @@ -slither.db.json +cache +build +coverage +deployments +dist +slither.db.json \ No newline at end of file diff --git a/packages/arb-bridge-peripherals/.solhint.json b/packages/arb-bridge-peripherals/.solhint.json new file mode 100644 index 0000000000..b1167a3c90 --- /dev/null +++ b/packages/arb-bridge-peripherals/.solhint.json @@ -0,0 +1,9 @@ +{ + "extends": "solhint:recommended", + "plugins": ["prettier"], + "rules": { + "mark-callable-contracts": "none", + "prettier/prettier": "error", + "compiler-version": ["error", "^0.6.11"] + } +} diff --git a/packages/arb-bridge-peripherals/package.json b/packages/arb-bridge-peripherals/package.json index 75dccb975f..90780288dd 100644 --- a/packages/arb-bridge-peripherals/package.json +++ b/packages/arb-bridge-peripherals/package.json @@ -7,6 +7,10 @@ "build:0.6": "INTERFACE_TESTER_SOLC_VERSION=0.6.9 yarn run build", "build:0.7": "INTERFACE_TESTER_SOLC_VERSION=0.7.0 yarn run build", "build:0.8": "INTERFACE_TESTER_SOLC_VERSION=0.8.15 yarn run build", + "lint:js": "eslint .", + "lint:solidity": "solhint 'contracts/**/*.sol'", + "lint": "yarn lint:solidity && yarn lint:js", + "format": "prettier './**/*.{js,json,md,ts,yml,sol}' --write && yarn lint --fix", "test:compatibility": "yarn run build:0.6 && yarn run build:0.7 && yarn run build:0.8", "test:e2e": "hardhat test test/*.e2e.ts", "test:l1": "hardhat test test/*.l1.ts", @@ -41,13 +45,23 @@ "@types/chai": "^4.2.15", "@types/mocha": "^9.0.0", "@types/node": "^14.14.28", + "@typescript-eslint/eslint-plugin": "^4.29.0", + "@typescript-eslint/parser": "^4.29.0", "arb-upgrades": "0.0.1", "chai": "^4.2.0", "dotenv": "^10.0.0", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-mocha": "^9.0.0", + "eslint-plugin-prettier": "^4.0.0", "ethereum-waffle": "^3.2.0", "ethers": "^5.4.5", "hardhat-deploy": "^0.9.1", "hardhat-gas-reporter": "^1.0.4", + "prettier": "^2.3.2", + "prettier-plugin-solidity": "^1.0.0-beta.17", + "solhint": "^3.2.0", + "solhint-plugin-prettier": "^0.0.5", "sol2uml": "^1.1.29", "solidity-coverage": "v0.7.17", "typechain": "^5.1.2", From 3be7fc0c2d29a12fe10a826a32df7eb95ea9ee5f Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Tue, 12 Jul 2022 18:46:49 +0800 Subject: [PATCH 056/128] style: fix lint issues --- .../contracts/rpc-utils/MulticallV2.sol | 1 + .../contracts/rpc-utils/NodeInterface.sol | 2 +- .../contracts/rpc-utils/RetryableTicketCreator.sol | 2 +- .../contracts/tokenbridge/libraries/ClonableBeaconProxy.sol | 2 +- .../contracts/tokenbridge/libraries/ITransferAndCall.sol | 2 +- .../contracts/tokenbridge/libraries/TransferAndCallToken.sol | 1 + .../contracts/tokenbridge/test/TestBytesParser.sol | 2 ++ packages/arb-bridge-peripherals/hardhat.config.ts | 4 ++-- 8 files changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/rpc-utils/MulticallV2.sol b/packages/arb-bridge-peripherals/contracts/rpc-utils/MulticallV2.sol index 3ec041692a..ccadb69363 100644 --- a/packages/arb-bridge-peripherals/contracts/rpc-utils/MulticallV2.sol +++ b/packages/arb-bridge-peripherals/contracts/rpc-utils/MulticallV2.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// solhint-disable-next-line compiler-version pragma solidity >=0.5.0; pragma experimental ABIEncoderV2; diff --git a/packages/arb-bridge-peripherals/contracts/rpc-utils/NodeInterface.sol b/packages/arb-bridge-peripherals/contracts/rpc-utils/NodeInterface.sol index 0fa678dc21..08c37e0351 100644 --- a/packages/arb-bridge-peripherals/contracts/rpc-utils/NodeInterface.sol +++ b/packages/arb-bridge-peripherals/contracts/rpc-utils/NodeInterface.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 - +// solhint-disable-next-line compiler-version pragma solidity >=0.4.21 <0.7.0; /** @title Interface for providing Outbox proof data diff --git a/packages/arb-bridge-peripherals/contracts/rpc-utils/RetryableTicketCreator.sol b/packages/arb-bridge-peripherals/contracts/rpc-utils/RetryableTicketCreator.sol index ba03363f9d..38c55b19de 100644 --- a/packages/arb-bridge-peripherals/contracts/rpc-utils/RetryableTicketCreator.sol +++ b/packages/arb-bridge-peripherals/contracts/rpc-utils/RetryableTicketCreator.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 - +// solhint-disable-next-line compiler-version pragma solidity >=0.4.21 <0.7.0; interface RetryableTicketCreator { diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/ClonableBeaconProxy.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/ClonableBeaconProxy.sol index 786a924429..b74c1011d1 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/ClonableBeaconProxy.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/ClonableBeaconProxy.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 - +// solhint-disable-next-line compiler-version pragma solidity >=0.6.0 <0.8.0; import "@openzeppelin/contracts/proxy/BeaconProxy.sol"; diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/ITransferAndCall.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/ITransferAndCall.sol index 5137e88379..a894e942c9 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/ITransferAndCall.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/ITransferAndCall.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT - +// solhint-disable-next-line compiler-version pragma solidity >0.6.0 <0.8.0; import "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol"; diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/TransferAndCallToken.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/TransferAndCallToken.sol index 6b3363411f..8d8796b0a0 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/TransferAndCallToken.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/TransferAndCallToken.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// solhint-disable-next-line compiler-version pragma solidity >0.6.0 <0.8.0; import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestBytesParser.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestBytesParser.sol index 2538b84512..43fc67eb4e 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestBytesParser.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestBytesParser.sol @@ -16,6 +16,8 @@ * limitations under the License. */ +pragma solidity ^0.6.11; + import "../libraries/BytesParser.sol"; contract TestBytesParser { diff --git a/packages/arb-bridge-peripherals/hardhat.config.ts b/packages/arb-bridge-peripherals/hardhat.config.ts index 75f40a1edc..4355b35b71 100644 --- a/packages/arb-bridge-peripherals/hardhat.config.ts +++ b/packages/arb-bridge-peripherals/hardhat.config.ts @@ -14,8 +14,8 @@ if (process.env['INTERFACE_TESTER_SOLC_VERSION']) { config.solidity.overrides = { ...config.solidity.overrides, 'contracts/tokenbridge/test/InterfaceCompatibilityTester.sol': { - version: process.env['INTERFACE_TESTER_SOLC_VERSION'], - } + version: process.env['INTERFACE_TESTER_SOLC_VERSION'], + }, } } From 0a0d63e4e0f2f45a0fcd832a165b62fb34d980a5 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Tue, 12 Jul 2022 18:50:56 +0800 Subject: [PATCH 057/128] test: lint arb-bridge-peripherals in ci --- .circleci/config.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 435502f6b7..77652ff19b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -345,6 +345,12 @@ jobs: command: | yarn install --cache-folder ~/.cache/yarn working_directory: /home/user/project + - run: + name: lint + command: | + yarn lint:js --format junit -o ${TEST_RESULTS}/arb-bridge-peripherals-lint.xml + yarn lint:solidity + working_directory: /home/user/project/packages/arb-bridge-peripherals - run: name: test interface compatibility command: | From 2822bd97ed1d6b39178b3942ac08666cd187dc21 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Tue, 12 Jul 2022 19:12:09 +0800 Subject: [PATCH 058/128] chore: add tslint --- packages/arb-bridge-eth/.eslintrc.js | 68 ++++++++ packages/arb-bridge-eth/package.json | 2 + packages/arb-bridge-peripherals/.eslintrc.js | 66 ++++++++ packages/arb-bridge-peripherals/package.json | 4 +- yarn.lock | 155 +++++++++++++++++-- 5 files changed, 285 insertions(+), 10 deletions(-) create mode 100644 packages/arb-bridge-eth/.eslintrc.js create mode 100644 packages/arb-bridge-peripherals/.eslintrc.js diff --git a/packages/arb-bridge-eth/.eslintrc.js b/packages/arb-bridge-eth/.eslintrc.js new file mode 100644 index 0000000000..3811584e49 --- /dev/null +++ b/packages/arb-bridge-eth/.eslintrc.js @@ -0,0 +1,68 @@ +module.exports = { + env: { + commonjs: true, + es6: true, + node: true, + }, + plugins: ['prettier'], + extends: [ + 'eslint:recommended', + 'plugin:prettier/recommended', // Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. + ], + parserOptions: { + ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features + sourceType: 'module', // Allows for the use of imports + }, + rules: { + 'prettier/prettier': 'error', + 'no-unused-vars': 'off', + 'prefer-const': [2, { destructuring: 'all' }], + 'object-curly-spacing': ['error', 'always'], + }, + overrides: [ + { + files: [ + 'test/**/*.ts', + 'test/**/*.tsx', + 'scripts/**/*.ts', + 'scripts/**/*.tsx', + 'deploy/**/*.ts', + 'deploy/**/*.tsx', + ], + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.json', + }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', + ], + plugins: ['@typescript-eslint', 'prettier', '@typescript-eslint/tslint'], + rules: { + 'no-empty-pattern': 'warn', + 'prettier/prettier': ['error', { singleQuote: true }], + '@typescript-eslint/member-delimiter-style': ['off'], + '@typescript-eslint/no-explicit-any': ['off'], + '@typescript-eslint/no-use-before-define': ['off'], + '@typescript-eslint/no-non-null-assertion': ['off'], + '@typescript-eslint/ban-ts-comment': ['warn'], + '@typescript-eslint/no-unused-vars': [ + 'warn', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + caughtErrorsIgnorePattern: '^_', + }, + ], + '@typescript-eslint/tslint/config': [ + 'error', + { + rules: { 'strict-comparisons': true }, + }, + ], + 'no-implicit-coercion': 'error', + }, + }, + ], +} diff --git a/packages/arb-bridge-eth/package.json b/packages/arb-bridge-eth/package.json index 8a3580f77a..2621277763 100644 --- a/packages/arb-bridge-eth/package.json +++ b/packages/arb-bridge-eth/package.json @@ -64,6 +64,7 @@ "@types/mocha": "^9.0.0", "@types/node": "^14.0.13", "@typescript-eslint/eslint-plugin": "^4.29.0", + "@typescript-eslint/eslint-plugin-tslint": "^5.30.6", "@typescript-eslint/parser": "^4.29.0", "arb-upgrades": "0.0.1", "audit-ci": "^5.1.2", @@ -85,6 +86,7 @@ "solhint": "^3.2.0", "solhint-plugin-prettier": "^0.0.5", "solidity-coverage": "v0.7.17", + "tslint": "^6.1.3", "typechain": "^5.1.2", "typescript": "^4.2.2" } diff --git a/packages/arb-bridge-peripherals/.eslintrc.js b/packages/arb-bridge-peripherals/.eslintrc.js new file mode 100644 index 0000000000..2095ec7e8a --- /dev/null +++ b/packages/arb-bridge-peripherals/.eslintrc.js @@ -0,0 +1,66 @@ +module.exports = { + env: { + commonjs: true, + es6: true, + node: true, + }, + plugins: ['prettier'], + extends: [ + 'eslint:recommended', + 'plugin:prettier/recommended', // Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. + ], + parserOptions: { + ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features + sourceType: 'module', // Allows for the use of imports + }, + rules: { + 'prettier/prettier': 'error', + 'no-unused-vars': 'off', + 'prefer-const': [2, { destructuring: 'all' }], + 'object-curly-spacing': ['error', 'always'], + }, + overrides: [ + { + files: [ + 'test/**/*.ts', + 'test/**/*.tsx', + 'scripts/**/*.ts', + 'scripts/**/*.tsx', + ], + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.json', + }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', + ], + plugins: ['@typescript-eslint', 'prettier', '@typescript-eslint/tslint'], + rules: { + 'no-empty-pattern': 'warn', + 'prettier/prettier': ['error', { singleQuote: true }], + '@typescript-eslint/member-delimiter-style': ['off'], + '@typescript-eslint/no-explicit-any': ['off'], + '@typescript-eslint/no-use-before-define': ['off'], + '@typescript-eslint/no-non-null-assertion': ['off'], + '@typescript-eslint/ban-ts-comment': ['warn'], + '@typescript-eslint/no-unused-vars': [ + 'warn', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + caughtErrorsIgnorePattern: '^_', + }, + ], + '@typescript-eslint/tslint/config': [ + 'error', + { + rules: { 'strict-comparisons': true }, + }, + ], + 'no-implicit-coercion': 'error', + }, + }, + ], +} diff --git a/packages/arb-bridge-peripherals/package.json b/packages/arb-bridge-peripherals/package.json index 90780288dd..f0892db080 100644 --- a/packages/arb-bridge-peripherals/package.json +++ b/packages/arb-bridge-peripherals/package.json @@ -46,6 +46,7 @@ "@types/mocha": "^9.0.0", "@types/node": "^14.14.28", "@typescript-eslint/eslint-plugin": "^4.29.0", + "@typescript-eslint/eslint-plugin-tslint": "^5.30.6", "@typescript-eslint/parser": "^4.29.0", "arb-upgrades": "0.0.1", "chai": "^4.2.0", @@ -60,10 +61,11 @@ "hardhat-gas-reporter": "^1.0.4", "prettier": "^2.3.2", "prettier-plugin-solidity": "^1.0.0-beta.17", + "sol2uml": "^1.1.29", "solhint": "^3.2.0", "solhint-plugin-prettier": "^0.0.5", - "sol2uml": "^1.1.29", "solidity-coverage": "v0.7.17", + "tslint": "^6.1.3", "typechain": "^5.1.2", "typescript": "^4.2.2" }, diff --git a/yarn.lock b/yarn.lock index 1846586729..2f93efb9e6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1089,7 +1089,7 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/json-schema@^7.0.7": +"@types/json-schema@^7.0.7", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== @@ -1246,6 +1246,14 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin-tslint@^5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.30.6.tgz#3863d2fe5f6710333ee46c25cde40b2d95789636" + integrity sha512-2dQrQi8r6lAB7SwJfAkX7vPRwFrB08qHENmEJDMkGzCh/YV24pfHqJCFYd3V9gdbqS7Gc8yXURNJrSzyj1JERw== + dependencies: + "@typescript-eslint/utils" "5.30.6" + lodash "^4.17.21" + "@typescript-eslint/eslint-plugin@^4.29.0": version "4.33.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" @@ -1290,11 +1298,24 @@ "@typescript-eslint/types" "4.33.0" "@typescript-eslint/visitor-keys" "4.33.0" +"@typescript-eslint/scope-manager@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.6.tgz#ce1b49ff5ce47f55518d63dbe8fc9181ddbd1a33" + integrity sha512-Hkq5PhLgtVoW1obkqYH0i4iELctEKixkhWLPTYs55doGUKCASvkjOXOd/pisVeLdO24ZX9D6yymJ/twqpJiG3g== + dependencies: + "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/visitor-keys" "5.30.6" + "@typescript-eslint/types@4.33.0": version "4.33.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== +"@typescript-eslint/types@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.6.tgz#86369d0a7af8c67024115ac1da3e8fb2d38907e1" + integrity sha512-HdnP8HioL1F7CwVmT4RaaMX57RrfqsOMclZc08wGMiDYJBsLGBM7JwXM4cZJmbWLzIR/pXg1kkrBBVpxTOwfUg== + "@typescript-eslint/typescript-estree@4.33.0": version "4.33.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" @@ -1308,6 +1329,31 @@ semver "^7.3.5" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.6.tgz#a84a0d6a486f9b54042da1de3d671a2c9f14484e" + integrity sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A== + dependencies: + "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/visitor-keys" "5.30.6" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.6.tgz#1de2da14f678e7d187daa6f2e4cdb558ed0609dc" + integrity sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.30.6" + "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/typescript-estree" "5.30.6" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + "@typescript-eslint/visitor-keys@4.33.0": version "4.33.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" @@ -1316,6 +1362,14 @@ "@typescript-eslint/types" "4.33.0" eslint-visitor-keys "^2.0.0" +"@typescript-eslint/visitor-keys@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.6.tgz#94dd10bb481c8083378d24de1742a14b38a2678c" + integrity sha512-41OiCjdL2mCaSDi2SvYbzFLlqqlm5v1ZW9Ym55wXKL/Rx6OOB1IbuFGo71Fj6Xy90gJDFTlgOS+vbmtGHPTQQA== + dependencies: + "@typescript-eslint/types" "5.30.6" + eslint-visitor-keys "^3.3.0" + "@ungap/promise-all-settled@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" @@ -2639,6 +2693,11 @@ bufferutil@^4.0.1: dependencies: node-gyp-build "^4.3.0" +builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ== + bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -2804,7 +2863,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3068,7 +3127,7 @@ commander@3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^2.19.0: +commander@^2.12.1, commander@^2.19.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -3319,7 +3378,7 @@ debug@3.2.6: dependencies: ms "^2.1.1" -debug@4, debug@^4.0.1, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3: +debug@4, debug@^4.0.1, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -3880,6 +3939,11 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + eslint@^5.6.0: version "5.16.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" @@ -5321,6 +5385,18 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.1: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" @@ -5376,7 +5452,7 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" -globby@^11.0.3: +globby@^11.0.3, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -6051,6 +6127,13 @@ is-core-module@^2.8.1: dependencies: has "^1.0.3" +is-core-module@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -6163,7 +6246,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -6970,6 +7053,13 @@ lru-cache@^3.2.0: dependencies: pseudomap "^1.0.1" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + lru-cache@^7.4.0: version "7.8.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.8.1.tgz#68ee3f4807a57d2ba185b7fd90827d5c21ce82bb" @@ -7274,7 +7364,7 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -"minimatch@2 || 3", minimatch@^3.0.4: +"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -7347,7 +7437,7 @@ mkdirp@0.5.5: dependencies: minimist "^1.2.5" -mkdirp@0.5.x, mkdirp@^0.5.1, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@0.5.x, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -8934,6 +9024,15 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.8.1, resolve@~1.22.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.3.2: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -9138,6 +9237,13 @@ semver@^7.0.0, semver@^7.2.1, semver@^7.3.4, semver@^7.3.5: dependencies: lru-cache "^7.4.0" +semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + semver@~5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -10173,16 +10279,42 @@ ts-node@^8.0.2: source-map-support "^0.5.17" yn "3.1.1" -tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslint@^6.1.3: + version "6.1.3" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" + integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg== + dependencies: + "@babel/code-frame" "^7.0.0" + builtin-modules "^1.1.1" + chalk "^2.3.0" + commander "^2.12.1" + diff "^4.0.1" + glob "^7.1.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + mkdirp "^0.5.3" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.13.0" + tsutils "^2.29.0" + tsort@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" integrity sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y= +tsutils@^2.29.0: + version "2.29.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" + integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== + dependencies: + tslib "^1.8.1" + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -11366,6 +11498,11 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@13.1.2, yargs-parser@^13.1.0, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" From c8435ba8268c1a0dd0f2849a6191f26c2feb9319 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Tue, 12 Jul 2022 19:13:49 +0800 Subject: [PATCH 059/128] fix: tslint:strict-comparisons --- packages/arb-bridge-eth/test/common/rolluplib.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/arb-bridge-eth/test/common/rolluplib.ts b/packages/arb-bridge-eth/test/common/rolluplib.ts index 77402627f9..1f01cd44d3 100644 --- a/packages/arb-bridge-eth/test/common/rolluplib.ts +++ b/packages/arb-bridge-eth/test/common/rolluplib.ts @@ -244,8 +244,8 @@ export class RollupContract { prevNode = parentNode } const isChild = - challengeHash(prevNode.assertion.afterState) == - challengeHash(assertion.beforeState) + challengeHash(prevNode.assertion.afterState).toString() === + challengeHash(assertion.beforeState).toString() const newNodeHash = ethers.utils.solidityKeccak256( ['bool', 'bytes32', 'bytes32', 'bytes32'], [ From f4e59a0b37ad6ea10582f6a79954f52dfe5e2d3c Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 13 Jul 2022 20:03:19 +0800 Subject: [PATCH 060/128] style: linter --- .../ethereum/gateway/L1GatewayRouter.sol | 13 +++++++++++-- .../tokenbridge/libraries/gateway/GatewayRouter.sol | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol index 77a62f5912..c4731245f9 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol @@ -41,7 +41,7 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute function initialize( address _owner, address _defaultGateway, - address , // was _whitelist, now unused + address, // was _whitelist, now unused address _counterpartGateway, address _inbox ) public { @@ -280,7 +280,16 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute require(_refundTo != address(0), "INVALID_REFUND_ADDR"); _outboundTransferChecks(_maxGas, _gasPriceBid, _data); - return super.outboundTransferCustomRefund(_token, _refundTo, _to, _amount, _maxGas, _gasPriceBid, _data); + return + super.outboundTransferCustomRefund( + _token, + _refundTo, + _to, + _amount, + _maxGas, + _gasPriceBid, + _data + ); } modifier onlyCounterpartGateway() override { diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol index 2137c3758c..960f7e7e65 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol @@ -83,7 +83,7 @@ abstract contract GatewayRouter is TokenGateway { uint256 _gasPriceBid, bytes calldata _data ) public payable virtual override returns (bytes memory) { - // this function is kept instead of delegating to outboundTransferCustomRefund to allow + // this function is kept instead of delegating to outboundTransferCustomRefund to allow // compatibility with older gateways that did not implement outboundTransferCustomRefund address gateway = getGateway(_token); bytes memory gatewayData = GatewayMessageHandler.encodeFromRouterToGateway( From 19c2d822b737424658df9061a61085456ba0accf Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Thu, 14 Jul 2022 17:38:21 +0800 Subject: [PATCH 061/128] Fix and Allowlist audit-ci advisories (#2351) * chore: clear audit allowlist * chore: allowlist OZ initializer vluns * chore: pin hardhat to 2.9.9 --- package.json | 2 +- packages/arb-bridge-eth/package.json | 2 +- packages/arb-bridge-peripherals/package.json | 2 +- packages/arb-upgrades/package.json | 2 +- yarn.lock | 113 ++++++++++++++----- 5 files changed, 86 insertions(+), 35 deletions(-) diff --git a/package.json b/package.json index 6b24680583..12955b0e05 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ }, "homepage": "https://offchainlabs.com/", "scripts": { - "audit:ci": "audit-ci -l -a 1006805 1006806 1006865 1006896 1006899", + "audit:ci": "audit-ci -l -a 1067409 1067487 1067486", "install:deps": "./scripts/install-deps", "install:validator": "./scripts/install-validator", "update:abi": "yarn go:generate", diff --git a/packages/arb-bridge-eth/package.json b/packages/arb-bridge-eth/package.json index 2621277763..43bfdd6bb9 100644 --- a/packages/arb-bridge-eth/package.json +++ b/packages/arb-bridge-eth/package.json @@ -47,7 +47,7 @@ "@openzeppelin/contracts": "3.4.2", "@openzeppelin/contracts-0.8": "npm:@openzeppelin/contracts@^4.3.2", "@openzeppelin/contracts-upgradeable": "3.4.2", - "hardhat": "^2.6.1" + "hardhat": "2.9.9" }, "devDependencies": { "@codechecks/client": "^0.1.10", diff --git a/packages/arb-bridge-peripherals/package.json b/packages/arb-bridge-peripherals/package.json index faf02b1e9a..463e7bab2d 100644 --- a/packages/arb-bridge-peripherals/package.json +++ b/packages/arb-bridge-peripherals/package.json @@ -35,7 +35,7 @@ "@openzeppelin/contracts-upgradeable": "3.4.2", "arb-bridge-eth": "0.7.8", "arbos-precompiles": "^1.0.2", - "hardhat": "^2.6.1" + "hardhat": "2.9.9" }, "devDependencies": { "@nomiclabs/hardhat-ethers": "^2.0.1", diff --git a/packages/arb-upgrades/package.json b/packages/arb-upgrades/package.json index 4402841d4b..d3ba8904fe 100644 --- a/packages/arb-upgrades/package.json +++ b/packages/arb-upgrades/package.json @@ -16,7 +16,7 @@ "@typescript-eslint/eslint-plugin": "^4.29.0", "@typescript-eslint/parser": "^4.29.0", "fs-extra": "^10.0.0", - "hardhat": "^2.6.1", + "hardhat": "2.9.9", "prompts": "^2.4.1", "ts-node": "^10.2.1", "typescript": "^4.2.2", diff --git a/yarn.lock b/yarn.lock index 6c3c2644df..a08de6784c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -152,7 +152,7 @@ patch-package "^6.2.2" postinstall-postinstall "^2.1.0" -"@ethereumjs/block@^3.5.0", "@ethereumjs/block@^3.6.0", "@ethereumjs/block@^3.6.2": +"@ethereumjs/block@^3.5.0", "@ethereumjs/block@^3.6.2": version "3.6.2" resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-3.6.2.tgz#63d1e26d0b7a7a3684fce920de6ebabec1e5b674" integrity sha512-mOqYWwMlAZpYUEOEqt7EfMFuVL2eyLqWWIzcf4odn6QgXY8jBI2NhVuJncrMCKeMZrsJAe7/auaRRB6YcdH+Qw== @@ -162,7 +162,17 @@ ethereumjs-util "^7.1.4" merkle-patricia-tree "^4.2.4" -"@ethereumjs/blockchain@^5.5.0", "@ethereumjs/blockchain@^5.5.2": +"@ethereumjs/block@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-3.6.3.tgz#d96cbd7af38b92ebb3424223dbf773f5ccd27f84" + integrity sha512-CegDeryc2DVKnDkg5COQrE0bJfw/p0v3GBk2W5/Dj5dOVfEmb50Ux0GLnSPypooLnfqjwFaorGuT9FokWB3GRg== + dependencies: + "@ethereumjs/common" "^2.6.5" + "@ethereumjs/tx" "^3.5.2" + ethereumjs-util "^7.1.5" + merkle-patricia-tree "^4.2.4" + +"@ethereumjs/blockchain@^5.5.2": version "5.5.2" resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-5.5.2.tgz#1848abd9dc1ee56acf8cec4c84304d7f4667d027" integrity sha512-Jz26iJmmsQtngerW6r5BDFaew/f2mObLrRZo3rskLOx1lmtMZ8+TX/vJexmivrnWgmAsTdNWhlKUYY4thPhPig== @@ -176,7 +186,21 @@ lru-cache "^5.1.1" semaphore-async-await "^1.5.1" -"@ethereumjs/common@^2.3.0", "@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.6.0", "@ethereumjs/common@^2.6.3", "@ethereumjs/common@^2.6.4": +"@ethereumjs/blockchain@^5.5.3": + version "5.5.3" + resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-5.5.3.tgz#aa49a6a04789da6b66b5bcbb0d0b98efc369f640" + integrity sha512-bi0wuNJ1gw4ByNCV56H0Z4Q7D+SxUbwyG12Wxzbvqc89PXLRNR20LBcSUZRKpN0+YCPo6m0XZL/JLio3B52LTw== + dependencies: + "@ethereumjs/block" "^3.6.2" + "@ethereumjs/common" "^2.6.4" + "@ethereumjs/ethash" "^1.1.0" + debug "^4.3.3" + ethereumjs-util "^7.1.5" + level-mem "^5.0.1" + lru-cache "^5.1.1" + semaphore-async-await "^1.5.1" + +"@ethereumjs/common@^2.3.0", "@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.6.3", "@ethereumjs/common@^2.6.4": version "2.6.4" resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.4.tgz#1b3cdd3aa4ee3b0ca366756fc35e4a03022a01cc" integrity sha512-RDJh/R/EAr+B7ZRg5LfJ0BIpf/1LydFgYdvZEuTraojCbVypO2sQ+QnpP5u2wJf9DASyooKqu8O4FJEWUV6NXw== @@ -184,6 +208,14 @@ crc-32 "^1.2.0" ethereumjs-util "^7.1.4" +"@ethereumjs/common@^2.6.5": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" + integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.5" + "@ethereumjs/ethash@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@ethereumjs/ethash/-/ethash-1.1.0.tgz#7c5918ffcaa9cb9c1dc7d12f77ef038c11fb83fb" @@ -195,7 +227,7 @@ ethereumjs-util "^7.1.1" miller-rabin "^4.0.0" -"@ethereumjs/tx@^3.2.1", "@ethereumjs/tx@^3.4.0", "@ethereumjs/tx@^3.5.1": +"@ethereumjs/tx@^3.2.1", "@ethereumjs/tx@^3.5.1": version "3.5.1" resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.1.tgz#8d941b83a602b4a89949c879615f7ea9a90e6671" integrity sha512-xzDrTiu4sqZXUcaBxJ4n4W5FrppwxLxZB4ZDGVLtxSQR4lVuOnFR6RcUHdg1mpUhAPVrmnzLJpxaeXnPxIyhWA== @@ -203,19 +235,27 @@ "@ethereumjs/common" "^2.6.3" ethereumjs-util "^7.1.4" -"@ethereumjs/vm@^5.6.0": - version "5.9.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.9.0.tgz#54e485097c6dbb42554d541ef8d84d06b7ddf12f" - integrity sha512-0IRsj4IuF8lFDWVVLc4mFOImaSX8VWF8CGm3mXHG/LLlQ/Tryy/kKXMw/bU9D+Zw03CdteW+wCGqNFS6+mPjpg== +"@ethereumjs/tx@^3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" + integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== dependencies: - "@ethereumjs/block" "^3.6.2" - "@ethereumjs/blockchain" "^5.5.2" "@ethereumjs/common" "^2.6.4" - "@ethereumjs/tx" "^3.5.1" + ethereumjs-util "^7.1.5" + +"@ethereumjs/vm@^5.9.0": + version "5.9.3" + resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.9.3.tgz#6d69202e4c132a4a1e1628ac246e92062e230823" + integrity sha512-Ha04TeF8goEglr8eL7hkkYyjhzdZS0PsoRURzYlTF6I0VVId5KjKb0N7MrA8GMgheN+UeTncfTgYx52D/WhEmg== + dependencies: + "@ethereumjs/block" "^3.6.3" + "@ethereumjs/blockchain" "^5.5.3" + "@ethereumjs/common" "^2.6.5" + "@ethereumjs/tx" "^3.5.2" async-eventemitter "^0.2.4" core-js-pure "^3.0.1" debug "^4.3.3" - ethereumjs-util "^7.1.4" + ethereumjs-util "^7.1.5" functional-red-black-tree "^1.0.1" mcl-wasm "^0.7.1" merkle-patricia-tree "^4.2.4" @@ -4446,7 +4486,7 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereum rlp "^2.0.0" safe-buffer "^5.1.1" -ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.2, ethereumjs-util@^7.0.3, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.3, ethereumjs-util@^7.1.4: +ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.2, ethereumjs-util@^7.0.3, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz#a6885bcdd92045b06f596c7626c3e89ab3312458" integrity sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A== @@ -4457,6 +4497,17 @@ ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.2, ethereumjs-util@^7.0.3, ethereu ethereum-cryptography "^0.1.3" rlp "^2.2.4" +ethereumjs-util@^7.1.5: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + ethereumjs-vm@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz#e885e861424e373dbc556278f7259ff3fca5edab" @@ -5586,16 +5637,16 @@ hardhat-gas-reporter@^1.0.4: eth-gas-reporter "^0.2.24" sha1 "^1.1.1" -hardhat@^2.6.1, hardhat@^2.6.4: - version "2.9.3" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.9.3.tgz#4759dc3c468c7d15f34334ca1be7d59b04e47b1e" - integrity sha512-7Vw99RbYbMZ15UzegOR/nqIYIqddZXvLwJGaX5sX4G5bydILnbjmDU6g3jMKJSiArEixS3vHAEaOs5CW1JQ3hg== +hardhat@2.9.9: + version "2.9.9" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.9.9.tgz#05c1015eb73e0230309534b00deeb080724aace0" + integrity sha512-Qv7SXnRc0zq1kGXruNnSKpP3eFccXMR5Qv6GVX9hBIJ5efN0PflKPq92aQ5Cv3jrjJeRevLznWZVz7bttXhVfw== dependencies: - "@ethereumjs/block" "^3.6.0" - "@ethereumjs/blockchain" "^5.5.0" - "@ethereumjs/common" "^2.6.0" - "@ethereumjs/tx" "^3.4.0" - "@ethereumjs/vm" "^5.6.0" + "@ethereumjs/block" "^3.6.2" + "@ethereumjs/blockchain" "^5.5.2" + "@ethereumjs/common" "^2.6.4" + "@ethereumjs/tx" "^3.5.1" + "@ethereumjs/vm" "^5.9.0" "@ethersproject/abi" "^5.1.2" "@metamask/eth-sig-util" "^4.0.0" "@sentry/node" "^5.18.1" @@ -5614,15 +5665,15 @@ hardhat@^2.6.1, hardhat@^2.6.4: env-paths "^2.2.0" ethereum-cryptography "^0.1.2" ethereumjs-abi "^0.6.8" - ethereumjs-util "^7.1.3" + ethereumjs-util "^7.1.4" find-up "^2.1.0" fp-ts "1.19.3" fs-extra "^7.0.1" - glob "^7.1.3" + glob "7.2.0" immutable "^4.0.0-rc.12" io-ts "1.10.4" lodash "^4.17.11" - merkle-patricia-tree "^4.2.2" + merkle-patricia-tree "^4.2.4" mnemonist "^0.38.0" mocha "^9.2.0" p-map "^4.0.0" @@ -5636,7 +5687,7 @@ hardhat@^2.6.1, hardhat@^2.6.4: stacktrace-parser "^0.1.10" "true-case-path" "^2.2.1" tsort "0.0.1" - undici "^4.14.1" + undici "^5.4.0" uuid "^8.3.2" ws "^7.4.6" @@ -7253,7 +7304,7 @@ merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: rlp "^2.0.0" semaphore ">=1.0.1" -merkle-patricia-tree@^4.2.2, merkle-patricia-tree@^4.2.4: +merkle-patricia-tree@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz#ff988d045e2bf3dfa2239f7fabe2d59618d57413" integrity sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w== @@ -10482,10 +10533,10 @@ underscore@1.9.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== -undici@^4.14.1: - version "4.16.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-4.16.0.tgz#469bb87b3b918818d3d7843d91a1d08da357d5ff" - integrity sha512-tkZSECUYi+/T1i4u+4+lwZmQgLXd4BLGlrc7KZPcLIW7Jpq99+Xpc30ONv7nS6F5UNOxp/HBZSSL9MafUrvJbw== +undici@^5.4.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.7.0.tgz#979f89229c01505573cb274d0e11ea8d82b4004f" + integrity sha512-ORgxwDkiPS+gK2VxE7iyVeR7JliVn5DqhZ4LgQqYLBXsuK+lwOEmnJ66dhvlpLM0tC3fC7eYF1Bti2frbw2eAA== union-value@^1.0.0: version "1.0.1" From 41311ad94e7a20432a0e7828849a76b62a84f67e Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Fri, 15 Jul 2022 18:55:15 +0800 Subject: [PATCH 062/128] revert: L1 custom gateway lazy mint (PR #1713) (#2356) * revert: #1713 L1 custom gateway lazy mint * test: l2 mint withdraw revert e2e test case * refactor: remove waitAll option --- .../ethereum/gateway/L1CustomGateway.sol | 28 +----------- .../test/customGateway.e2e.ts | 44 +++++++++---------- 2 files changed, 22 insertions(+), 50 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol index d3e32a292b..acea1b689e 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol @@ -18,7 +18,7 @@ pragma solidity ^0.6.11; -import { ArbitrumEnabledToken, L1MintableToken } from "../ICustomToken.sol"; +import { ArbitrumEnabledToken } from "../ICustomToken.sol"; import "./L1ArbitrumExtendedGateway.sol"; import "../../arbitrum/gateway/L2CustomGateway.sol"; import "../../libraries/gateway/ICustomGateway.sol"; @@ -106,32 +106,6 @@ contract L1CustomGateway is L1ArbitrumExtendedGateway, ICustomGateway { _status = _NOT_ENTERED; } - function inboundEscrowTransfer( - address _l1Token, - address _dest, - uint256 _amount - ) internal override { - // The token gateways assume that there is always a 1:1 escrow when users are withdrawing - // from the L2 to L1. - - // This assumption breaks when tokens wish to be able to mint in the L2. - // In order to support that feature, the L1 token must allow this gateway to - // mint more collateral as needed when its underfunded. - uint256 escrowBalance = L1MintableToken(_l1Token).balanceOf(address(this)); - if (escrowBalance < _amount) { - // this will never overflow because of the < check - uint256 escrowNeeded = _amount - escrowBalance; - - // This codepath may still be triggerred by tokens that are not minting in the L2 - // but this doesnt affect their security. - - // tokens were minted in L2 and now we should mint the extra needed in L1 - // if this was not supposed to mint, it will revert then continue to attempt the regular codepath - try L1MintableToken(_l1Token).bridgeMint(address(this), escrowNeeded) {} catch {} - } - super.inboundEscrowTransfer(_l1Token, _dest, _amount); - } - /** * @notice Calculate the address used when bridging an ERC20 token * @dev the L1 and L2 address oracles may not always be in sync. diff --git a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts index 44692f8a55..18020286a2 100644 --- a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts +++ b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts @@ -307,7 +307,7 @@ describe('Bridge peripherals end-to-end custom gateway', () => { ) }) - it('should withdraw tokens when minted in L2', async function () { + it('should revert withdraw tokens when minted in L2', async function () { // custom token setup const L1CustomToken = await ethers.getContractFactory( 'MintableTestCustomTokenL1' @@ -401,33 +401,31 @@ describe('Bridge peripherals end-to-end custom gateway', () => { ) await expect( - ( - await processL2ToL1Tx( - await l2TestBridge.functions[ - 'outboundTransfer(address,address,uint256,bytes)' - ]( - l1CustomToken.address, - accounts[0].address, - l2Balance.sub(smallWithdrawal), - '0x' - ), - inboxMock - ) - )[0] - ) - .to.emit(l1CustomToken, 'Transfer(address,address,uint256)') - .withArgs(ethers.constants.AddressZero, l1TestBridge.address, tokenAmount) // this is the mint + processL2ToL1Tx( + await l2TestBridge.functions[ + 'outboundTransfer(address,address,uint256,bytes)' + ]( + l1CustomToken.address, + accounts[0].address, + l2Balance.sub(smallWithdrawal), + '0x' + ), + inboxMock + ) + ).to.be.revertedWith('ERC20: transfer amount exceeds balance') + // .to.emit(l1CustomToken, 'Transfer(address,address,uint256)') + // .withArgs(ethers.constants.AddressZero, l1TestBridge.address, tokenAmount) // this is the mint const postUserBalance = await l1CustomToken.balanceOf(accounts[0].address) const postEscrow = await l1CustomToken.balanceOf(l1TestBridge.address) assert.equal(prevEscrow.toNumber(), tokenAmount) - assert.equal(postEscrow.toNumber(), 0) + assert.equal(postEscrow.toNumber(), smallWithdrawal) - assert.equal( - prevUserBalance.add(l2Balance).toNumber(), - postUserBalance.toNumber(), - 'Tokens not escrowed' - ) + // assert.equal( + // prevUserBalance.add(l2Balance).toNumber(), + // postUserBalance.toNumber(), + // 'Tokens not escrowed' + // ) }) }) From e88581019001ae2c0afbe215bcfe32f26cc6397b Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Fri, 15 Jul 2022 18:58:46 +0800 Subject: [PATCH 063/128] chore: bump arb-bridge-peripherals to 1.0.12 --- packages/arb-bridge-peripherals/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/arb-bridge-peripherals/package.json b/packages/arb-bridge-peripherals/package.json index 463e7bab2d..3344adc552 100644 --- a/packages/arb-bridge-peripherals/package.json +++ b/packages/arb-bridge-peripherals/package.json @@ -1,6 +1,6 @@ { "name": "arb-bridge-peripherals", - "version": "1.0.11", + "version": "1.0.12", "license": "Apache-2.0", "scripts": { "build": "./scripts/build.bash", From c629f17f979ce6c21e27241bd809e7c5b2215f20 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Tue, 19 Jul 2022 03:15:24 +0800 Subject: [PATCH 064/128] chore: allowlist npm advisory 1081522 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 12955b0e05..5697cda062 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ }, "homepage": "https://offchainlabs.com/", "scripts": { - "audit:ci": "audit-ci -l -a 1067409 1067487 1067486", + "audit:ci": "audit-ci -l -a 1067409 1067487 1067486 1081522", "install:deps": "./scripts/install-deps", "install:validator": "./scripts/install-validator", "update:abi": "yarn go:generate", From 0b25dce6658d2e815ec1fec26d4587e3be8b33ac Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Fri, 22 Jul 2022 19:08:46 +0800 Subject: [PATCH 065/128] feat: implement ERC165 on L1 token bridge (#2362) * feat: implement ERC165 * docs: improve comments * doc: fix comment * refactor: super in overriden function * refactor: inherit ERC165 in L1 impl contracts * fix L2 tests without erc165 Co-authored-by: fredlacs <32464905+fredlacs@users.noreply.github.com> --- .../ethereum/gateway/L1ArbitrumGateway.sol | 11 ++++++- .../ethereum/gateway/L1GatewayRouter.sol | 11 ++++++- .../tokenbridge/libraries/ERC165.sol | 32 +++++++++++++++++++ .../tokenbridge/libraries/IERC165.sol | 29 +++++++++++++++++ .../test/canonicalBridge.l1.ts | 10 ++++++ .../test/customGateway.e2e.ts | 10 ++++++ .../test/gatewayRouter.l1.ts | 10 ++++++ .../test/wethBridge.l1.ts | 10 ++++++ 8 files changed, 121 insertions(+), 2 deletions(-) create mode 100644 packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/ERC165.sol create mode 100644 packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/IERC165.sol diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol index d56e9a6f0c..cb8a413c8b 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol @@ -31,11 +31,12 @@ import "../L1ArbitrumMessenger.sol"; import "../../libraries/gateway/GatewayMessageHandler.sol"; import "../../libraries/gateway/TokenGateway.sol"; import "../../libraries/ITransferAndCall.sol"; +import "../../libraries/ERC165.sol"; /** * @title Common interface for gatways on L1 messaging to Arbitrum. */ -abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { +abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway, ERC165 { using SafeERC20 for IERC20; using Address for address; @@ -321,4 +322,12 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway { return outboundCalldata; } + + function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { + // registering interfaces that is added after arb-bridge-peripherals >1.0.11 + // using function selector instead of single function interfaces to reduce bloat + return + interfaceId == this.outboundTransferCustomRefund.selector || + super.supportsInterface(interfaceId); + } } diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol index c4731245f9..c5236fff48 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol @@ -24,12 +24,13 @@ import { ArbitrumEnabledToken } from "../ICustomToken.sol"; import "../L1ArbitrumMessenger.sol"; import "../../libraries/gateway/GatewayRouter.sol"; import "../../arbitrum/gateway/L2GatewayRouter.sol"; +import "../../libraries/ERC165.sol"; /** * @title Handles deposits from Erhereum into Arbitrum. Tokens are routered to their appropriate L1 gateway (Router itself also conforms to the Gateway itnerface). * @notice Router also serves as an L1-L2 token address oracle. */ -contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRouter { +contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRouter, ERC165 { address public owner; address public inbox; @@ -297,4 +298,12 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute revert("ONLY_COUNTERPART_GATEWAY"); _; } + + function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { + // registering interfaces that is added after arb-bridge-peripherals >1.0.11 + // using function selector instead of single function interfaces to reduce bloat + return + interfaceId == this.outboundTransferCustomRefund.selector || + super.supportsInterface(interfaceId); + } } diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/ERC165.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/ERC165.sol new file mode 100644 index 0000000000..cd62415e51 --- /dev/null +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/ERC165.sol @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) + +// With pragma modification to support ^0.6.11 +// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.6/contracts/utils/introspection/ERC165.sol + +pragma solidity ^0.6.11; + +import "./IERC165.sol"; + +/** + * @dev Implementation of the {IERC165} interface. + * + * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check + * for the additional interface id that will be supported. For example: + * + * ```solidity + * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { + * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); + * } + * ``` + * + * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. + */ +abstract contract ERC165 is IERC165 { + /** + * @dev See {IERC165-supportsInterface}. + */ + function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { + return interfaceId == type(IERC165).interfaceId; + } +} diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/IERC165.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/IERC165.sol new file mode 100644 index 0000000000..6509e61ec3 --- /dev/null +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/IERC165.sol @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) + +// With pragma modification to allow interface compatibility with >=0.6.9 <0.9.0 +// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.6/contracts/utils/introspection/IERC165.sol + +// solhint-disable-next-line compiler-version +pragma solidity >=0.6.9 <0.9.0; + +/** + * @dev Interface of the ERC165 standard, as defined in the + * https://eips.ethereum.org/EIPS/eip-165[EIP]. + * + * Implementers can declare support of contract interfaces, which can then be + * queried by others ({ERC165Checker}). + * + * For an implementation, see {ERC165}. + */ +interface IERC165 { + /** + * @dev Returns true if this contract implements the interface defined by + * `interfaceId`. See the corresponding + * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] + * to learn more about how these ids are created. + * + * This function call must use less than 30 000 gas. + */ + function supportsInterface(bytes4 interfaceId) external view returns (bool); +} diff --git a/packages/arb-bridge-peripherals/test/canonicalBridge.l1.ts b/packages/arb-bridge-peripherals/test/canonicalBridge.l1.ts index ad0cea336a..add05b4388 100644 --- a/packages/arb-bridge-peripherals/test/canonicalBridge.l1.ts +++ b/packages/arb-bridge-peripherals/test/canonicalBridge.l1.ts @@ -276,4 +276,14 @@ describe('Bridge peripherals layer 1', () => { const escrowedTokens = await token.balanceOf(l1ERC20Gateway.address) assert.equal(escrowedTokens.toNumber(), tokenAmount, 'Tokens not escrowed') }) + + it('should support ERC165 interface', async function () { + expect(await testBridge.supportsInterface('0x01ffc9a7')).is.true + expect(await testBridge.supportsInterface('0xffffffff')).is.false + }) + + it('should support outboundTransferCustomRefund interface', async function () { + // 4fb1a07b => outboundTransferCustomRefund(address,address,address,uint256,uint256,uint256,bytes) + expect(await testBridge.supportsInterface('0x4fb1a07b')).is.true + }) }) diff --git a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts index 18020286a2..15dcae2926 100644 --- a/packages/arb-bridge-peripherals/test/customGateway.e2e.ts +++ b/packages/arb-bridge-peripherals/test/customGateway.e2e.ts @@ -428,4 +428,14 @@ describe('Bridge peripherals end-to-end custom gateway', () => { // 'Tokens not escrowed' // ) }) + + it('should support ERC165 interface in L1 bridges', async function () { + expect(await l1TestBridge.supportsInterface('0x01ffc9a7')).is.true + expect(await l1TestBridge.supportsInterface('0xffffffff')).is.false + }) + + it('should support outboundTransferCustomRefund interface', async function () { + // 4fb1a07b => outboundTransferCustomRefund(address,address,address,uint256,uint256,uint256,bytes) + expect(await l1TestBridge.supportsInterface('0x4fb1a07b')).is.true + }) }) diff --git a/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts b/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts index 102e3636ac..834cb0611d 100644 --- a/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts +++ b/packages/arb-bridge-peripherals/test/gatewayRouter.l1.ts @@ -205,4 +205,14 @@ describe('Bridge peripherals layer 1', () => { 'Invalid callValueRefundAddress address' ) }) + + it('should support ERC165 interface', async function () { + expect(await testBridge.supportsInterface('0x01ffc9a7')).is.true + expect(await testBridge.supportsInterface('0xffffffff')).is.false + }) + + it('should support outboundTransferCustomRefund interface', async function () { + // 4fb1a07b => outboundTransferCustomRefund(address,address,address,uint256,uint256,uint256,bytes) + expect(await testBridge.supportsInterface('0x4fb1a07b')).is.true + }) }) diff --git a/packages/arb-bridge-peripherals/test/wethBridge.l1.ts b/packages/arb-bridge-peripherals/test/wethBridge.l1.ts index f5a9d4014b..2810559e11 100644 --- a/packages/arb-bridge-peripherals/test/wethBridge.l1.ts +++ b/packages/arb-bridge-peripherals/test/wethBridge.l1.ts @@ -343,4 +343,14 @@ describe('Bridge peripherals layer 1', () => { const escrowedWeth = await weth.balanceOf(l1WethGateway.address) assert.equal(escrowedWeth.toNumber(), 0, 'Weth should not be escrowed') }) + + it('should support ERC165 interface', async function () { + expect(await testBridge.supportsInterface('0x01ffc9a7')).is.true + expect(await testBridge.supportsInterface('0xffffffff')).is.false + }) + + it('should support outboundTransferCustomRefund interface', async function () { + // 4fb1a07b => outboundTransferCustomRefund(address,address,address,uint256,uint256,uint256,bytes) + expect(await testBridge.supportsInterface('0x4fb1a07b')).is.true + }) }) From afa5ff4e223582a9ee7f5583233e14b4c386eadd Mon Sep 17 00:00:00 2001 From: fredlacs <32464905+fredlacs@users.noreply.github.com> Date: Mon, 25 Jul 2022 08:49:15 +0100 Subject: [PATCH 066/128] refactor custom refund entrypoint to only be available in L1 (#2376) * refactor custom refund entrypoint only available in L1 * cleanup interface * fix: remove IERC165 from IERC721.sol * test: new interfaces for compatibility Co-authored-by: gzeon <95478735+gzeoneth@users.noreply.github.com> --- .../contracts/interfaces/IERC721.sol | 10 -- .../arbitrum/gateway/L2ArbitrumGateway.sol | 12 --- .../ethereum/gateway/IL1ArbitrumGateway.sol | 56 +++++++++++ .../ethereum/gateway/IL1GatewayRouter.sol | 93 +++++++++++++++++++ .../ethereum/gateway/L1ArbitrumGateway.sol | 16 +++- .../ethereum/gateway/L1GatewayRouter.sol | 63 ++++++++----- .../libraries/gateway/GatewayRouter.sol | 40 -------- .../libraries/gateway/ITokenGateway.sol | 10 -- .../test/InterfaceCompatibilityTester.sol | 3 + 9 files changed, 206 insertions(+), 97 deletions(-) create mode 100644 packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/IL1ArbitrumGateway.sol create mode 100644 packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/IL1GatewayRouter.sol diff --git a/packages/arb-bridge-eth/contracts/interfaces/IERC721.sol b/packages/arb-bridge-eth/contracts/interfaces/IERC721.sol index a2b1f259ce..76374217f9 100644 --- a/packages/arb-bridge-eth/contracts/interfaces/IERC721.sol +++ b/packages/arb-bridge-eth/contracts/interfaces/IERC721.sol @@ -114,13 +114,3 @@ interface IERC721 { /// @return True if `_operator` is an approved operator for `_owner`, false otherwise function isApprovedForAll(address _owner, address _operator) external view returns (bool); } - -interface IERC165 { - /// @notice Query if a contract implements an interface - /// @param interfaceID The interface identifier, as specified in ERC-165 - /// @dev Interface identification is specified in ERC-165. This function - /// uses less than 30,000 gas. - /// @return `true` if the contract implements `interfaceID` and - /// `interfaceID` is not 0xffffffff, `false` otherwise - function supportsInterface(bytes4 interfaceID) external view returns (bool); -} diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol index 1392f13083..ecdbdf808f 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2ArbitrumGateway.sol @@ -123,18 +123,6 @@ abstract contract L2ArbitrumGateway is L2ArbitrumMessenger, TokenGateway { return outboundTransfer(_l1Token, _to, _amount, 0, 0, _data); } - function outboundTransferCustomRefund( - address _l1Token, - address _to, - address, /* _refundTo */ - uint256 _amount, - uint256, /* _maxGas */ - uint256, /* _gasPriceBid */ - bytes calldata _data - ) public payable override returns (bytes memory res) { - return outboundTransfer(_l1Token, _to, _amount, 0, 0, _data); - } - /** * @notice Initiates a token withdrawal from Arbitrum to Ethereum * @param _l1Token l1 address of token diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/IL1ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/IL1ArbitrumGateway.sol new file mode 100644 index 0000000000..b2fb406424 --- /dev/null +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/IL1ArbitrumGateway.sol @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: Apache-2.0 + +/* + * Copyright 2020, Offchain Labs, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// solhint-disable-next-line compiler-version +pragma solidity >=0.6.9 <0.9.0; + +import "../../libraries/gateway/ITokenGateway.sol"; +import "../../libraries/IERC165.sol"; + +/** + * @title Common interface for gatways on L1 messaging to Arbitrum. + */ +interface IL1ArbitrumGateway is ITokenGateway, IERC165 { + /** + * @notice Deposit ERC20 token from Ethereum into Arbitrum. If L2 side hasn't been deployed yet, includes name/symbol/decimals data for initial L2 deploy. Initiate by GatewayRouter. + * @dev L2 address alias will not be applied to the following types of addresses on L1: + * - an externally-owned account + * - a contract in construction + * - an address where a contract will be created + * - an address where a contract lived, but was destroyed + * @param _l1Token L1 address of ERC20 + * @param _refundTo Account, or its L2 alias if it have code in L1, to be credited with excess gas refund in L2 + * @param _to Account to be credited with the tokens in the L2 (can be the user's L2 account or a contract), not subject to L2 aliasing + This account, or its L2 alias if it have code in L1, will also be able to cancel the retryable ticket and receive callvalue refund + * @param _amount Token Amount + * @param _maxGas Max gas deducted from user's L2 balance to cover L2 execution + * @param _gasPriceBid Gas price for L2 execution + * @param _data encoded data from router and user + * @return res abi encoded inbox sequence number + */ + // * @param maxSubmissionCost Max gas deducted from user's L2 balance to cover base submission fee + function outboundTransferCustomRefund( + address _l1Token, + address _refundTo, + address _to, + uint256 _amount, + uint256 _maxGas, + uint256 _gasPriceBid, + bytes calldata _data + ) external payable returns (bytes memory); +} diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/IL1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/IL1GatewayRouter.sol new file mode 100644 index 0000000000..690e2ad31b --- /dev/null +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/IL1GatewayRouter.sol @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: Apache-2.0 + +/* + * Copyright 2020, Offchain Labs, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// solhint-disable-next-line compiler-version +pragma solidity >=0.6.9 <0.9.0; + +import "../../libraries/gateway/ITokenGateway.sol"; +import "../../libraries/IERC165.sol"; + +/** + * @title Handles deposits from Erhereum into Arbitrum. Tokens are routered to their appropriate L1 gateway (Router itself also conforms to the Gateway itnerface). + * @notice Router also serves as an L1-L2 token address oracle. + */ +interface IL1GatewayRouter is ITokenGateway, IERC165 { + /** + * @notice Deposit ERC20 token from Ethereum into Arbitrum using the registered or otherwise default gateway + * @dev Some legacy gateway might not have the outboundTransferCustomRefund method and will revert, in such case use outboundTransfer instead + * L2 address alias will not be applied to the following types of addresses on L1: + * - an externally-owned account + * - a contract in construction + * - an address where a contract will be created + * - an address where a contract lived, but was destroyed + * @param _token L1 address of ERC20 + * @param _refundTo Account, or its L2 alias if it have code in L1, to be credited with excess gas refund in L2 + * @param _to Account to be credited with the tokens in the L2 (can be the user's L2 account or a contract), not subject to L2 aliasing + This account, or its L2 alias if it have code in L1, will also be able to cancel the retryable ticket and receive callvalue refund + * @param _amount Token Amount + * @param _maxGas Max gas deducted from user's L2 balance to cover L2 execution + * @param _gasPriceBid Gas price for L2 execution + * @param _data encoded data from router and user + * @return res abi encoded inbox sequence number + */ + function outboundTransferCustomRefund( + address _token, + address _refundTo, + address _to, + uint256 _amount, + uint256 _maxGas, + uint256 _gasPriceBid, + bytes calldata _data + ) external payable returns (bytes memory); + + /** + * @notice Allows L1 Token contract to trustlessly register its gateway. + * @param _gateway l1 gateway address + * @param _maxGas max gas for L2 retryable exrecution + * @param _gasPriceBid gas price for L2 retryable ticket + * @param _maxSubmissionCost base submission cost L2 retryable tick3et + * @param _creditBackAddress address for crediting back overpayment of _maxSubmissionCost + * @return Retryable ticket ID + */ + function setGateway( + address _gateway, + uint256 _maxGas, + uint256 _gasPriceBid, + uint256 _maxSubmissionCost, + address _creditBackAddress + ) external payable returns (uint256); + + /** + * @notice Allows L1 Token contract to trustlessly register its gateway. (other setGateway method allows excess eth recovery from _maxSubmissionCost and is recommended) + * @param _gateway l1 gateway address + * @param _maxGas max gas for L2 retryable exrecution + * @param _gasPriceBid gas price for L2 retryable ticket + * @param _maxSubmissionCost base submission cost L2 retryable tick3et + * @return Retryable ticket ID + */ + function setGateway( + address _gateway, + uint256 _maxGas, + uint256 _gasPriceBid, + uint256 _maxSubmissionCost + ) external payable returns (uint256); + + function owner() external view returns (address); + + function inbox() external view returns (address); +} diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol index cb8a413c8b..2037f9a550 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol @@ -30,13 +30,19 @@ import "arb-bridge-eth/contracts/libraries/ProxyUtil.sol"; import "../L1ArbitrumMessenger.sol"; import "../../libraries/gateway/GatewayMessageHandler.sol"; import "../../libraries/gateway/TokenGateway.sol"; +import "./IL1ArbitrumGateway.sol"; import "../../libraries/ITransferAndCall.sol"; import "../../libraries/ERC165.sol"; /** * @title Common interface for gatways on L1 messaging to Arbitrum. */ -abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway, ERC165 { +abstract contract L1ArbitrumGateway is + L1ArbitrumMessenger, + TokenGateway, + ERC165, + IL1ArbitrumGateway +{ using SafeERC20 for IERC20; using Address for address; @@ -323,7 +329,13 @@ abstract contract L1ArbitrumGateway is L1ArbitrumMessenger, TokenGateway, ERC165 return outboundCalldata; } - function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { + function supportsInterface(bytes4 interfaceId) + public + view + virtual + override(ERC165, IERC165) + returns (bool) + { // registering interfaces that is added after arb-bridge-peripherals >1.0.11 // using function selector instead of single function interfaces to reduce bloat return diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol index c5236fff48..53dc73aa46 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol @@ -25,14 +25,22 @@ import "../L1ArbitrumMessenger.sol"; import "../../libraries/gateway/GatewayRouter.sol"; import "../../arbitrum/gateway/L2GatewayRouter.sol"; import "../../libraries/ERC165.sol"; +import "./IL1GatewayRouter.sol"; +import "./IL1ArbitrumGateway.sol"; /** * @title Handles deposits from Erhereum into Arbitrum. Tokens are routered to their appropriate L1 gateway (Router itself also conforms to the Gateway itnerface). * @notice Router also serves as an L1-L2 token address oracle. */ -contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRouter, ERC165 { - address public owner; - address public inbox; +contract L1GatewayRouter is + WhitelistConsumer, + L1ArbitrumMessenger, + GatewayRouter, + ERC165, + IL1GatewayRouter +{ + address public override owner; + address public override inbox; modifier onlyOwner() { require(msg.sender == owner, "ONLY_OWNER"); @@ -145,11 +153,10 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute /** * @notice Allows L1 Token contract to trustlessly register its gateway. (other setGateway method allows excess eth recovery from _maxSubmissionCost and is recommended) - * @param _gateway l1 gateway address - * @param _maxGas max gas for L2 retryable exrecution - * @param _gasPriceBid gas price for L2 retryable ticket - * @param _maxSubmissionCost base submission cost L2 retryable tick3et + * @param _maxGas max gas for L2 retryable exrecution + * @param _gasPriceBid gas price for L2 retryable ticket + * @param _maxSubmissionCost base submission cost L2 retryable tick3et * @return Retryable ticket ID */ function setGateway( @@ -157,18 +164,18 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute uint256 _maxGas, uint256 _gasPriceBid, uint256 _maxSubmissionCost - ) external payable returns (uint256) { + ) external payable override returns (uint256) { return setGateway(_gateway, _maxGas, _gasPriceBid, _maxSubmissionCost, msg.sender); } /** * @notice Allows L1 Token contract to trustlessly register its gateway. - * param _gateway l1 gateway address - * param _maxGas max gas for L2 retryable exrecution - * param _gasPriceBid gas price for L2 retryable ticket - * param _maxSubmissionCost base submission cost L2 retryable tick3et - * param _creditBackAddress address for crediting back overpayment of _maxSubmissionCost - * return Retryable ticket ID + * @param _gateway l1 gateway address + * @param _maxGas max gas for L2 retryable exrecution + * @param _gasPriceBid gas price for L2 retryable ticket + * @param _maxSubmissionCost base submission cost L2 retryable tick3et + * @param _creditBackAddress address for crediting back overpayment of _maxSubmissionCost + * @return Retryable ticket ID */ function setGateway( address _gateway, @@ -176,7 +183,7 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute uint256 _gasPriceBid, uint256 _maxSubmissionCost, address _creditBackAddress - ) public payable returns (uint256) { + ) public payable override returns (uint256) { require( ArbitrumEnabledToken(msg.sender).isArbitrumEnabled() == uint8(0xa4b1), "NOT_ARB_ENABLED" @@ -244,7 +251,7 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute uint256 _maxGas, uint256 _gasPriceBid, bytes calldata _data - ) public payable override returns (bytes memory) { + ) public payable override(GatewayRouter, ITokenGateway) returns (bytes memory) { _outboundTransferChecks(_maxGas, _gasPriceBid, _data); return super.outboundTransfer(_token, _to, _amount, _maxGas, _gasPriceBid, _data); @@ -276,20 +283,24 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute uint256 _maxGas, uint256 _gasPriceBid, bytes calldata _data - ) public payable override returns (bytes memory) { - // _refundTo will be rewritten to L2 alias if the address have code in L1 - require(_refundTo != address(0), "INVALID_REFUND_ADDR"); - _outboundTransferChecks(_maxGas, _gasPriceBid, _data); + ) public payable virtual override returns (bytes memory) { + address gateway = getGateway(_token); + bytes memory gatewayData = GatewayMessageHandler.encodeFromRouterToGateway( + msg.sender, + _data + ); + emit TransferRouted(_token, msg.sender, _to, gateway); + // here we use `IL1ArbitrumGateway` since we don't assume all ITokenGateway implements `outboundTransferCustomRefund` return - super.outboundTransferCustomRefund( + IL1ArbitrumGateway(gateway).outboundTransferCustomRefund{ value: msg.value }( _token, _refundTo, _to, _amount, _maxGas, _gasPriceBid, - _data + gatewayData ); } @@ -299,7 +310,13 @@ contract L1GatewayRouter is WhitelistConsumer, L1ArbitrumMessenger, GatewayRoute _; } - function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { + function supportsInterface(bytes4 interfaceId) + public + view + virtual + override(ERC165, IERC165) + returns (bool) + { // registering interfaces that is added after arb-bridge-peripherals >1.0.11 // using function selector instead of single function interfaces to reduce bloat return diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol index 960f7e7e65..8228cb9e2c 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol @@ -103,46 +103,6 @@ abstract contract GatewayRouter is TokenGateway { ); } - /** - * @notice Bridge ERC20 token using the registered or otherwise default gateway - * @dev Some legacy gateway might not have the outboundTransferCustomRefund method and will revert, in such case use outboundTransfer instead - * @param _token L1 address of ERC20 - * @param _refundTo account to be credited with the excess gas refund in the L2, subject to L2 alias rewrite if its a L1 contract - * @param _to account to be credited with the tokens in the L2 (can be the user's L2 account or a contract) - * @param _amount Token Amount - * @param _maxGas Max gas deducted from user's L2 balance to cover L2 execution - * @param _gasPriceBid Gas price for L2 execution - * @param _data encoded data from router and user - * @return res abi encoded inbox sequence number - */ - function outboundTransferCustomRefund( - address _token, - address _refundTo, - address _to, - uint256 _amount, - uint256 _maxGas, - uint256 _gasPriceBid, - bytes calldata _data - ) public payable virtual override returns (bytes memory) { - address gateway = getGateway(_token); - bytes memory gatewayData = GatewayMessageHandler.encodeFromRouterToGateway( - msg.sender, - _data - ); - - emit TransferRouted(_token, msg.sender, _to, gateway); - return - ITokenGateway(gateway).outboundTransferCustomRefund{ value: msg.value }( - _token, - _refundTo, - _to, - _amount, - _maxGas, - _gasPriceBid, - gatewayData - ); - } - function getOutboundCalldata( address _token, address _from, diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol index 4edd4c4acc..6c3a094905 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/ITokenGateway.sol @@ -49,16 +49,6 @@ interface ITokenGateway { bytes calldata _data ) external payable returns (bytes memory); - function outboundTransferCustomRefund( - address _token, - address _refundTo, - address _to, - uint256 _amount, - uint256 _maxGas, - uint256 _gasPriceBid, - bytes calldata _data - ) external payable returns (bytes memory); - function finalizeInboundTransfer( address _token, address _from, diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/InterfaceCompatibilityTester.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/InterfaceCompatibilityTester.sol index b0f4138d74..38e4de8709 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/InterfaceCompatibilityTester.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/InterfaceCompatibilityTester.sol @@ -38,6 +38,9 @@ import "arb-bridge-eth/contracts/validator/IGasRefunder.sol"; import "../arbitrum/IArbToken.sol"; import "../ethereum/ICustomToken.sol"; +import "../ethereum/gateway/IL1ArbitrumGateway.sol"; +import "../ethereum/gateway/IL1GatewayRouter.sol"; import "../libraries/IWETH9.sol"; +import "../libraries/IERC165.sol"; import "../libraries/gateway/ICustomGateway.sol"; import "../libraries/gateway/ITokenGateway.sol"; From 28cda54292bdabd58572fbdb3ab4f9ddddbdd1a5 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Mon, 25 Jul 2022 20:18:07 +0800 Subject: [PATCH 067/128] chore: bump undici to 5.8.0 --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 5697cda062..12955b0e05 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ }, "homepage": "https://offchainlabs.com/", "scripts": { - "audit:ci": "audit-ci -l -a 1067409 1067487 1067486 1081522", + "audit:ci": "audit-ci -l -a 1067409 1067487 1067486", "install:deps": "./scripts/install-deps", "install:validator": "./scripts/install-validator", "update:abi": "yarn go:generate", diff --git a/yarn.lock b/yarn.lock index a08de6784c..38ac0d8f23 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10534,9 +10534,9 @@ underscore@1.9.1: integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== undici@^5.4.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.7.0.tgz#979f89229c01505573cb274d0e11ea8d82b4004f" - integrity sha512-ORgxwDkiPS+gK2VxE7iyVeR7JliVn5DqhZ4LgQqYLBXsuK+lwOEmnJ66dhvlpLM0tC3fC7eYF1Bti2frbw2eAA== + version "5.8.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.8.0.tgz#dec9a8ccd90e5a1d81d43c0eab6503146d649a4f" + integrity sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q== union-value@^1.0.0: version "1.0.1" From a9d35ed4b60300de371c48a4d9086ead3ad5cc48 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Tue, 26 Jul 2022 19:39:45 +0800 Subject: [PATCH 068/128] refactor: remove virtual keywords --- .../contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol | 2 +- .../contracts/tokenbridge/ethereum/gateway/L1ERC20Gateway.sol | 2 +- .../contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol index acea1b689e..0309d05c83 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1CustomGateway.sol @@ -87,7 +87,7 @@ contract L1CustomGateway is L1ArbitrumExtendedGateway, ICustomGateway { address _to, uint256 _amount, bytes calldata _data - ) public payable virtual override nonReentrant { + ) public payable override nonReentrant { // the superclass checks onlyCounterpartGateway super.finalizeInboundTransfer(_token, _from, _to, _amount, _data); } diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ERC20Gateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ERC20Gateway.sol index d1cf72c29f..ebae98fe86 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ERC20Gateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ERC20Gateway.sol @@ -81,7 +81,7 @@ contract L1ERC20Gateway is L1ArbitrumExtendedGateway { address _to, uint256 _amount, bytes calldata _data - ) public payable virtual override nonReentrant { + ) public payable override nonReentrant { // the superclass checks onlyCounterpartGateway super.finalizeInboundTransfer(_token, _from, _to, _amount, _data); } diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol index 53dc73aa46..4035f1d277 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1GatewayRouter.sol @@ -283,7 +283,7 @@ contract L1GatewayRouter is uint256 _maxGas, uint256 _gasPriceBid, bytes calldata _data - ) public payable virtual override returns (bytes memory) { + ) public payable override returns (bytes memory) { address gateway = getGateway(_token); bytes memory gatewayData = GatewayMessageHandler.encodeFromRouterToGateway( msg.sender, @@ -313,7 +313,6 @@ contract L1GatewayRouter is function supportsInterface(bytes4 interfaceId) public view - virtual override(ERC165, IERC165) returns (bool) { From a3e71ea5d3bd1bd72f2588b8ba5f421d93709ccc Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Wed, 27 Jul 2022 17:25:24 -0700 Subject: [PATCH 069/128] Improve error message on execution cursor error --- packages/arb-avm-cpp/cavm/carbcore.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/arb-avm-cpp/cavm/carbcore.cpp b/packages/arb-avm-cpp/cavm/carbcore.cpp index a568243bc3..979e81f38a 100644 --- a/packages/arb-avm-cpp/cavm/carbcore.cpp +++ b/packages/arb-avm-cpp/cavm/carbcore.cpp @@ -627,8 +627,8 @@ CExecutionCursorResult arbCoreGetExecutionCursorAtEndOfBlock( return {nullptr, 1}; } - std::cerr << "Failed to load machine for sideload " - << status.ToString() << std::endl; + std::cerr << "Failed to load machine for sideload at block: " + << block_number << ", " << status.ToString() << std::endl; return {nullptr, 0}; } From e774369a0e76ca5cece16fc6451e1274a2900a39 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Thu, 28 Jul 2022 00:16:34 +0800 Subject: [PATCH 070/128] Update Useful_Addresses.md --- docs/Useful_Addresses.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Useful_Addresses.md b/docs/Useful_Addresses.md index 80181f236e..c6577b78b4 100644 --- a/docs/Useful_Addresses.md +++ b/docs/Useful_Addresses.md @@ -45,11 +45,11 @@ _Users should only interact with the token bridge via dapp interfaces like https | L1 ERC20 Gateway | [0xa3A7B6F88361F48403514059F1F16C8E78d60EeC](https://etherscan.io/address/0xa3A7B6F88361F48403514059F1F16C8E78d60EeC) | [0xB2535b988dcE19f9D71dfB22dB6da744aCac21bf](https://etherscan.io/address/0xB2535b988dcE19f9D71dfB22dB6da744aCac21bf) | [0x91169Dbb45e6804743F94609De50D511C437572E](https://rinkeby.etherscan.io/address/0x91169Dbb45e6804743F94609De50D511C437572E) | [0x715D99480b77A8d9D603638e593a539E21345FdF](https://goerli.etherscan.io/address/0x715D99480b77A8d9D603638e593a539E21345FdF) | | L2 ERC20 Gateway | [0x09e9222E96E7B4AE2a407B98d48e330053351EEe](https://arbiscan.io/address/0x09e9222E96E7B4AE2a407B98d48e330053351EEe) | [0xcF9bAb7e53DDe48A6DC4f286CB14e05298799257](https://nova.arbitrum.io/rpc/address/0xcF9bAb7e53DDe48A6DC4f286CB14e05298799257) | [0x195C107F3F75c4C93Eba7d9a1312F19305d6375f](https://testnet.arbiscan.io/address/0x195C107F3F75c4C93Eba7d9a1312F19305d6375f) | [0x2eC7Bc552CE8E51f098325D2FcF0d3b9d3d2A9a2](https://goerli-rollup-explorer.arbitrum.io/address/0x2eC7Bc552CE8E51f098325D2FcF0d3b9d3d2A9a2) | | L1 Arb-Custom Gateway | [0xcEe284F754E854890e311e3280b767F80797180d](https://etherscan.io/address/0xcEe284F754E854890e311e3280b767F80797180d) | [0x23122da8C581AA7E0d07A36Ff1f16F799650232f](https://etherscan.io/address/0x23122da8C581AA7E0d07A36Ff1f16F799650232f) | [0x917dc9a69F65dC3082D518192cd3725E1Fa96cA2](https://rinkeby.etherscan.io/address/0x917dc9a69F65dC3082D518192cd3725E1Fa96cA2) | [0x9fDD1C4E4AA24EEc1d913FABea925594a20d43C7](https://goerli.etherscan.io/address/0x9fDD1C4E4AA24EEc1d913FABea925594a20d43C7) | -| L2 Arb-Custom Gateway | [0x096760F208390250649E3e8763348E783AEF5562](https://arbiscan.io/address/0x096760F208390250649E3e8763348E783AEF5562) | [0xbf544970E6BD77b21C6492C281AB60d0770451F4](https://nova.arbitrum.io/rpc/address/0xbf544970E6BD77b21C6492C281AB60d0770451F4) | [0x9b014455AcC2Fe90c52803849d0002aeEC184a06](https://arbiscan.io/address/0x9b014455AcC2Fe90c52803849d0002aeEC184a06) | [0x8b6990830cF135318f75182487A4D7698549C717](https://goerli-rollup-explorer.arbitrum.io/address/0x8b6990830cF135318f75182487A4D7698549C717) | +| L2 Arb-Custom Gateway | [0x096760F208390250649E3e8763348E783AEF5562](https://arbiscan.io/address/0x096760F208390250649E3e8763348E783AEF5562) | [0xbf544970E6BD77b21C6492C281AB60d0770451F4](https://nova.arbitrum.io/rpc/address/0xbf544970E6BD77b21C6492C281AB60d0770451F4) | [0x9b014455AcC2Fe90c52803849d0002aeEC184a06](https://testnet.arbiscan.io/address/0x9b014455AcC2Fe90c52803849d0002aeEC184a06) | [0x8b6990830cF135318f75182487A4D7698549C717](https://goerli-rollup-explorer.arbitrum.io/address/0x8b6990830cF135318f75182487A4D7698549C717) | | L1 Weth Gateway | [0xd92023E9d9911199a6711321D1277285e6d4e2db](https://etherscan.io/address/0xd92023E9d9911199a6711321D1277285e6d4e2db) | [0xE4E2121b479017955Be0b175305B35f312330BaE](https://etherscan.io/address/0xE4E2121b479017955Be0b175305B35f312330BaE) | [0x81d1a19cf7071732D4313c75dE8DD5b8CF697eFD](https://rinkeby.etherscan.io/address/0x81d1a19cf7071732D4313c75dE8DD5b8CF697eFD) | [0x6e244cD02BBB8a6dbd7F626f05B2ef82151Ab502](https://goerli.etherscan.io/address/0x6e244cD02BBB8a6dbd7F626f05B2ef82151Ab502) | | L2 Weth Gateway | [0x6c411aD3E74De3E7Bd422b94A27770f5B86C623B](https://arbiscan.io/address/0x6c411aD3E74De3E7Bd422b94A27770f5B86C623B) | [0x7626841cB6113412F9c88D3ADC720C9FAC88D9eD](https://nova.arbitrum.io/rpc/address/0x7626841cB6113412F9c88D3ADC720C9FAC88D9eD) | [0xf94bc045c4E926CC0b34e8D1c41Cd7a043304ac9](https://testnet.arbiscan.io/address/0xf94bc045c4E926CC0b34e8D1c41Cd7a043304ac9) | [0xf9F2e89c8347BD96742Cc07095dee490e64301d6](https://goerli-rollup-explorer.arbitrum.io/address/0xf9F2e89c8347BD96742Cc07095dee490e64301d6) | | L1 Weth | [0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2) | [0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2](https://etherscan.io/address/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2) | [0xc778417E063141139Fce010982780140Aa0cD5Ab](https://rinkeby.etherscan.io/address/0xc778417E063141139Fce010982780140Aa0cD5Ab) | [0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6](https://goerli.etherscan.io/address/0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6) | -| L2 Weth | [0x82aF49447D8a07e3bd95BD0d56f35241523fBab1](https://arbiscan.io/address/0x82aF49447D8a07e3bd95BD0d56f35241523fBab1) | [0x722E8BdD2ce80A4422E880164f2079488e115365](https://nova.arbitrum.io/rpc/address/0x722E8BdD2ce80A4422E880164f2079488e115365) | [0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681](https://arbiscan.io/address/0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681) | [0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3](https://goerli-rollup-explorer.arbitrum.io/address/0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3) | +| L2 Weth | [0x82aF49447D8a07e3bd95BD0d56f35241523fBab1](https://arbiscan.io/address/0x82aF49447D8a07e3bd95BD0d56f35241523fBab1) | [0x722E8BdD2ce80A4422E880164f2079488e115365](https://nova.arbitrum.io/rpc/address/0x722E8BdD2ce80A4422E880164f2079488e115365) | [0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681](https://testnet.arbiscan.io/address/0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681) | [0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3](https://goerli-rollup-explorer.arbitrum.io/address/0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3) | #### Third party gateways @@ -88,4 +88,4 @@ These are the addresses of some other gateways that have been deployed and integ | ------------ | -------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | L2 Multicall | [0x7ecfbaa8742fdf5756dac92fbc8b90a19b8815bf](https://arbiscan.io/address/0x7ecfbaa8742fdf5756dac92fbc8b90a19b8815bf) | [0x5e1eE626420A354BbC9a95FeA1BAd4492e3bcB86](https://nova.arbitrum.io/rpc/address/0x5e1eE626420A354BbC9a95FeA1BAd4492e3bcB86) | [0x7ecfbaa8742fdf5756dac92fbc8b90a19b8815bf](https://testnet.arbiscan.io/address/0x7ecfbaa8742fdf5756dac92fbc8b90a19b8815bf) | [0x108B25170319f38DbED14cA9716C54E5D1FF4623](https://goerli-rollup-explorer.arbitrum.io/address/0x108B25170319f38DbED14cA9716C54E5D1FF4623) | - \ No newline at end of file + From 8368c7f767a4dbf0c4e0ffac50f8feaa6aebe849 Mon Sep 17 00:00:00 2001 From: dzgoldman Date: Thu, 28 Jul 2022 13:45:37 -0400 Subject: [PATCH 071/128] update rinkarby --- docs/Public_Chains.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Public_Chains.md b/docs/Public_Chains.md index e71bf68bc5..faad94e944 100644 --- a/docs/Public_Chains.md +++ b/docs/Public_Chains.md @@ -11,7 +11,7 @@ The following is a comprehensive list of all of the currently live Arbitrum chai | ------------------------------- | ------ | ------- | ------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | --------------- | ------------------------------------------------------------------------------------ | | Arbitrum One | 42161 | Mainnet | Ethereum | Classic Rollup | [arb1.arbitrum.io/rpc](https://arb1.arbitrum.io/rpc) [arbitrum-mainnet.infura.io/v3/-ID](https://arbitrum-mainnet.infura.io/v3/YOUR-PROJECT-ID) [arb-mainnet.g.alchemy.com/v2/-KEY](https://arb-mainnet.g.alchemy.com/v2/your-api-key) | [arbiscan.io](https://arbiscan.io/) [explorer.arbitrum.io/](https://explorer.arbitrum.io/) | ETH | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | | Arbitrum Nova | 42170 | Mainnet | Ethereum | Nitro AnyTrust | [nova.arbitrum.io/rpc](https://nova.arbitrum.io/rpc) | [nova-explorer.arbitrum.io/](https://nova-explorer.arbitrum.io/) | ETH | [retryable-tx-panel-nitro.arbitrum.io](http://retryable-tx-panel-nitro.arbitrum.io/) | -| RinkArby | 421611 | Testnet | Rinkeby | Classic Rollup | [rinkeby.arbitrum.io/rpc](https://rinkeby.arbitrum.io/rpc) | [testnet.arbiscan.io](https://testnet.arbiscan.io/) [rinkeby-explorer.arbitrum.io](https://rinkeby-explorer.arbitrum.io/) | RinkebyETH | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | +| RinkArby | 421611 | Testnet | Rinkeby | Nitro Rollup | [rinkeby.arbitrum.io/rpc](https://rinkeby.arbitrum.io/rpc) | [testnet.arbiscan.io](https://testnet.arbiscan.io/) [rinkeby-explorer.arbitrum.io](https://rinkeby-explorer.arbitrum.io/) | RinkebyETH | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | | Nitro Goerli Rollup Testnet | 421613 | Testnet | Goerli | Nitro Rollup | [goerli-rollup.arbitrum.io/rpc](https://goerli-rollup.arbitrum.io/rpc) | [goerli-rollup-explorer.arbitrum.io](https://goerli-rollup-explorer.arbitrum.io/) | GoerliETH | [retryable-tx-panel-nitro.arbitrum.io](http://retryable-tx-panel-nitro.arbitrum.io/) | | Nitro Devnet [Deprecated Soon!] | 421612 | Testnet | Goerli | Nitro Rollup | [nitro-devnet.arbitrum.io/rpc](https://nitro-devnet.arbitrum.io/rpc) | [nitro-devnet-explorer.arbitrum.io](https://nitro-devnet-explorer.arbitrum.io/) | GoerliETH | [retryable-tx-panel-nitro.arbitrum.io](http://retryable-tx-panel-nitro.arbitrum.io/) | @@ -24,7 +24,7 @@ For a list of useful contract addresses, see [here](Useful_Addresses.md). **Arbitrum Nova**: Arbitrum Nova is the first mainnet [AnyTrust](AnyTrust.md) chain; it is currently open for [developer access](https://medium.com/offchainlabs/introducing-nova-arbitrum-anytrust-mainnet-is-open-for-developers-9a54692f345e). -**RinkArby**: RinkArby is the longest running Arbitrum testnet. It runs on the classic stack, and will soon be upgraded to use the Nitro stack. Rinkarby will be deprecated [when Rinkeby itself gets deprecated](https://blog.ethereum.org/2022/06/21/testnet-deprecation/); plan accordingly! +**RinkArby**: RinkArby is the longest running Arbitrum testnet. It previously ran on the classic stack, but at block 7/28/2022 it was migrated use the Nitro stack! Rinkarby will be deprecated [when Rinkeby itself gets deprecated](https://blog.ethereum.org/2022/06/21/testnet-deprecation/); plan accordingly! **Nitro Goerli Rollup Testnet**: This testnet (421613) uses the Nitro rollup tech stack; it is expected to be the primary, stable Arbitrum testnet moving forward. From 11a563dd43286f9c1e4d2558e7bd741cfd5376b2 Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Thu, 28 Jul 2022 10:49:58 -0700 Subject: [PATCH 072/128] Update rinkeby classic instructions --- docs/Running_Node.md | 11 ++++------- docs/Running_Rinkeby_Nitro_Node.md | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/docs/Running_Node.md b/docs/Running_Node.md index 8b19af289b..11ba4c8f2b 100644 --- a/docs/Running_Node.md +++ b/docs/Running_Node.md @@ -4,7 +4,7 @@ title: Running full node for Arbitrum One sidebar_label: Running a Node --- -Note: On Thursday July 28th, the Arbitrum Rinkeby testnet will be upgrade to Nitro, and the classic node will only be useful for archive requests on Rinkeby. Mainnet Nitro upgrade date will be announced at a later date +Note: The Arbitrum Rinkeby testnet has been upgraded to Nitro, and the classic node is only useful for archive requests for pre-Nitro blocks on Rinkeby. Mainnet Nitro upgrade date will be announced at a later date Note: If you’re interested in accessing the Arbitrum network but you don’t want to setup your own node, see our [Node Providers](https://developer.offchainlabs.com/docs/node_providers) to get RPC access to fully-managed nodes hosted by one of our partners! @@ -30,11 +30,7 @@ Note: If you’re interested in accessing the Arbitrum network but you don’t w ``` docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.0-f4bbe91 --l1.url https://l1-node:8545 ``` -- Here is an example of how to run arb-node for rinkeby before July 28th: - ``` - docker run --rm -it -v /some/local/dir/arbitrum-rinkeby/:/home/user/.arbitrum/rinkeby -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.0-f4bbe91 --l1.url https://l1-rinkeby-node:8545 - ``` -- Here is an example of how to run arb-node for rinkeby after July 28th, disabling feed to reduce log error messages (only good for archive requests on pre-Nitro blocks, so probably want to enable archive as well): +- Here is an example of how to run arb-node for rinkeby, disabling feed to reduce log error messages (only good for archive requests on pre-Nitro blocks, so probably want to enable archive as well): ``` docker run --rm -it -v /some/local/dir/arbitrum-rinkeby/:/home/user/.arbitrum/rinkeby -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.0-f4bbe91 --l1.url https://l1-rinkeby-node:8545 --feed.input.url="" ``` @@ -56,7 +52,7 @@ Note: If you’re interested in accessing the Arbitrum network but you don’t w - `--feed.input.url=` - Will default to `https://arb1.arbitrum.io/feed` or `https://rinkeby.arbitrum.io/feed` depending on chain ID reported by ethereum node provided. If running more than a couple nodes, you will want to provide one feed relay per datacenter, see further instructions below. - `--node.forwarder.target=` - - Will default to `https://arb1.arbitrum.io/rpc` or `https://rinkeby.arbitrum.io/rpc` depending on chain ID reported by ethereum node provided. + - Will default to `https://arb1.arbitrum.io/rpc` when chain ID reported by ethereum node is 1 (mainnet), but needs to be manually set to empty string (`""`) for Rinkeby testnet. - `--core.cache.timed-expire` - Defaults to `20m`, or 20 minutes. Age of oldest blocks to hold in cache so that disk lookups are not required - `--node.rpc.max-call-gas` @@ -81,6 +77,7 @@ Note: If you’re interested in accessing the Arbitrum network but you don’t w - When running more than one node, you want to run a single arb-relay which can provide a feed for all your nodes. The arb-relay is in the same docker image. +- Note that rinkeby testnet has been upgraded to Nitro, so rinkeby feed messages cannot be parsed by the classic node and classic relay is not required. - Here is an example of how to run arb-relay for mainnet: ``` docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:9642:9642 --entrypoint /home/user/go/bin/arb-relay offchainlabs/arb-node:v1.4.0-f4bbe91 --feed.input.url wss://arb1.arbitrum.io/feed diff --git a/docs/Running_Rinkeby_Nitro_Node.md b/docs/Running_Rinkeby_Nitro_Node.md index f1ab837e85..1ef69dd839 100644 --- a/docs/Running_Rinkeby_Nitro_Node.md +++ b/docs/Running_Rinkeby_Nitro_Node.md @@ -10,7 +10,7 @@ Note: If you’re interested in accessing the Arbitrum Rinkeby network but you d ### Required Artifacts -- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.6-1ff142d +- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.6-1ff142d` - Rinkeby Nitro Seed Database Snapshot - On Thursday, July 28th the Rinkeby chain will be temporarily offline (approx. 2-4 hours), and Offchain Labs will run through a series of steps to upgrade the Arbitrum Rinkeby testnet to Arbitrum Nitro Rinkeby testnet. During that time, Offchain Labs will convert the Arbitrum Classic database to an Arbitrum Nitro database From 6c2d42e251c764859813db71c774dede3d00a289 Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Thu, 28 Jul 2022 11:29:24 -0700 Subject: [PATCH 073/128] Add link to rinkeby nitro seed database --- docs/Running_Rinkeby_Nitro_Node.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/Running_Rinkeby_Nitro_Node.md b/docs/Running_Rinkeby_Nitro_Node.md index 1ef69dd839..a2c24cc8ef 100644 --- a/docs/Running_Rinkeby_Nitro_Node.md +++ b/docs/Running_Rinkeby_Nitro_Node.md @@ -13,10 +13,8 @@ Note: If you’re interested in accessing the Arbitrum Rinkeby network but you d - Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.6-1ff142d` - Rinkeby Nitro Seed Database Snapshot - - On Thursday, July 28th the Rinkeby chain will be temporarily offline (approx. 2-4 hours), and Offchain Labs will run through a series of steps to upgrade the Arbitrum Rinkeby testnet to Arbitrum Nitro Rinkeby testnet. During that time, Offchain Labs will convert the Arbitrum Classic database to an Arbitrum Nitro database - - The URL to download the seed database will be announced on Discord and placed on this webpage - - If running more than one node, easiest to manually download image and host it locally for your nodes - - Use the parameter `--init.url` to provide the URL to download the Rinkeby seed database from + - Use the parameter `--init.url="https://snapshot.arbitrum.io/rinkeby/nitro.tar"` on first startup to initialize Nitro database + - If running more than one node, easiest to manually download image from https://snapshot.arbitrum.io/rinkeby/nitro.tar and host it locally for your nodes ### Required parameter @@ -52,7 +50,7 @@ Note: If you’re interested in accessing the Arbitrum Rinkeby network but you d ### Optional parameters -- `--init.url=` +- `--init.url="https://snapshot.arbitrum.io/rinkeby/nitro.tar"` - URL to download seed database from. Only needed when starting without database - `--node.rpc.classic-redirect=` - If set, will redirect archive requests for pre-nitro blocks to the designated RPC, which should be an Arbitrum Classic node with archive database From 424a7938b92e375513195ab763bf731e32c867ab Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Thu, 28 Jul 2022 20:26:41 -0700 Subject: [PATCH 074/128] Update nitro docs to use beta.7 --- docs/Running_Goerli_Nitro_Node.md | 8 ++++---- docs/Running_Rinkeby_Nitro_Node.md | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/Running_Goerli_Nitro_Node.md b/docs/Running_Goerli_Nitro_Node.md index 43b80b9162..63fa325cfd 100644 --- a/docs/Running_Goerli_Nitro_Node.md +++ b/docs/Running_Goerli_Nitro_Node.md @@ -8,7 +8,7 @@ Note: If you’re interested in accessing the Arbitrum Goerli network but you do ### Required Artifacts -- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.6-1ff142d` +- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.7-340b812` ### Required parameter @@ -29,7 +29,7 @@ Note: If you’re interested in accessing the Arbitrum Goerli network but you do - Here is an example of how to run nitro-node for goerli: ``` - docker run --rm -it -v /some/local/dir/arbitrum-goerli/:/home/user/.arbitrum/goerli -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.6-1ff142d --l1.url https://l1-goerli-node:8545 --l2.chain-id=421613 + docker run --rm -it -v /some/local/dir/arbitrum-goerli/:/home/user/.arbitrum/goerli -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.7-340b812 --l1.url https://l1-goerli-node:8545 --l2.chain-id=421613 ``` - Note that if you are running L1 node on localhost, you may need to add `--network host` right after `docker run` to use docker host-based networking @@ -70,9 +70,9 @@ Note: If you’re interested in accessing the Arbitrum Goerli network but you do The arb-relay is in the same docker image. - Here is an example of how to run nitro-relay for goerli: ``` - docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.6-1ff142d --node.feed.input.url wss://goerli-rollup.arbitrum.io/feed + docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.7-340b812 --node.feed.input.url wss://goerli-rollup.arbitrum.io/feed ``` - Here is an example of how to run nitro-node for goerli with custom relay: ``` - docker run --rm -it -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.6-1ff142d --l1.url https://l1-goeri-node:8545 --feed.input.url ws://local-relay-address:9642 --l2.chain-id=421613 + docker run --rm -it -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.7-340b812 --l1.url https://l1-goeri-node:8545 --feed.input.url ws://local-relay-address:9642 --l2.chain-id=421613 ``` diff --git a/docs/Running_Rinkeby_Nitro_Node.md b/docs/Running_Rinkeby_Nitro_Node.md index a2c24cc8ef..8b7ed03aa2 100644 --- a/docs/Running_Rinkeby_Nitro_Node.md +++ b/docs/Running_Rinkeby_Nitro_Node.md @@ -10,7 +10,7 @@ Note: If you’re interested in accessing the Arbitrum Rinkeby network but you d ### Required Artifacts -- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.6-1ff142d` +- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.7-340b812` - Rinkeby Nitro Seed Database Snapshot - Use the parameter `--init.url="https://snapshot.arbitrum.io/rinkeby/nitro.tar"` on first startup to initialize Nitro database @@ -35,7 +35,7 @@ Note: If you’re interested in accessing the Arbitrum Rinkeby network but you d - Here is an example of how to run nitro-node for Rinkeby: ``` - docker run --rm -it -v /some/local/dir/rinkeby-nitro/:/home/user/.arbitrum/rinkeby-nitro -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.6-1ff142d --l1.url https://l1-rinkeby-node:8545 --l2.chain-id=421611 + docker run --rm -it -v /some/local/dir/rinkeby-nitro/:/home/user/.arbitrum/rinkeby-nitro -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.7-340b812 --l1.url https://l1-rinkeby-node:8545 --l2.chain-id=421611 ``` - Note that if you are running L1 node on localhost, you may need to add `--network host` right after `docker run` to use docker host-based networking @@ -80,9 +80,9 @@ Note: If you’re interested in accessing the Arbitrum Rinkeby network but you d The arb-relay is in the same docker image. - Here is an example of how to run nitro-relay for Rinkeby: ``` - docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.6-1ff142d --node.feed.input.url wss://rinkeby.arbitrum.io/feed --l2.chain-id=421611 + docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.7-340b812 --node.feed.input.url wss://rinkeby.arbitrum.io/feed --l2.chain-id=421611 ``` - Here is an example of how to run nitro-node for Rinkeby with custom relay: ``` - docker run --rm -it -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.6-1ff142d --l1.url https://l1-goeri-node:8545 --feed.input.url ws://local-relay-address:9642 --l2.chain-id=421611 + docker run --rm -it -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.7-340b812 --l1.url https://l1-goeri-node:8545 --feed.input.url ws://local-relay-address:9642 --l2.chain-id=421611 ``` From 7f20b667d06ee7edf81b54a42c0cae3f3ebe21a1 Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Thu, 28 Jul 2022 22:49:46 -0700 Subject: [PATCH 075/128] Default rinkeby to not connect to sequencer The following settings have new defaults for rinkeby testnet because classic does not connect to nitro sequencer * `--feed.input.url= --node.forwarder.rpc-mode=non-mutating` Setting `feed.input.url` to nothing disables connecting to sequencer feed. Setting `node.forwarder.rpc-mode` to `non-mutating` disables connecting to the sequencer RPC. --- .../arb-rpc-node/aggregator/aggregator.go | 37 +++++++--- .../arb-rpc-node/cmd/arb-node/arb-node.go | 74 ++++++++++--------- .../arb-util/configuration/configuration.go | 5 +- 3 files changed, 68 insertions(+), 48 deletions(-) diff --git a/packages/arb-rpc-node/aggregator/aggregator.go b/packages/arb-rpc-node/aggregator/aggregator.go index 807932aae0..08dc5e52d0 100644 --- a/packages/arb-rpc-node/aggregator/aggregator.go +++ b/packages/arb-rpc-node/aggregator/aggregator.go @@ -65,7 +65,11 @@ func NewServer( // SendTransaction takes a request signed transaction l2message from a Client // and puts it in a queue to be included in the next transaction batch func (m *Server) SendTransaction(ctx context.Context, tx *types.Transaction) error { - return m.batch.SendTransaction(ctx, tx) + if m.batch != nil { + return m.batch.SendTransaction(ctx, tx) + } + + return errors.New("no batcher defined, cannot send transaction") } func (m *Server) GetBlockCount() (uint64, error) { @@ -161,22 +165,35 @@ func (m *Server) LatestSnapshot(ctx context.Context) (*snapshot.Snapshot, error) } func (m *Server) PendingSnapshot(ctx context.Context) (*snapshot.Snapshot, error) { - pending, err := m.batch.PendingSnapshot(ctx) - if err != nil { - return nil, err - } - if pending == nil { - return m.LatestSnapshot(ctx) + if m.batch != nil { + pending, err := m.batch.PendingSnapshot(ctx) + if err != nil { + return nil, err + } + if pending == nil { + return m.LatestSnapshot(ctx) + } + return pending, nil } - return pending, nil + + return nil, errors.New("no batcher defined, cannot generate pending snapshot") } func (m *Server) Aggregator() *common.Address { - return m.batch.Aggregator() + if m.batch != nil { + return m.batch.Aggregator() + } + + return &common.Address{} } func (m *Server) PendingTransactionCount(ctx context.Context, account common.Address) (*uint64, error) { - return m.batch.PendingTransactionCount(ctx, account) + if m.batch != nil { + return m.batch.PendingTransactionCount(ctx, account) + } + + count := uint64(0) + return &count, nil } func (m *Server) ChainDb() ethdb.Database { diff --git a/packages/arb-rpc-node/cmd/arb-node/arb-node.go b/packages/arb-rpc-node/cmd/arb-node/arb-node.go index 4a81979feb..1508bad9e3 100644 --- a/packages/arb-rpc-node/cmd/arb-node/arb-node.go +++ b/packages/arb-rpc-node/cmd/arb-node/arb-node.go @@ -411,44 +411,46 @@ func startup() error { var batch batcher.TransactionBatcher var broadcasterErrChan chan error errChan := make(chan error, 1) - for { - batch, broadcasterErrChan, err = rpc.SetupBatcher( - ctx, - l1Client, - rollupAddress, - l2ChainId, - db, - time.Duration(config.Node.Aggregator.MaxBatchTime)*time.Second, - batcherMode, - dataSigner, - config, - walletConfig, - ) - lockoutConf := config.Node.Sequencer.Lockout - if err == nil { - seqBatcher, ok := batch.(*batcher.SequencerBatcher) - if lockoutConf.Redis != "" { - // Setup the lockout. This will take care of the initial delayed sequence. - batch, err = rpc.SetupLockout(ctx, seqBatcher, mon.Core, inboxReader, lockoutConf, errChan) - } else if ok { - // Ensure we sequence delayed messages before opening the RPC. - err = seqBatcher.SequenceDelayedMessages(ctx, false) + if config.Node.Forwarder.Target != "" { + for { + batch, broadcasterErrChan, err = rpc.SetupBatcher( + ctx, + l1Client, + rollupAddress, + l2ChainId, + db, + time.Duration(config.Node.Aggregator.MaxBatchTime)*time.Second, + batcherMode, + dataSigner, + config, + walletConfig, + ) + lockoutConf := config.Node.Sequencer.Lockout + if err == nil { + seqBatcher, ok := batch.(*batcher.SequencerBatcher) + if lockoutConf.Redis != "" { + // Setup the lockout. This will take care of the initial delayed sequence. + batch, err = rpc.SetupLockout(ctx, seqBatcher, mon.Core, inboxReader, lockoutConf, errChan) + } else if ok { + // Ensure we sequence delayed messages before opening the RPC. + err = seqBatcher.SequenceDelayedMessages(ctx, false) + } } - } - if err == nil { - go batch.Start(ctx) - break - } - if common.IsFatalError(err) { - logger.Error().Err(err).Msg("aborting inbox reader start") - break - } - logger.Warn().Err(err).Msg("failed to setup batcher, waiting and retrying") + if err == nil { + go batch.Start(ctx) + break + } + if common.IsFatalError(err) { + logger.Error().Err(err).Msg("aborting inbox reader start") + break + } + logger.Warn().Err(err).Msg("failed to setup batcher, waiting and retrying") - select { - case <-ctx.Done(): - return errors.New("ctx cancelled setup batcher") - case <-time.After(5 * time.Second): + select { + case <-ctx.Done(): + return errors.New("ctx cancelled setup batcher") + case <-time.After(5 * time.Second): + } } } diff --git a/packages/arb-util/configuration/configuration.go b/packages/arb-util/configuration/configuration.go index 6ad687d68e..1afab3f530 100644 --- a/packages/arb-util/configuration/configuration.go +++ b/packages/arb-util/configuration/configuration.go @@ -723,10 +723,11 @@ func ParseNonRelay(ctx context.Context, f *flag.FlagSet, defaultWalletPathname s } else if l1ChainId.Cmp(big.NewInt(4)) == 0 { err := k.Load(confmap.Provider(map[string]interface{}{ "bridge-utils-address": "0xA556F0eF1A0E37a7837ceec5527aFC7771Bf9a67", - "feed.input.url": []string{"wss://rinkeby.arbitrum.io/feed"}, + "feed.input.url": []string{}, "node.aggregator.inbox-address": "0x578BAde599406A8fE3d24Fd7f7211c0911F5B29e", "node.chain-id": "421611", - "node.forwarder.target": "https://rinkeby.arbitrum.io/rpc", + "node.forwarder.target": "", + "node.forwarder.rpc-mode": "non-mutating", "persistent.chain": "rinkeby", "rollup.address": "0xFe2c86CF40F89Fe2F726cFBBACEBae631300b50c", "rollup.from-block": "8700589", From e7a13f8745a29a6973e43865eac5a245b46d46d2 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Fri, 29 Jul 2022 21:34:25 +0800 Subject: [PATCH 076/128] Update Rinkeby Post-Nitro Addresses (#2412) --- docs/Useful_Addresses.md | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/docs/Useful_Addresses.md b/docs/Useful_Addresses.md index c6577b78b4..ca5abee96b 100644 --- a/docs/Useful_Addresses.md +++ b/docs/Useful_Addresses.md @@ -11,24 +11,26 @@ Here's some contract addreses that may be useful and/or of interest to those exp | | Mainnet: Arbitrum One | Arbitrum Nova | Arb-Rinkeby | Nitro Goerli Rollup | | --------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| Rollup | [0xC12BA48c781F6e392B49Db2E25Cd0c28cD77531A](https://etherscan.io/address/0xC12BA48c781F6e392B49Db2E25Cd0c28cD77531A) | [0xfb209827c58283535b744575e11953dcc4bead88](https://etherscan.io/address/0xfb209827c58283535b744575e11953dcc4bead88) | [0xFe2c86CF40F89Fe2F726cFBBACEBae631300b50c](https://rinkeby.etherscan.io/address/0xFe2c86CF40F89Fe2F726cFBBACEBae631300b50c) | [0x45e5cAea8768F42B385A366D3551Ad1e0cbFAb17](https://goerli.etherscan.io/address/0x45e5cAea8768F42B385A366D3551Ad1e0cbFAb17) | +| Rollup | [0xC12BA48c781F6e392B49Db2E25Cd0c28cD77531A](https://etherscan.io/address/0xC12BA48c781F6e392B49Db2E25Cd0c28cD77531A) | [0xfb209827c58283535b744575e11953dcc4bead88](https://etherscan.io/address/0xfb209827c58283535b744575e11953dcc4bead88) | [0x9a28E783c47bBEB813F32B861A431d0776681E95](https://rinkeby.etherscan.io/address/0x9a28E783c47bBEB813F32B861A431d0776681E95) | [0x45e5cAea8768F42B385A366D3551Ad1e0cbFAb17](https://goerli.etherscan.io/address/0x45e5cAea8768F42B385A366D3551Ad1e0cbFAb17) | | Delayed Inbox | [0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f](https://etherscan.io/address/0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f) | [0xc4448b71118c9071bcb9734a0eac55d18a153949](https://etherscan.io/address/0xc4448b71118c9071bcb9734a0eac55d18a153949) | [0x578BAde599406A8fE3d24Fd7f7211c0911F5B29e](https://rinkeby.etherscan.io/address/0x578BAde599406A8fE3d24Fd7f7211c0911F5B29e) | [0x6BEbC4925716945D46F0Ec336D5C2564F419682C](https://goerli.etherscan.io/address/0x6BEbC4925716945D46F0Ec336D5C2564F419682C) | -| Sequencer Inbox | [0x4c6f947Ae67F572afa4ae0730947DE7C874F95Ef](https://etherscan.io/address/0x4c6f947Ae67F572afa4ae0730947DE7C874F95Ef) | [0x211e1c4c7f1bf5351ac850ed10fd68cffcf6c21b](https://etherscan.io/address/0x211e1c4c7f1bf5351ac850ed10fd68cffcf6c21b) | [0xe1ae39e91c5505f7f0ffc9e2bbf1f6e1122dcfa8](https://rinkeby.etherscan.io/address/0xe1ae39e91c5505f7f0ffc9e2bbf1f6e1122dcfa8) | [0x0484A87B144745A2E5b7c359552119B6EA2917A9](https://goerli.etherscan.io/address/0x0484A87B144745A2E5b7c359552119B6EA2917A9) | -| Bridge | [0x011B6E24FfB0B5f5fCc564cf4183C5BBBc96D515](https://etherscan.io/address/0x011B6E24FfB0B5f5fCc564cf4183C5BBBc96D515) | [0xc1ebd02f738644983b6c4b2d440b8e77dde276bd](https://etherscan.io/address/0xc1ebd02f738644983b6c4b2d440b8e77dde276bd) | [0x9a28e783c47bbeb813f32b861a431d0776681e95](https://rinkeby.etherscan.io/address/0x9a28e783c47bbeb813f32b861a431d0776681e95) | [0xaf4159a80b6cc41ed517db1c453d1ef5c2e4db72](https://goerli.etherscan.io/address/0xaf4159a80b6cc41ed517db1c453d1ef5c2e4db72) | -| Outbox | [0x760723CD2e632826c38Fef8CD438A4CC7E7E1A40](https://etherscan.io/address/0x760723CD2e632826c38Fef8CD438A4CC7E7E1A40) | [0xD4B80C3D7240325D18E645B49e6535A3Bf95cc58](https://etherscan.io/address/0xD4B80C3D7240325D18E645B49e6535A3Bf95cc58) | [0x2360A33905dc1c72b12d975d975F42BaBdcef9F3](https://rinkeby.etherscan.io/address/0x2360A33905dc1c72b12d975d975F42BaBdcef9F3) | [0x45Af9Ed1D03703e480CE7d328fB684bb67DA5049](https://goerli.etherscan.io/address/0x45Af9Ed1D03703e480CE7d328fB684bb67DA5049) | -| One Step Proof* | [0x4812be53be02b9f38063cf55fef0a19d2ba8bb3a](https://etherscan.io/address/0x4812be53be02b9f38063cf55fef0a19d2ba8bb3a) | | [0x6210a4eD13A487a5925EBe956b7a6E0b83325DA4](https://rinkeby.etherscan.io/address/0x6210a4eD13A487a5925EBe956b7a6E0b83325DA4) | | -| One Step Proof 2* | [0x2df287a3b2fd0916c0b3d4882201ff360acd6ec3](https://etherscan.io/address/0x2df287a3b2fd0916c0b3d4882201ff360acd6ec3) | | [0xb1F17484b93037d898b86E760fFA4B1E62445B8e](https://rinkeby.etherscan.io/address/0xb1F17484b93037d898b86E760fFA4B1E62445B8e) | | -| One Step Proof Hash* | [0xce81e7d009e53c02242b724819df1869da5e9fd8](https://etherscan.io/address/0xce81e7d009e53c02242b724819df1869da5e9fd8) | | [0x0Cfb138F6Ca11D794907FA9cC01920EB93CBFF45](https://rinkeby.etherscan.io/address/0x0Cfb138F6Ca11D794907FA9cC01920EB93CBFF45) | | -| Challenge* | [0x6ad1dc4ab5475d9f8cd10118c9d28b06f0c8a2d9](https://etherscan.io/address/0x6ad1dc4ab5475d9f8cd10118c9d28b06f0c8a2d9) | | [0x57094dcd1F928076FaEe852EDdb933997845A4e4](https://rinkeby.etherscan.io/address/0x57094dcd1F928076FaEe852EDdb933997845A4e4) | | -| OneStepProver0** | | | | [0xD7422f07fe48f6e82E40587feb2acaE1451f08A6](https://goerli.etherscan.io/address/0xD7422f07fe48f6e82E40587feb2acaE1451f08A6) | -| OneStepProverMemory** | | | | [0x9221854E95283670E58738805a2d20405d17682E](https://goerli.etherscan.io/address/0x9221854E95283670E58738805a2d20405d17682E) | -| OneStepProverMath** | | | | [0xFe18aB9B105a8C13Fbd67a0DaCb1C70e84Bb5d5E](https://goerli.etherscan.io/address/0xFe18aB9B105a8C13Fbd67a0DaCb1C70e84Bb5d5E) | -| OneStepProverHostIo** | | | | [0x5518772ddb8e65416c6572E28BE58dAfc8A3834c](https://goerli.etherscan.io/address/0x5518772ddb8e65416c6572E28BE58dAfc8A3834c) | -| OneStepProofEntry** | | | | [0xe46a0585C3Cb05AaE200161534Af1aE5Dff61294](https://goerli.etherscan.io/address/0xe46a0585C3Cb05AaE200161534Af1aE5Dff61294) | +| Sequencer Inbox | [0x4c6f947Ae67F572afa4ae0730947DE7C874F95Ef](https://etherscan.io/address/0x4c6f947Ae67F572afa4ae0730947DE7C874F95Ef) | [0x211e1c4c7f1bf5351ac850ed10fd68cffcf6c21b](https://etherscan.io/address/0x211e1c4c7f1bf5351ac850ed10fd68cffcf6c21b) | [0xE1Ae39E91C5505f7F0ffC9e2bbF1f6E1122DCfA8](https://rinkeby.etherscan.io/address/0xE1Ae39E91C5505f7F0ffC9e2bbF1f6E1122DCfA8) | [0x0484A87B144745A2E5b7c359552119B6EA2917A9](https://goerli.etherscan.io/address/0x0484A87B144745A2E5b7c359552119B6EA2917A9) | +| Bridge | [0x011B6E24FfB0B5f5fCc564cf4183C5BBBc96D515](https://etherscan.io/address/0x011B6E24FfB0B5f5fCc564cf4183C5BBBc96D515) | [0xc1ebd02f738644983b6c4b2d440b8e77dde276bd](https://etherscan.io/address/0xc1ebd02f738644983b6c4b2d440b8e77dde276bd) | [0x85C720444e436E1F9407E0C3895d3fE149f41168](https://rinkeby.etherscan.io/address/0x85C720444e436E1F9407E0C3895d3fE149f41168) | [0xaf4159a80b6cc41ed517db1c453d1ef5c2e4db72](https://goerli.etherscan.io/address/0xaf4159a80b6cc41ed517db1c453d1ef5c2e4db72) | +| Outbox | [0x760723CD2e632826c38Fef8CD438A4CC7E7E1A40](https://etherscan.io/address/0x760723CD2e632826c38Fef8CD438A4CC7E7E1A40) | [0xD4B80C3D7240325D18E645B49e6535A3Bf95cc58](https://etherscan.io/address/0xD4B80C3D7240325D18E645B49e6535A3Bf95cc58) | [0x36648F69cEb55Ce1B2920Bf2de321FBc9c378f0E](https://rinkeby.etherscan.io/address/0x36648F69cEb55Ce1B2920Bf2de321FBc9c378f0E) | [0x45Af9Ed1D03703e480CE7d328fB684bb67DA5049](https://goerli.etherscan.io/address/0x45Af9Ed1D03703e480CE7d328fB684bb67DA5049) | +| One Step Proof* | [0x4812be53be02b9f38063cf55fef0a19d2ba8bb3a](https://etherscan.io/address/0x4812be53be02b9f38063cf55fef0a19d2ba8bb3a) | | | | +| One Step Proof 2* | [0x2df287a3b2fd0916c0b3d4882201ff360acd6ec3](https://etherscan.io/address/0x2df287a3b2fd0916c0b3d4882201ff360acd6ec3) | | | | +| One Step Proof Hash* | [0xce81e7d009e53c02242b724819df1869da5e9fd8](https://etherscan.io/address/0xce81e7d009e53c02242b724819df1869da5e9fd8) | | | | +| Challenge* | [0x6ad1dc4ab5475d9f8cd10118c9d28b06f0c8a2d9](https://etherscan.io/address/0x6ad1dc4ab5475d9f8cd10118c9d28b06f0c8a2d9) | | | | +| OneStepProver0** | | | [0x554e12DBAa0fBeB8A35583a6Fd9D04BaA4ff597f](https://rinkeby.etherscan.io/address/0x554e12DBAa0fBeB8A35583a6Fd9D04BaA4ff597f) | [0xD7422f07fe48f6e82E40587feb2acaE1451f08A6](https://goerli.etherscan.io/address/0xD7422f07fe48f6e82E40587feb2acaE1451f08A6) | +| OneStepProverMemory** | | | [0x25453614F57c026166De653351b3AcC1f45c4763](https://rinkeby.etherscan.io/address/0x25453614F57c026166De653351b3AcC1f45c4763) | [0x9221854E95283670E58738805a2d20405d17682E](https://goerli.etherscan.io/address/0x9221854E95283670E58738805a2d20405d17682E) | +| OneStepProverMath** | | | [0x2E117B00f1DA98CD7165BAb6388539ce65bE0E6c](https://rinkeby.etherscan.io/address/0x2E117B00f1DA98CD7165BAb6388539ce65bE0E6c) | [0xFe18aB9B105a8C13Fbd67a0DaCb1C70e84Bb5d5E](https://goerli.etherscan.io/address/0xFe18aB9B105a8C13Fbd67a0DaCb1C70e84Bb5d5E) | +| OneStepProverHostIo** | | | [0x686861ff78A55076237C8BDA698E86815f8E2fA7](https://rinkeby.etherscan.io/address/0x686861ff78A55076237C8BDA698E86815f8E2fA7) | [0x5518772ddb8e65416c6572E28BE58dAfc8A3834c](https://goerli.etherscan.io/address/0x5518772ddb8e65416c6572E28BE58dAfc8A3834c) | +| OneStepProofEntry** | | | [0x190274fEa8f30e3f48CE43aDCBd9a74110118284](https://rinkeby.etherscan.io/address/0x190274fEa8f30e3f48CE43aDCBd9a74110118284) | [0xe46a0585C3Cb05AaE200161534Af1aE5Dff61294](https://goerli.etherscan.io/address/0xe46a0585C3Cb05AaE200161534Af1aE5Dff61294) | +| Classic Outbox*** | | | [0x2360A33905dc1c72b12d975d975F42BaBdcef9F3](https://rinkeby.etherscan.io/address/0x2360A33905dc1c72b12d975d975F42BaBdcef9F3) | | *Arbitrum Classic Stack Only **Nitro Only +***Migrated Network Only ### Token Bridge From 58f552e1be0466f687dfc0e4847efaae36da47f5 Mon Sep 17 00:00:00 2001 From: Daniel Goldman Date: Fri, 29 Jul 2022 09:54:25 -0400 Subject: [PATCH 077/128] include nova in mainnet beta page (#2391) * include nova in mainnet beta disclaimers * some tweaks --- docs/Mainnet.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/Mainnet.md b/docs/Mainnet.md index 135ee609e9..ea52037949 100644 --- a/docs/Mainnet.md +++ b/docs/Mainnet.md @@ -4,13 +4,13 @@ title: What is "Mainnet Beta"? sidebar_label: What is "Mainnet Beta"? --- -Arbitrum One — the first permissionless Ethereum layer 2 with full Ethereum smart contract functionality — is [live](https://offchain.medium.com/mainnet-for-everyone-27ce0f67c85e)! We're sure you're (almost) as excited as we are; here's what you need to know before using the system: +Arbitrum One — the first permissionless Ethereum layer 2 rollup with full Ethereum smart contract functionality — is [live](https://offchain.medium.com/mainnet-for-everyone-27ce0f67c85e) — and Nova, our first [AnyTrust](AnyTrust.md) chain, is [open to developers on mainnet](https://medium.com/offchainlabs/introducing-nova-arbitrum-anytrust-mainnet-is-open-for-developers-9a54692f345e), soon to be opened up to all users! We're sure you're (almost) as excited as we are; here's what you need to know before using the system: ### Some Words of Caution -- **Why Mainnet "Beta?"; Current De/Centralization State**: Arbitrum One has its full feature set that you'll see described in these docs fully implemented and live: fraud proofs, permissionless usage, you name it. That said, given that Arbitrum is still a new, cutting edge, and complex system, we currently maintain various levels of control over the system while still in this early Beta phase; this includes contract upgradeability, the ability to pause the system, validator whitelisting, and ~~[token bridge whitelisting](https://developer.offchainlabs.com/docs/bridging_assets#default-standard-bridging)~~. We believe temporarily maintaining these capabilities is the only responsible way to launch while we continue to harden our system; as we progressively decentralized, these controls will be phased and eventually eliminated entirely. +- **Why Mainnet "Beta?"; Current De/Centralization State**: Arbitrum One and Nova have their full feature sets that you'll see described in these docs fully implemented and live: fraud proofs, permissionless usage, you name it. That said, given that Arbitrum is still a new, cutting edge, and complex system, we currently maintain various levels of control over the chains while they're still in this early Beta phase; this includes contract upgradeability, the ability to pause the system, validator whitelisting, and ~~[token bridge whitelisting](https://developer.offchainlabs.com/docs/bridging_assets#default-standard-bridging)~~. We believe temporarily maintaining these capabilities is the only responsible way to launch while we continue to harden our system; as we progressively decentralized, these controls will be phased and eventually eliminated entirely. - To track the status of Aribtrum One's decentralization, you can follow updates from [us](https://offchain.medium.com/) (obviously) or check out [L2Beats](https://l2beat.com/projects/arbitrum/), who have thus far done a great job of thoroughly and responsibly providing information on Arbitrum and other L2 systems. + To track the status of the Arbitrum chains' decentralization, you can follow updates from [us](https://offchain.medium.com/) (obviously) or, for Arbitrum One, check out [L2Beat](https://l2beat.com/projects/arbitrum/), who have thus far done a great job of thoroughly and responsibly providing information on Arbitrum Rollup and other L2 systems. - **Why Mainnet "Beta?": Undiscovered Bugs 😱**: Despite the fact that we at Offchain Labs have thoroughly thought through the many design choices in our protocol, have been as careful implementing them as we could be, have been audited by several independent firms, have a team of engineers that are all very smart and cool, etc.,... there remains a non-zero chance that our codebase contains some undiscovered vulnerabilities that put user funds at risk. Users should carefully factor in this risk in their decision to use Arbitrum one / in deciding how much of their value to entrust into the system. (And should you yourself happen to discover one such bug, might we kindly direct you to our [bug bounty program](https://immunefi.com/bounty/arbitrum/)?) @@ -18,6 +18,6 @@ Arbitrum One — the first permissionless Ethereum layer 2 with full Ethereum sm ## Getting Started -..okay, with that out of the way, let's talk about getting started using Arbitrum one! To get a sense of what's out there, you can check out our [portal page](https://portal.arbitrum.one/), where we showcase some of the dApps, wallets, and infrastructure currently live on Arbitrum. +..okay, with that out of the way, let's talk about getting started! To get a sense of what's out there, you can check out our [portal page](https://portal.arbitrum.one/), where we showcase some of the dApps, wallets, and infrastructure currently live. See [Public Chains](Public_Chains.md) for more info on getting started. \ No newline at end of file From 5565be8d474764aa09c3a2517f37091e544cf471 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Sat, 30 Jul 2022 02:08:37 +0800 Subject: [PATCH 078/128] fix: rinkeby nitro rollup address --- docs/Useful_Addresses.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Useful_Addresses.md b/docs/Useful_Addresses.md index ca5abee96b..6aa312163b 100644 --- a/docs/Useful_Addresses.md +++ b/docs/Useful_Addresses.md @@ -11,7 +11,7 @@ Here's some contract addreses that may be useful and/or of interest to those exp | | Mainnet: Arbitrum One | Arbitrum Nova | Arb-Rinkeby | Nitro Goerli Rollup | | --------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| Rollup | [0xC12BA48c781F6e392B49Db2E25Cd0c28cD77531A](https://etherscan.io/address/0xC12BA48c781F6e392B49Db2E25Cd0c28cD77531A) | [0xfb209827c58283535b744575e11953dcc4bead88](https://etherscan.io/address/0xfb209827c58283535b744575e11953dcc4bead88) | [0x9a28E783c47bBEB813F32B861A431d0776681E95](https://rinkeby.etherscan.io/address/0x9a28E783c47bBEB813F32B861A431d0776681E95) | [0x45e5cAea8768F42B385A366D3551Ad1e0cbFAb17](https://goerli.etherscan.io/address/0x45e5cAea8768F42B385A366D3551Ad1e0cbFAb17) | +| Rollup | [0xC12BA48c781F6e392B49Db2E25Cd0c28cD77531A](https://etherscan.io/address/0xC12BA48c781F6e392B49Db2E25Cd0c28cD77531A) | [0xfb209827c58283535b744575e11953dcc4bead88](https://etherscan.io/address/0xfb209827c58283535b744575e11953dcc4bead88) | [0x71c6093C564EDDCFAf03481C3F59F88849F1e644](https://rinkeby.etherscan.io/address/0x71c6093C564EDDCFAf03481C3F59F88849F1e644) | [0x45e5cAea8768F42B385A366D3551Ad1e0cbFAb17](https://goerli.etherscan.io/address/0x45e5cAea8768F42B385A366D3551Ad1e0cbFAb17) | | Delayed Inbox | [0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f](https://etherscan.io/address/0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f) | [0xc4448b71118c9071bcb9734a0eac55d18a153949](https://etherscan.io/address/0xc4448b71118c9071bcb9734a0eac55d18a153949) | [0x578BAde599406A8fE3d24Fd7f7211c0911F5B29e](https://rinkeby.etherscan.io/address/0x578BAde599406A8fE3d24Fd7f7211c0911F5B29e) | [0x6BEbC4925716945D46F0Ec336D5C2564F419682C](https://goerli.etherscan.io/address/0x6BEbC4925716945D46F0Ec336D5C2564F419682C) | | Sequencer Inbox | [0x4c6f947Ae67F572afa4ae0730947DE7C874F95Ef](https://etherscan.io/address/0x4c6f947Ae67F572afa4ae0730947DE7C874F95Ef) | [0x211e1c4c7f1bf5351ac850ed10fd68cffcf6c21b](https://etherscan.io/address/0x211e1c4c7f1bf5351ac850ed10fd68cffcf6c21b) | [0xE1Ae39E91C5505f7F0ffC9e2bbF1f6E1122DCfA8](https://rinkeby.etherscan.io/address/0xE1Ae39E91C5505f7F0ffC9e2bbF1f6E1122DCfA8) | [0x0484A87B144745A2E5b7c359552119B6EA2917A9](https://goerli.etherscan.io/address/0x0484A87B144745A2E5b7c359552119B6EA2917A9) | | Bridge | [0x011B6E24FfB0B5f5fCc564cf4183C5BBBc96D515](https://etherscan.io/address/0x011B6E24FfB0B5f5fCc564cf4183C5BBBc96D515) | [0xc1ebd02f738644983b6c4b2d440b8e77dde276bd](https://etherscan.io/address/0xc1ebd02f738644983b6c4b2d440b8e77dde276bd) | [0x85C720444e436E1F9407E0C3895d3fE149f41168](https://rinkeby.etherscan.io/address/0x85C720444e436E1F9407E0C3895d3fE149f41168) | [0xaf4159a80b6cc41ed517db1c453d1ef5c2e4db72](https://goerli.etherscan.io/address/0xaf4159a80b6cc41ed517db1c453d1ef5c2e4db72) | From 5c978c489a7f5e0b6dbd87e4d88f5246b4ceff7d Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Fri, 29 Jul 2022 12:00:01 -0700 Subject: [PATCH 079/128] Add `--l2.disable-upstream` to force disabling feed and mutating transactions New parameter `--l2.disable-upstream` forces all connections to sequencer, regardless of what other configuration options are specified. --- packages/arb-util/configuration/configuration.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/arb-util/configuration/configuration.go b/packages/arb-util/configuration/configuration.go index 1afab3f530..070275c6f7 100644 --- a/packages/arb-util/configuration/configuration.go +++ b/packages/arb-util/configuration/configuration.go @@ -449,7 +449,8 @@ type Config struct { URL string `koanf:"url"` } `koanf:"l1"` L2 struct { - ChainID uint64 `koanf:"chain-id"` + ChainID uint64 `koanf:"chain-id"` + DisableUpstream bool `koanf:"disable-upstream"` } `koanf:"l2"` Log Log `koanf:"log"` Node Node `koanf:"node"` @@ -724,6 +725,7 @@ func ParseNonRelay(ctx context.Context, f *flag.FlagSet, defaultWalletPathname s err := k.Load(confmap.Provider(map[string]interface{}{ "bridge-utils-address": "0xA556F0eF1A0E37a7837ceec5527aFC7771Bf9a67", "feed.input.url": []string{}, + "l2.disable-upstream": true, "node.aggregator.inbox-address": "0x578BAde599406A8fE3d24Fd7f7211c0911F5B29e", "node.chain-id": "421611", "node.forwarder.target": "", @@ -753,6 +755,12 @@ func ParseNonRelay(ctx context.Context, f *flag.FlagSet, defaultWalletPathname s return nil, nil, nil, nil, err } + if out.L2.DisableUpstream { + out.Feed.Input.URLs = []string{} + out.Node.Forwarder.Target = "" + out.Node.Forwarder.RpcModeImpl = "non-mutating" + } + // Fixup directories err = resolveDirectoryNames(out, wallet) if err != nil { @@ -991,6 +999,7 @@ func beginCommonParse(f *flag.FlagSet) (*koanf.Koanf, error) { f.String("log.core", "info", "log level for general arb node logging") f.Uint64("l2.chain-id", 0, "if set other than 0, will be used to validate L2 feed connection") + f.Bool("l2.disable-upstream", false, "disable feed and transaction forwarding") f.Bool("pprof-enable", false, "enable profiling server") From 79da44f3d62e7fdf8579183db873cb21457b346b Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Fri, 29 Jul 2022 12:05:29 -0700 Subject: [PATCH 080/128] Address code review comments --- packages/arb-rpc-node/aggregator/aggregator.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/arb-rpc-node/aggregator/aggregator.go b/packages/arb-rpc-node/aggregator/aggregator.go index 08dc5e52d0..8e76db4994 100644 --- a/packages/arb-rpc-node/aggregator/aggregator.go +++ b/packages/arb-rpc-node/aggregator/aggregator.go @@ -176,7 +176,7 @@ func (m *Server) PendingSnapshot(ctx context.Context) (*snapshot.Snapshot, error return pending, nil } - return nil, errors.New("no batcher defined, cannot generate pending snapshot") + return m.LatestSnapshot(ctx) } func (m *Server) Aggregator() *common.Address { From 4d90ba0f8f062b3b1691c65ad9fe084d0b5f0f4a Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Fri, 29 Jul 2022 16:43:10 -0700 Subject: [PATCH 081/128] Improve documentation and update version --- docs/Running_Goerli_Nitro_Node.md | 12 +++++++----- docs/Running_Rinkeby_Nitro_Node.md | 12 +++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/docs/Running_Goerli_Nitro_Node.md b/docs/Running_Goerli_Nitro_Node.md index 63fa325cfd..fd366d374b 100644 --- a/docs/Running_Goerli_Nitro_Node.md +++ b/docs/Running_Goerli_Nitro_Node.md @@ -8,7 +8,7 @@ Note: If you’re interested in accessing the Arbitrum Goerli network but you do ### Required Artifacts -- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.7-340b812` +- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72` ### Required parameter @@ -25,11 +25,13 @@ Note: If you’re interested in accessing the Arbitrum Goerli network but you do ### Putting it all together -- When running docker image, an external volume should be mounted to persist the database across restarts. The mount point should be `/home/user/.arbitrum/goerli`. +- When running docker image, an external volume should be mounted to persist the database across restarts. The mount point should be `/home/user/.arbitrum/`. - Here is an example of how to run nitro-node for goerli: + - Note that is important that `/some/local/dir/arbitrum` already exists, otherwise the directory might be created with `root` as owner, and the docker container won't be able to write to it. + ``` - docker run --rm -it -v /some/local/dir/arbitrum-goerli/:/home/user/.arbitrum/goerli -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.7-340b812 --l1.url https://l1-goerli-node:8545 --l2.chain-id=421613 + docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-goerli-node:8545 --l2.chain-id=421613 --http.api=net,web3,eth,debug --http.corsdomain=* --http.vhosts=* ``` - Note that if you are running L1 node on localhost, you may need to add `--network host` right after `docker run` to use docker host-based networking @@ -70,9 +72,9 @@ Note: If you’re interested in accessing the Arbitrum Goerli network but you do The arb-relay is in the same docker image. - Here is an example of how to run nitro-relay for goerli: ``` - docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.7-340b812 --node.feed.input.url wss://goerli-rollup.arbitrum.io/feed + docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --node.feed.input.url wss://goerli-rollup.arbitrum.io/feed ``` - Here is an example of how to run nitro-node for goerli with custom relay: ``` - docker run --rm -it -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.7-340b812 --l1.url https://l1-goeri-node:8545 --feed.input.url ws://local-relay-address:9642 --l2.chain-id=421613 + docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-goerli-node:8545 --l2.chain-id=421613 --http.api=net,web3,eth,debug --http.corsdomain=* --http.vhosts=* --feed.input.url ws://local-relay-address:9642 ``` diff --git a/docs/Running_Rinkeby_Nitro_Node.md b/docs/Running_Rinkeby_Nitro_Node.md index 8b7ed03aa2..d4f68f2cc7 100644 --- a/docs/Running_Rinkeby_Nitro_Node.md +++ b/docs/Running_Rinkeby_Nitro_Node.md @@ -10,7 +10,7 @@ Note: If you’re interested in accessing the Arbitrum Rinkeby network but you d ### Required Artifacts -- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.7-340b812` +- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72` - Rinkeby Nitro Seed Database Snapshot - Use the parameter `--init.url="https://snapshot.arbitrum.io/rinkeby/nitro.tar"` on first startup to initialize Nitro database @@ -31,11 +31,13 @@ Note: If you’re interested in accessing the Arbitrum Rinkeby network but you d ### Putting it all together -- When running docker image, an external volume should be mounted to persist the database across restarts. The mount point inside the docker image should be `/home/user/.arbitrum/rinkeby-nitro`. +- When running docker image, an external volume should be mounted to persist the database across restarts. The mount point inside the docker image should be `/home/user/.arbitrum`. - Here is an example of how to run nitro-node for Rinkeby: + - Note that is important that `/some/local/dir/arbitrum` already exists, otherwise the directory might be created with `root` as owner, and the docker container won't be able to write to it. + ``` - docker run --rm -it -v /some/local/dir/rinkeby-nitro/:/home/user/.arbitrum/rinkeby-nitro -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.7-340b812 --l1.url https://l1-rinkeby-node:8545 --l2.chain-id=421611 + docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-rinkeby-node:8545 --l2.chain-id=421611 --http.api=net,web3,eth,debug --http.corsdomain=* --http.vhosts=* ``` - Note that if you are running L1 node on localhost, you may need to add `--network host` right after `docker run` to use docker host-based networking @@ -80,9 +82,9 @@ Note: If you’re interested in accessing the Arbitrum Rinkeby network but you d The arb-relay is in the same docker image. - Here is an example of how to run nitro-relay for Rinkeby: ``` - docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.7-340b812 --node.feed.input.url wss://rinkeby.arbitrum.io/feed --l2.chain-id=421611 + docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --node.feed.input.url wss://rinkeby.arbitrum.io/feed --l2.chain-id=421611` ``` - Here is an example of how to run nitro-node for Rinkeby with custom relay: ``` - docker run --rm -it -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.7-340b812 --l1.url https://l1-goeri-node:8545 --feed.input.url ws://local-relay-address:9642 --l2.chain-id=421611 + docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-rinkeby-node:8545 --l2.chain-id=421611 --http.api=net,web3,eth,debug --http.corsdomain=* --http.vhosts=* --node.feed.input.url ws://local-relay-address:9642 ``` From be0c9b598d3761b3b9515061f79d97e76b14adef Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Fri, 29 Jul 2022 17:06:08 -0700 Subject: [PATCH 082/128] Documentation tweaks --- docs/Running_Goerli_Nitro_Node.md | 6 +++--- docs/Running_Rinkeby_Nitro_Node.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/Running_Goerli_Nitro_Node.md b/docs/Running_Goerli_Nitro_Node.md index fd366d374b..5eb18dc553 100644 --- a/docs/Running_Goerli_Nitro_Node.md +++ b/docs/Running_Goerli_Nitro_Node.md @@ -31,7 +31,7 @@ Note: If you’re interested in accessing the Arbitrum Goerli network but you do - Note that is important that `/some/local/dir/arbitrum` already exists, otherwise the directory might be created with `root` as owner, and the docker container won't be able to write to it. ``` - docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-goerli-node:8545 --l2.chain-id=421613 --http.api=net,web3,eth,debug --http.corsdomain=* --http.vhosts=* + docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-goerli-node:8545 --l2.chain-id=421613 --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* ``` - Note that if you are running L1 node on localhost, you may need to add `--network host` right after `docker run` to use docker host-based networking @@ -72,9 +72,9 @@ Note: If you’re interested in accessing the Arbitrum Goerli network but you do The arb-relay is in the same docker image. - Here is an example of how to run nitro-relay for goerli: ``` - docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --node.feed.input.url wss://goerli-rollup.arbitrum.io/feed + docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --node.feed.output.addr=0.0.0.0 --node.feed.input.url wss://goerli-rollup.arbitrum.io/feed ``` - Here is an example of how to run nitro-node for goerli with custom relay: ``` - docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-goerli-node:8545 --l2.chain-id=421613 --http.api=net,web3,eth,debug --http.corsdomain=* --http.vhosts=* --feed.input.url ws://local-relay-address:9642 + docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-goerli-node:8545 --l2.chain-id=421613 --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* --feed.input.url ws://local-relay-address:9642 ``` diff --git a/docs/Running_Rinkeby_Nitro_Node.md b/docs/Running_Rinkeby_Nitro_Node.md index d4f68f2cc7..05742665e0 100644 --- a/docs/Running_Rinkeby_Nitro_Node.md +++ b/docs/Running_Rinkeby_Nitro_Node.md @@ -37,7 +37,7 @@ Note: If you’re interested in accessing the Arbitrum Rinkeby network but you d - Note that is important that `/some/local/dir/arbitrum` already exists, otherwise the directory might be created with `root` as owner, and the docker container won't be able to write to it. ``` - docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-rinkeby-node:8545 --l2.chain-id=421611 --http.api=net,web3,eth,debug --http.corsdomain=* --http.vhosts=* + docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-rinkeby-node:8545 --l2.chain-id=421611 --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* ``` - Note that if you are running L1 node on localhost, you may need to add `--network host` right after `docker run` to use docker host-based networking @@ -82,9 +82,9 @@ Note: If you’re interested in accessing the Arbitrum Rinkeby network but you d The arb-relay is in the same docker image. - Here is an example of how to run nitro-relay for Rinkeby: ``` - docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --node.feed.input.url wss://rinkeby.arbitrum.io/feed --l2.chain-id=421611` + docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --node.feed.output.addr=0.0.0.0 --node.feed.input.url wss://rinkeby.arbitrum.io/feed ``` - Here is an example of how to run nitro-node for Rinkeby with custom relay: ``` - docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-rinkeby-node:8545 --l2.chain-id=421611 --http.api=net,web3,eth,debug --http.corsdomain=* --http.vhosts=* --node.feed.input.url ws://local-relay-address:9642 + docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-rinkeby-node:8545 --l2.chain-id=421611 --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* --node.feed.input.url ws://local-relay-address:9642 ``` From 86f832a0990c1bf32f8c16bb55d8cbe2bc576243 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Sun, 31 Jul 2022 01:11:42 +0800 Subject: [PATCH 083/128] fix: rinkeby nitro sequencer inbox --- docs/Useful_Addresses.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Useful_Addresses.md b/docs/Useful_Addresses.md index 6aa312163b..01ea73973f 100644 --- a/docs/Useful_Addresses.md +++ b/docs/Useful_Addresses.md @@ -13,7 +13,7 @@ Here's some contract addreses that may be useful and/or of interest to those exp | --------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | | Rollup | [0xC12BA48c781F6e392B49Db2E25Cd0c28cD77531A](https://etherscan.io/address/0xC12BA48c781F6e392B49Db2E25Cd0c28cD77531A) | [0xfb209827c58283535b744575e11953dcc4bead88](https://etherscan.io/address/0xfb209827c58283535b744575e11953dcc4bead88) | [0x71c6093C564EDDCFAf03481C3F59F88849F1e644](https://rinkeby.etherscan.io/address/0x71c6093C564EDDCFAf03481C3F59F88849F1e644) | [0x45e5cAea8768F42B385A366D3551Ad1e0cbFAb17](https://goerli.etherscan.io/address/0x45e5cAea8768F42B385A366D3551Ad1e0cbFAb17) | | Delayed Inbox | [0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f](https://etherscan.io/address/0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f) | [0xc4448b71118c9071bcb9734a0eac55d18a153949](https://etherscan.io/address/0xc4448b71118c9071bcb9734a0eac55d18a153949) | [0x578BAde599406A8fE3d24Fd7f7211c0911F5B29e](https://rinkeby.etherscan.io/address/0x578BAde599406A8fE3d24Fd7f7211c0911F5B29e) | [0x6BEbC4925716945D46F0Ec336D5C2564F419682C](https://goerli.etherscan.io/address/0x6BEbC4925716945D46F0Ec336D5C2564F419682C) | -| Sequencer Inbox | [0x4c6f947Ae67F572afa4ae0730947DE7C874F95Ef](https://etherscan.io/address/0x4c6f947Ae67F572afa4ae0730947DE7C874F95Ef) | [0x211e1c4c7f1bf5351ac850ed10fd68cffcf6c21b](https://etherscan.io/address/0x211e1c4c7f1bf5351ac850ed10fd68cffcf6c21b) | [0xE1Ae39E91C5505f7F0ffC9e2bbF1f6E1122DCfA8](https://rinkeby.etherscan.io/address/0xE1Ae39E91C5505f7F0ffC9e2bbF1f6E1122DCfA8) | [0x0484A87B144745A2E5b7c359552119B6EA2917A9](https://goerli.etherscan.io/address/0x0484A87B144745A2E5b7c359552119B6EA2917A9) | +| Sequencer Inbox | [0x4c6f947Ae67F572afa4ae0730947DE7C874F95Ef](https://etherscan.io/address/0x4c6f947Ae67F572afa4ae0730947DE7C874F95Ef) | [0x211e1c4c7f1bf5351ac850ed10fd68cffcf6c21b](https://etherscan.io/address/0x211e1c4c7f1bf5351ac850ed10fd68cffcf6c21b) | [0x957C9c64f7c2cE091E56aF3F33AB20259096355F](https://rinkeby.etherscan.io/address/0x957C9c64f7c2cE091E56aF3F33AB20259096355F) | [0x0484A87B144745A2E5b7c359552119B6EA2917A9](https://goerli.etherscan.io/address/0x0484A87B144745A2E5b7c359552119B6EA2917A9) | | Bridge | [0x011B6E24FfB0B5f5fCc564cf4183C5BBBc96D515](https://etherscan.io/address/0x011B6E24FfB0B5f5fCc564cf4183C5BBBc96D515) | [0xc1ebd02f738644983b6c4b2d440b8e77dde276bd](https://etherscan.io/address/0xc1ebd02f738644983b6c4b2d440b8e77dde276bd) | [0x85C720444e436E1F9407E0C3895d3fE149f41168](https://rinkeby.etherscan.io/address/0x85C720444e436E1F9407E0C3895d3fE149f41168) | [0xaf4159a80b6cc41ed517db1c453d1ef5c2e4db72](https://goerli.etherscan.io/address/0xaf4159a80b6cc41ed517db1c453d1ef5c2e4db72) | | Outbox | [0x760723CD2e632826c38Fef8CD438A4CC7E7E1A40](https://etherscan.io/address/0x760723CD2e632826c38Fef8CD438A4CC7E7E1A40) | [0xD4B80C3D7240325D18E645B49e6535A3Bf95cc58](https://etherscan.io/address/0xD4B80C3D7240325D18E645B49e6535A3Bf95cc58) | [0x36648F69cEb55Ce1B2920Bf2de321FBc9c378f0E](https://rinkeby.etherscan.io/address/0x36648F69cEb55Ce1B2920Bf2de321FBc9c378f0E) | [0x45Af9Ed1D03703e480CE7d328fB684bb67DA5049](https://goerli.etherscan.io/address/0x45Af9Ed1D03703e480CE7d328fB684bb67DA5049) | | One Step Proof* | [0x4812be53be02b9f38063cf55fef0a19d2ba8bb3a](https://etherscan.io/address/0x4812be53be02b9f38063cf55fef0a19d2ba8bb3a) | | | | From 0690d08080632b366260ab09263e9ac6dc387500 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Mon, 1 Aug 2022 15:46:34 +0800 Subject: [PATCH 084/128] refactor: make onlyCounterpartGateway virtual --- .../tokenbridge/libraries/gateway/TokenGateway.sol | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol index db5e1ae42f..e6c217db78 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol @@ -27,12 +27,10 @@ abstract contract TokenGateway is ITokenGateway { address public counterpartGateway; address public router; - modifier onlyCounterpartGateway() virtual { - // this method is overriden in gateways that require special logic for validation - // ie L2 to L1 messages need to be validated against the outbox - require(msg.sender == counterpartGateway, "ONLY_COUNTERPART_GATEWAY"); - _; - } + // This modifier is overriden in gateways to validate the message sender + // For L1 to L2 messages need to be validated against the aliased counterpartGateway + // For L2 to L1 messages need to be validated against the bridge and L2ToL1Sender + modifier onlyCounterpartGateway() virtual; function _initialize(address _counterpartGateway, address _router) internal virtual { // This initializes internal variables of the abstract contract it can be chained together with other functions. From 8388230a6ddef2f290ec0f8842f3b5dc2c2ad103 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Mon, 1 Aug 2022 15:46:39 +0800 Subject: [PATCH 085/128] fix: only allow aliased counterpartGateway --- .../contracts/tokenbridge/arbitrum/gateway/L2GatewayRouter.sol | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2GatewayRouter.sol index fbfed734c3..bbea78d0e0 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/arbitrum/gateway/L2GatewayRouter.sol @@ -30,8 +30,7 @@ import "arb-bridge-eth/contracts/libraries/AddressAliasHelper.sol"; contract L2GatewayRouter is GatewayRouter, L2ArbitrumMessenger { modifier onlyCounterpartGateway() override { require( - msg.sender == counterpartGateway || - AddressAliasHelper.undoL1ToL2Alias(msg.sender) == counterpartGateway, + msg.sender == AddressAliasHelper.applyL1ToL2Alias(counterpartGateway), "ONLY_COUNTERPART_GATEWAY" ); _; From cbcdd644d14a1d64609de86ae9caacf5588c7f59 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Mon, 1 Aug 2022 15:53:20 +0800 Subject: [PATCH 086/128] style: add prettier-ignore --- .../contracts/tokenbridge/libraries/gateway/TokenGateway.sol | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol index e6c217db78..fb09509d63 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/TokenGateway.sol @@ -30,6 +30,7 @@ abstract contract TokenGateway is ITokenGateway { // This modifier is overriden in gateways to validate the message sender // For L1 to L2 messages need to be validated against the aliased counterpartGateway // For L2 to L1 messages need to be validated against the bridge and L2ToL1Sender + // prettier-ignore modifier onlyCounterpartGateway() virtual; function _initialize(address _counterpartGateway, address _router) internal virtual { From 25bf76e8cdd9b00bc181269abcc9b04579a42aca Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Mon, 1 Aug 2022 16:59:53 +0800 Subject: [PATCH 087/128] chore: add new networks to hardhat config --- packages/arb-bridge-eth/hardhat.dev-config.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/arb-bridge-eth/hardhat.dev-config.ts b/packages/arb-bridge-eth/hardhat.dev-config.ts index e5af0f0e16..6cd6b1f7d1 100644 --- a/packages/arb-bridge-eth/hardhat.dev-config.ts +++ b/packages/arb-bridge-eth/hardhat.dev-config.ts @@ -62,6 +62,12 @@ const config = { ? [process.env['MAINNET_PRIVKEY']] : [], }, + nova: { + url: 'https://nova.arbitrum.io/rpc', + accounts: process.env['MAINNET_PRIVKEY'] + ? [process.env['MAINNET_PRIVKEY']] + : [], + }, rinkeby: { url: 'https://rinkeby.infura.io/v3/' + process.env['INFURA_KEY'], accounts: process.env['DEVNET_PRIVKEY'] @@ -69,12 +75,23 @@ const config = { : [], }, arbRinkeby: { - gasPrice: 0, url: 'https://rinkeby.arbitrum.io/rpc', accounts: process.env['DEVNET_PRIVKEY'] ? [process.env['DEVNET_PRIVKEY']] : [], }, + goerli: { + url: 'https://goerli.infura.io/v3/' + process.env['INFURA_KEY'], + accounts: process.env['DEVNET_PRIVKEY'] + ? [process.env['DEVNET_PRIVKEY']] + : [], + }, + arbGoerliRollup: { + url: 'https://goerli-rollup.arbitrum.io/rpc', + accounts: process.env['DEVNET_PRIVKEY'] + ? [process.env['DEVNET_PRIVKEY']] + : [], + }, arbitrum: { url: 'http://127.0.0.1:8547', gas: 999999999999999, From 77f6ed62449a2dfedfada3ae428b9436b31d7525 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Mon, 1 Aug 2022 17:17:35 +0800 Subject: [PATCH 088/128] chore: testnet deployments --- .../_deployments/421611_queued-updates.json | 27 ++++++++++++++++++- .../_deployments/421613_queued-updates.json | 26 ++++++++++++++++++ .../_deployments/4_queued-updates.json | 27 ++++++++++++++++++- .../_deployments/5_queued-updates.json | 26 ++++++++++++++++++ 4 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 packages/arb-bridge-peripherals/_deployments/421613_queued-updates.json create mode 100644 packages/arb-bridge-peripherals/_deployments/5_queued-updates.json diff --git a/packages/arb-bridge-peripherals/_deployments/421611_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/421611_queued-updates.json index 0967ef424b..1c095a1951 100644 --- a/packages/arb-bridge-peripherals/_deployments/421611_queued-updates.json +++ b/packages/arb-bridge-peripherals/_deployments/421611_queued-updates.json @@ -1 +1,26 @@ -{} +{ + "L2GatewayRouter": { + "address": "0x9BB136adEa1E3dd0B132CAd18d69Ee444aC17bFd", + "deployTxn": "0xa660838e693561d61189e9ca831d118171509fefdac3ae257c0e422dcc61bcfc", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + }, + "L2ERC20Gateway": { + "address": "0x5574f6Cd9de0F9D224cE85e1cD6C4Be11132A385", + "deployTxn": "0xd1e86b6a6162b50fc16f4ae47fd4cbc8d4dce4421a5e9f0ac18c3af49aa0c7da", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + }, + "L2CustomGateway": { + "address": "0x02F95dFAc9B67EdCD9158c04fe30d114A013d08D", + "deployTxn": "0x4603823d126f5f78f228d2d3431a01d93a082b75e2e3ff2fb7d754c7b5789506", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + }, + "L2WethGateway": { + "address": "0x675a824f4B940c747caC35DA0CC3f7E441419942", + "deployTxn": "0x74f56f704a64a0b87306eb9a6480420ea137d043bf4d12c8e9fb490864bb0584", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + } +} diff --git a/packages/arb-bridge-peripherals/_deployments/421613_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/421613_queued-updates.json new file mode 100644 index 0000000000..307a02a4a3 --- /dev/null +++ b/packages/arb-bridge-peripherals/_deployments/421613_queued-updates.json @@ -0,0 +1,26 @@ +{ + "L2GatewayRouter": { + "address": "0xa707480046b0Bd1C602CCd1D83FCf7Bd367217E2", + "deployTxn": "0x3c2adecca82c874282a694a23faec77ae02cd3a19a17527855554fd77d93e4a9", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + }, + "L2ERC20Gateway": { + "address": "0xCbD2dC47b287C8324747A5AA2A71A8f939662B3e", + "deployTxn": "0x07c3734dd047f99ce9955d694517f2fa0b73def14bd46215847a747accb49702", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + }, + "L2CustomGateway": { + "address": "0x802B583C2f81415b047f1Ee19e498bDa7Efd6920", + "deployTxn": "0xb14f6f5b2e6c425f597b7438e32058441420c70aaa7ca8a6f505b5d935cfb820", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + }, + "L2WethGateway": { + "address": "0x3BD10e97ECa83B362dA291beFdA0f1ba70D31411", + "deployTxn": "0xe35957e6aef4d5919b8d7d93ff1b575dd5c50aa3b3dc944be07ac913d46a2846", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + } +} diff --git a/packages/arb-bridge-peripherals/_deployments/4_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/4_queued-updates.json index 0967ef424b..4bffe68e10 100644 --- a/packages/arb-bridge-peripherals/_deployments/4_queued-updates.json +++ b/packages/arb-bridge-peripherals/_deployments/4_queued-updates.json @@ -1 +1,26 @@ -{} +{ + "L1GatewayRouter": { + "address": "0x8b6990830cF135318f75182487A4D7698549C717", + "deployTxn": "0xee36d85905a0ef010d85f2d023f30dd8cb91eccba755256ede147d6b3f29e8f9", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + }, + "L1ERC20Gateway": { + "address": "0x185ff5e33c4df31C715B386916A49fc2f80fFe4c", + "deployTxn": "0x041673dd25b9dbc4a831b0ee4d795563ecd67e21c3b3fe58d07d17698b44df4b", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + }, + "L1CustomGateway": { + "address": "0xf9F2e89c8347BD96742Cc07095dee490e64301d6", + "deployTxn": "0xae2522d1fe13f69007fc63869fb8640f69e2ad59df599e284bb39e0ee2f5627e", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + }, + "L1WethGateway": { + "address": "0x2063a7def7614347896c880C0F04788De18A8dEb", + "deployTxn": "0x45078b798a2f6b9cdcd8a98fc1a8c145b278ee9da56ea5d9f12ea9117b94a153", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + } +} diff --git a/packages/arb-bridge-peripherals/_deployments/5_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/5_queued-updates.json new file mode 100644 index 0000000000..b9b4e6553e --- /dev/null +++ b/packages/arb-bridge-peripherals/_deployments/5_queued-updates.json @@ -0,0 +1,26 @@ +{ + "L1GatewayRouter": { + "address": "0x5664F1f04bb9f5eF1970D6e12Be073F73AacA854", + "deployTxn": "0xde3262b207e171ee9ef342aed0d631adc8e23e5783079d7a8a2803fe0ad8b01f", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + }, + "L1ERC20Gateway": { + "address": "0xea066056f73156E80090C24ADAC5d47CEc313a2d", + "deployTxn": "0x02c5ed6eec83e3cc015373f85cb2ca89826d66bf3f5b7caf91d79c4ae561a38f", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + }, + "L1CustomGateway": { + "address": "0x161183c42E54F709Bd7b8c12670957f2Ee150299", + "deployTxn": "0xb071c5c0153295e0c7e177a3d9d9f770206a305680e3461e16b9c92202f8f219", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + }, + "L1WethGateway": { + "address": "0xAA82b5384ef36c5EFdCe36300dc1E85CA45ad1D8", + "deployTxn": "0x2c349a6110c697aebb2fb0a74c71ec78f04b94ec608443052b61e802420de4b9", + "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", + "buildInfo": "" + } +} From e11f8c02c2886c65503904ac97aed654fb7fe41f Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Mon, 1 Aug 2022 17:44:24 +0800 Subject: [PATCH 089/128] chore: bump hardhat-etherscan to 3.1.0 --- packages/arb-bridge-eth/package.json | 2 +- packages/arb-bridge-peripherals/package.json | 2 +- yarn.lock | 17 ++++++++++------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/arb-bridge-eth/package.json b/packages/arb-bridge-eth/package.json index 43bfdd6bb9..421d501238 100644 --- a/packages/arb-bridge-eth/package.json +++ b/packages/arb-bridge-eth/package.json @@ -56,7 +56,7 @@ "@ethersproject/hardware-wallets": "^5.4.0", "@ethersproject/providers": "^5.4.5", "@nomiclabs/hardhat-ethers": "^2.0.1", - "@nomiclabs/hardhat-etherscan": "^2.1.0", + "@nomiclabs/hardhat-etherscan": "^3.1.0", "@nomiclabs/hardhat-waffle": "^2.0.1", "@typechain/ethers-v5": "^7.0.1", "@typechain/hardhat": "^2.3.0", diff --git a/packages/arb-bridge-peripherals/package.json b/packages/arb-bridge-peripherals/package.json index 3344adc552..b56cbe047d 100644 --- a/packages/arb-bridge-peripherals/package.json +++ b/packages/arb-bridge-peripherals/package.json @@ -39,7 +39,7 @@ }, "devDependencies": { "@nomiclabs/hardhat-ethers": "^2.0.1", - "@nomiclabs/hardhat-etherscan": "^2.1.0", + "@nomiclabs/hardhat-etherscan": "^3.1.0", "@nomiclabs/hardhat-waffle": "^2.0.1", "@typechain/hardhat": "^2.3.0", "@types/chai": "^4.2.15", diff --git a/yarn.lock b/yarn.lock index 38ac0d8f23..50778b4cce 100644 --- a/yarn.lock +++ b/yarn.lock @@ -808,18 +808,21 @@ resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.5.tgz#131b0da1b71680d5a01569f916ae878229d326d3" integrity sha512-A2gZAGB6kUvLx+kzM92HKuUF33F1FSe90L0TmkXkT2Hh0OKRpvWZURUSU2nghD2yC4DzfEZ3DftfeHGvZ2JTUw== -"@nomiclabs/hardhat-etherscan@^2.1.0": - version "2.1.8" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-2.1.8.tgz#e206275e96962cd15e5ba9148b44388bc922d8c2" - integrity sha512-0+rj0SsZotVOcTLyDOxnOc3Gulo8upo0rsw/h+gBPcmtj91YqYJNhdARHoBxOhhE8z+5IUQPx+Dii04lXT14PA== +"@nomiclabs/hardhat-etherscan@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.0.tgz#7137554862b3b1c914f1b1bf110f0529fd2dec53" + integrity sha512-JroYgfN1AlYFkQTQ3nRwFi4o8NtZF7K/qFR2dxDUgHbCtIagkUseca9L4E/D2ScUm4XT40+8PbCdqZi+XmHyQA== dependencies: "@ethersproject/abi" "^5.1.2" "@ethersproject/address" "^5.0.2" cbor "^5.0.2" + chalk "^2.4.2" debug "^4.1.1" fs-extra "^7.0.1" - node-fetch "^2.6.0" + lodash "^4.17.11" semver "^6.3.0" + table "^6.8.0" + undici "^5.4.0" "@nomiclabs/hardhat-waffle@^2.0.1": version "2.0.3" @@ -7746,7 +7749,7 @@ node-environment-flags@1.0.6: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" -node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: +node-fetch@^2.6.1, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -10050,7 +10053,7 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -table@^6.0.9: +table@^6.0.9, table@^6.8.0: version "6.8.0" resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== From ec8b88cd6ab1a603382355ac33b32e9ad76b1c71 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Mon, 1 Aug 2022 17:45:21 +0800 Subject: [PATCH 090/128] chore: add custom chain configs --- packages/arb-bridge-eth/hardhat.dev-config.ts | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/packages/arb-bridge-eth/hardhat.dev-config.ts b/packages/arb-bridge-eth/hardhat.dev-config.ts index 6cd6b1f7d1..878e183e33 100644 --- a/packages/arb-bridge-eth/hardhat.dev-config.ts +++ b/packages/arb-bridge-eth/hardhat.dev-config.ts @@ -90,7 +90,7 @@ const config = { url: 'https://goerli-rollup.arbitrum.io/rpc', accounts: process.env['DEVNET_PRIVKEY'] ? [process.env['DEVNET_PRIVKEY']] - : [], + : [], }, arbitrum: { url: 'http://127.0.0.1:8547', @@ -129,7 +129,34 @@ const config = { bail: true, }, etherscan: { - apiKey: process.env['ETHERSCAN_API_KEY'], + apiKey: { + mainnet: process.env['ETHERSCAN_API_KEY'], + kovan: process.env['ETHERSCAN_API_KEY'], + rinkeby: process.env['ETHERSCAN_API_KEY'], + goerli: process.env['ETHERSCAN_API_KEY'], + arbitrumOne: process.env['ARBISCAN_API_KEY'], + arbitrumTestnet: process.env['ARBISCAN_API_KEY'], + nova: '0', + arbGoerliRollup: '0', + }, + customChains: [ + { + network: 'nova', + chainId: 42170, + urls: { + apiURL: 'https://nova-explorer.arbitrum.io/api', + browserURL: 'https://nova-explorer.arbitrum.io/', + }, + }, + { + network: 'arbGoerliRollup', + chainId: 421613, + urls: { + apiURL: 'https://goerli-rollup-explorer.arbitrum.io/api', + browserURL: 'https://goerli-rollup-explorer.arbitrum.io/', + }, + }, + ], }, } From fdffe7cb883708db6b8c7d3db7d7b2fb0632c0df Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Mon, 1 Aug 2022 17:45:53 +0800 Subject: [PATCH 091/128] chore: add goerli override --- packages/arb-bridge-eth/hardhat.dev-config.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/arb-bridge-eth/hardhat.dev-config.ts b/packages/arb-bridge-eth/hardhat.dev-config.ts index 878e183e33..f4c56ae82b 100644 --- a/packages/arb-bridge-eth/hardhat.dev-config.ts +++ b/packages/arb-bridge-eth/hardhat.dev-config.ts @@ -187,6 +187,15 @@ if (process.env['KOVAN_URL'] && process.env['KOVAN_MNEMONIC']) { } } +if (process.env['GOERLI_URL'] && process.env['GOERLI_MNEMONIC']) { + ;(config.networks as any)['goerli'] = { + url: process.env['GOERLI_URL'] || '', + accounts: [process.env['GOERLI_MNEMONIC'] || ''], + network_id: 42, + confirmations: 4, + } +} + if (!process.env['DEVNET_PRIVKEY']) console.warn('No devnet privkey set') export { config } From aef81bfcd822460c28adbbeb4ec345ae910178c8 Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Mon, 1 Aug 2022 18:41:31 -0700 Subject: [PATCH 092/128] Unified Nitro node instructions --- docs/Public_Chains.md | 17 +++--- docs/Running_Goerli_Nitro_Node.md | 80 -------------------------- docs/Running_Nitro_Node.md | 88 +++++++++++++++++++++++++++-- docs/Running_Rinkeby_Nitro_Node.md | 90 ------------------------------ 4 files changed, 90 insertions(+), 185 deletions(-) delete mode 100644 docs/Running_Goerli_Nitro_Node.md delete mode 100644 docs/Running_Rinkeby_Nitro_Node.md diff --git a/docs/Public_Chains.md b/docs/Public_Chains.md index faad94e944..81f5017116 100644 --- a/docs/Public_Chains.md +++ b/docs/Public_Chains.md @@ -7,13 +7,12 @@ sidebar_label: Public Arbitrum Chains The following is a comprehensive list of all of the currently live Arbitrum chains: -| Name | ID | Type | Underlying L1 | Current Tech Stack | RPC Url(s) | Explorer(s) | Native Currency | Retryable Dashboard | -| ------------------------------- | ------ | ------- | ------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | --------------- | ------------------------------------------------------------------------------------ | -| Arbitrum One | 42161 | Mainnet | Ethereum | Classic Rollup | [arb1.arbitrum.io/rpc](https://arb1.arbitrum.io/rpc) [arbitrum-mainnet.infura.io/v3/-ID](https://arbitrum-mainnet.infura.io/v3/YOUR-PROJECT-ID) [arb-mainnet.g.alchemy.com/v2/-KEY](https://arb-mainnet.g.alchemy.com/v2/your-api-key) | [arbiscan.io](https://arbiscan.io/) [explorer.arbitrum.io/](https://explorer.arbitrum.io/) | ETH | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | -| Arbitrum Nova | 42170 | Mainnet | Ethereum | Nitro AnyTrust | [nova.arbitrum.io/rpc](https://nova.arbitrum.io/rpc) | [nova-explorer.arbitrum.io/](https://nova-explorer.arbitrum.io/) | ETH | [retryable-tx-panel-nitro.arbitrum.io](http://retryable-tx-panel-nitro.arbitrum.io/) | -| RinkArby | 421611 | Testnet | Rinkeby | Nitro Rollup | [rinkeby.arbitrum.io/rpc](https://rinkeby.arbitrum.io/rpc) | [testnet.arbiscan.io](https://testnet.arbiscan.io/) [rinkeby-explorer.arbitrum.io](https://rinkeby-explorer.arbitrum.io/) | RinkebyETH | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | -| Nitro Goerli Rollup Testnet | 421613 | Testnet | Goerli | Nitro Rollup | [goerli-rollup.arbitrum.io/rpc](https://goerli-rollup.arbitrum.io/rpc) | [goerli-rollup-explorer.arbitrum.io](https://goerli-rollup-explorer.arbitrum.io/) | GoerliETH | [retryable-tx-panel-nitro.arbitrum.io](http://retryable-tx-panel-nitro.arbitrum.io/) | -| Nitro Devnet [Deprecated Soon!] | 421612 | Testnet | Goerli | Nitro Rollup | [nitro-devnet.arbitrum.io/rpc](https://nitro-devnet.arbitrum.io/rpc) | [nitro-devnet-explorer.arbitrum.io](https://nitro-devnet-explorer.arbitrum.io/) | GoerliETH | [retryable-tx-panel-nitro.arbitrum.io](http://retryable-tx-panel-nitro.arbitrum.io/) | +| Name | ID | Type | Underlying L1 | Current Tech Stack | RPC Url(s) | Feed URLs | Nitro Seed Database URLs | Explorer(s) | Native Currency | Retryable Dashboard | +| ------------------------------- | ------ | ------- | ------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | --------------- | ------------------------------------------------------------------------------------ | +| Arbitrum One | 42161 | Mainnet | Ethereum | Classic Rollup | [arb1.arbitrum.io/rpc](https://arb1.arbitrum.io/rpc) [arbitrum-mainnet.infura.io/v3/-ID](https://arbitrum-mainnet.infura.io/v3/YOUR-PROJECT-ID) [arb-mainnet.g.alchemy.com/v2/-KEY](https://arb-mainnet.g.alchemy.com/v2/your-api-key) | [wss://arb1.arbitrum.io/feed](wss://arb1.arbitrum.io/feed) | Not Available Yet | [arbiscan.io](https://arbiscan.io/) [explorer.arbitrum.io/](https://explorer.arbitrum.io/) | ETH | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | +| Arbitrum Nova | 42170 | Mainnet | Ethereum | Nitro AnyTrust | [nova.arbitrum.io/rpc](https://nova.arbitrum.io/rpc) | [wss://nova.arbitrum.io/feed](wss://nova.arbitrum.io/feed) | N/A | [nova-explorer.arbitrum.io/](https://nova-explorer.arbitrum.io/) | ETH | [retryable-tx-panel-nitro.arbitrum.io](http://retryable-tx-panel-nitro.arbitrum.io/) | +| RinkArby | 421611 | Testnet | Rinkeby | Nitro Rollup | [rinkeby.arbitrum.io/rpc](https://rinkeby.arbitrum.io/rpc) | [wss://rinkeby.arbitrum.io/feed](wss://rinkeby.arbitrum.io/feed) | https://snapshot.arbitrum.io/rinkeby/nitro.tar | [testnet.arbiscan.io](https://testnet.arbiscan.io/) [rinkeby-explorer.arbitrum.io](https://rinkeby-explorer.arbitrum.io/) | RinkebyETH | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | +| Nitro Goerli Rollup Testnet | 421613 | Testnet | Goerli | Nitro Rollup | [goerli-rollup.arbitrum.io/rpc](https://goerli-rollup.arbitrum.io/rpc) | [wss://goerli-rollup.arbitrum.io/feed](wss://goerli-rollup.arbitrum.io/feed) | N/A | [goerli-rollup-explorer.arbitrum.io](https://goerli-rollup-explorer.arbitrum.io/) | GoerliETH | [retryable-tx-panel-nitro.arbitrum.io](http://retryable-tx-panel-nitro.arbitrum.io/) | For a list of useful contract addresses, see [here](Useful_Addresses.md). @@ -28,8 +27,6 @@ For a list of useful contract addresses, see [here](Useful_Addresses.md). **Nitro Goerli Rollup Testnet**: This testnet (421613) uses the Nitro rollup tech stack; it is expected to be the primary, stable Arbitrum testnet moving forward. -**Arbitrum Nitro Devnet**: The devnet chain (421612) will soon be deprecated in favor of 421613; for last minute bridging needs, use https://nitro-devnet-bridge.arbitrum.io. - ## Using Arbitrum _**Note: before interacting with a mainnet chain, users should familiarize themselves with the risks; see [Mainnet Beta](Mainnet.md)**_. @@ -62,5 +59,5 @@ Dapp developers can build on Arbitrum seamlessly using their favorite Ethereum t ### What's Next -The team working on Arbitrum is always interested and looking forward to engage with its users. +The team working on Arbitrum is always interested and looking forward to engage with its users. Why not follow us on [Twitter](https://twitter.com/arbitrum) or join our community on [Discord](https://discord.gg/5KE54JwyTs)? diff --git a/docs/Running_Goerli_Nitro_Node.md b/docs/Running_Goerli_Nitro_Node.md deleted file mode 100644 index 5eb18dc553..0000000000 --- a/docs/Running_Goerli_Nitro_Node.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -id: Running_Goerli_Nitro_Node -title: Running full Nitro node for Arbitrum Goerli TestNet -sidebar_label: Running a Goerli Nitro Node ---- - -Note: If you’re interested in accessing the Arbitrum Goerli network but you don’t want to setup your own node, see our [Node Providers](https://developer.offchainlabs.com/docs/node_providers) to get RPC access to fully-managed nodes hosted by one of our partners! - -### Required Artifacts - -- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72` - -### Required parameter - -- `--l1.url=` - - Must provide standard Ethereum node RPC endpoint. -- `--l2.chain-id=421613` - - Used to select Goerli Nitro Rollup Testnet - -### Important ports - -- RPC: `8547` -- WebSocket: `8548` -- Sequencer Feed: `9642` - -### Putting it all together - -- When running docker image, an external volume should be mounted to persist the database across restarts. The mount point should be `/home/user/.arbitrum/`. -- Here is an example of how to run nitro-node for goerli: - - - Note that is important that `/some/local/dir/arbitrum` already exists, otherwise the directory might be created with `root` as owner, and the docker container won't be able to write to it. - - ``` - docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-goerli-node:8545 --l2.chain-id=421613 --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* - ``` - - - Note that if you are running L1 node on localhost, you may need to add `--network host` right after `docker run` to use docker host-based networking - -### Note on permissions - -- The Docker image is configured to run as non-root UID 1000. This means if you are running in Linux or OSX and you are getting permission errors when trying to run the docker image, run this command to allow all users to update the persistent folders - ``` - mkdir /some/local/dir/arbitrum-goerli - chmod -fR 777 /some/local/dir/arbitrum-goerli - ``` - -### Optional parameters - -- `--http.api` - - APIs offered over the HTTP-RPC interface (default `net,web3,eth`) - - Add `debug` to enable tracing -- `--http.corsdomain` - - Comma separated list of domains from which to accept cross origin requests, or `*` for all domains (browser enforced) -- `--http.vhosts` - - Comma separated list of virtual hostnames from which to accept requests (server enforced). Accepts `*` wildcard (default `localhost`) -- `--node.archive` - - Retain past block state -- `--node.feed.input.url=` - - Defaults to `wss://goerli-rollup.arbitrum.io/feed`. If running more than a couple nodes, you will want to provide one feed relay per datacenter, see further instructions below. -- `--node.forwarding-target=` - - Defaults to `https://goerli-rollup.arbitrum.io/rpc` -- `--node.rpc.evm-timeout` - - Defaults to `5s`, timeout used for `eth_call` (0 == no timeout) -- `--node.rpc.gas-cap` - - Defaults to `50000000`, cap on computation gas that can be used in `eth_call`/`estimateGas` (0 = no cap) -- `--node.rpc.tx-fee-cap` - - Defaults to `1`, cap on transaction fee (in ether) that can be sent via the RPC APIs (0 = no cap) - -### Arb-Relay - -- When running more than one node, you want to run a single arb-relay which can provide a feed for all your nodes. - The arb-relay is in the same docker image. -- Here is an example of how to run nitro-relay for goerli: - ``` - docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --node.feed.output.addr=0.0.0.0 --node.feed.input.url wss://goerli-rollup.arbitrum.io/feed - ``` -- Here is an example of how to run nitro-node for goerli with custom relay: - ``` - docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-goerli-node:8545 --l2.chain-id=421613 --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* --feed.input.url ws://local-relay-address:9642 - ``` diff --git a/docs/Running_Nitro_Node.md b/docs/Running_Nitro_Node.md index 1370502258..62246b194d 100644 --- a/docs/Running_Nitro_Node.md +++ b/docs/Running_Nitro_Node.md @@ -1,12 +1,90 @@ --- id: Running_Nitro_Node -title: Running full Nitro node for Arbitrum TestNet +title: Running full node for any of the Arbitrum Nitro chains sidebar_label: Running a Nitro Node --- -There are currently two Nitro testnets, one on Rinkeby and one on Goerli. Rinkeby is currently slated to be -stopped sometime after the mainnet merge, so it is preferable to use the Goerli testnet going forward. +Note: If you’re interested in accessing an Arbitrum chain, but you don’t want to set up your own node, see our [Node Providers](https://developer.offchainlabs.com/docs/node_providers) to get RPC access to fully-managed nodes hosted by one of our partners! -[Georli Testnet (recommended Nitro testnet)](Running_Goerli_Nitro_Node.md) +### Required Artifacts -[Rinkeby Testnet (will be stopped at some point)](Running_Rinkeby_Nitro_Node.md) +- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72` + +- Only if using Rinkeby: Rinkeby Nitro Seed Database Snapshot + - Use the parameter `--init.url="https://snapshot.arbitrum.io/rinkeby/nitro.tar"` on first startup to initialize Nitro database + - If running more than one node, easiest to manually download image from https://snapshot.arbitrum.io/rinkeby/nitro.tar and host it locally for your nodes + +### Required parameter + +- `--l1.url=` + - Must provide standard layer 1 node RPC endpoint that you run yourself or from a node provider +- `--l2.chain-id=` + - See [Public Arbitrum Chains](Public_Chains.md) for the appropriate Nitro Chain ID (Arbitrum One is not running Nitro yet) + +### Important ports + +- RPC: `8547` +- WebSocket: `8548` +- Sequencer Feed: `9642` + +### Putting it all together + +- When running docker image, an external volume should be mounted to persist the database across restarts. The mount point inside the docker image should be `/home/user/.arbitrum`. +- Here is an example of how to run nitro-node: + + - Note that is important that `/some/local/dir/arbitrum` already exists, otherwise the directory might be created with `root` as owner, and the docker container won't be able to write to it. + + ``` + docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-node:8545 --l2.chain-id= --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* + ``` + + - Note that if you are running L1 node on localhost, you may need to add `--network host` right after `docker run` to use docker host-based networking + +### Note on permissions + +- The Docker image is configured to run as non-root UID 1000. This means if you are running in Linux or OSX and you are getting permission errors when trying to run the docker image, run this command to allow all users to update the persistent folders + ``` + mkdir /data/arbitrum + chmod -fR 777 /data/arbitrum + ``` + +### Optional parameters + +- `--init.url="https://snapshot.arbitrum.io/rinkeby/nitro.tar"` + - URL to download seed database from. Only needed when starting Rinkeby Testnet without database +- `--node.rpc.classic-redirect=` + - If set, will redirect archive requests for pre-nitro blocks to the designated RPC, which should be an Arbitrum Classic node with archive database. Only valid for Rinkeby Testnet +- `--http.api` + - APIs offered over the HTTP-RPC interface (default `net,web3,eth`) + - Add `debug` to enable tracing +- `--http.corsdomain` + - Comma separated list of domains from which to accept cross origin requests (browser enforced) +- `--http.vhosts` + - Comma separated list of virtual hostnames from which to accept requests (server enforced). Accepts `*` wildcard (default `localhost`) +- `--http.addr` + - Address to bind RPC to. May need to be set to `0.0.0.0` for docker networking to work properly +- `--node.archive` + - Retain past block state +- `--node.feed.input.url=` + - Defaults to `wss://.arbitrum.io/feed`. If running more than a couple nodes, you will want to provide one feed relay per datacenter, see further instructions below. +- `--node.forwarding-target=` + - Defaults to appropriate L2 Sequencer RPC depending on L1 and L2 chain IDs provided. +- `--node.rpc.evm-timeout` + - Defaults to `5s`, timeout used for `eth_call` (0 == no timeout) +- `--node.rpc.gas-cap` + - Defaults to `50000000`, cap on computation gas that can be used in `eth_call`/`estimateGas` (0 = no cap) +- `--node.rpc.tx-fee-cap` + - Defaults to `1`, cap on transaction fee (in ether) that can be sent via the RPC APIs (0 = no cap) + +### Arb-Relay + +- When running more than one node, you want to run a single arb-relay which can provide a feed for all your nodes. + The arb-relay is in the same docker image. +- Here is an example of how to run nitro-relay for Rinkeby: + ``` + docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --node.feed.output.addr=0.0.0.0 --node.feed.input.url wss://rinkeby.arbitrum.io/feed + ``` +- Here is an example of how to run nitro-node for Rinkeby with custom relay: + ``` + docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-rinkeby-node:8545 --l2.chain-id=421611 --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* --node.feed.input.url ws://local-relay-address:9642 + ``` diff --git a/docs/Running_Rinkeby_Nitro_Node.md b/docs/Running_Rinkeby_Nitro_Node.md deleted file mode 100644 index 05742665e0..0000000000 --- a/docs/Running_Rinkeby_Nitro_Node.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -id: Running_Rinkeby_Nitro_Node -title: Running full Nitro node for Arbitrum Rinkeby TestNet after Nitro upgrade -sidebar_label: Running a Rinkeby Nitro Node ---- - -Note: Rinkeby Nitro nodes will only work after the Nitro upgrade scheduled for Thursday, July 28th. After the update, Rinkeby Classic nodes will stop updating, and only useful for archive requests for pre-Nitro blocks. - -Note: If you’re interested in accessing the Arbitrum Rinkeby network but you don’t want to setup your own node, see our [Node Providers](https://developer.offchainlabs.com/docs/node_providers) to get RPC access to fully-managed nodes hosted by one of our partners! - -### Required Artifacts - -- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72` - -- Rinkeby Nitro Seed Database Snapshot - - Use the parameter `--init.url="https://snapshot.arbitrum.io/rinkeby/nitro.tar"` on first startup to initialize Nitro database - - If running more than one node, easiest to manually download image from https://snapshot.arbitrum.io/rinkeby/nitro.tar and host it locally for your nodes - -### Required parameter - -- `--l1.url=` - - Must provide standard Rinkeby Testnet node RPC endpoint. -- `--l2.chain-id=421611` - - Used to select Rinkeby Nitro Rollup Testnet - -### Important ports - -- RPC: `8547` -- WebSocket: `8548` -- Sequencer Feed: `9642` - -### Putting it all together - -- When running docker image, an external volume should be mounted to persist the database across restarts. The mount point inside the docker image should be `/home/user/.arbitrum`. -- Here is an example of how to run nitro-node for Rinkeby: - - - Note that is important that `/some/local/dir/arbitrum` already exists, otherwise the directory might be created with `root` as owner, and the docker container won't be able to write to it. - - ``` - docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-rinkeby-node:8545 --l2.chain-id=421611 --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* - ``` - - - Note that if you are running L1 node on localhost, you may need to add `--network host` right after `docker run` to use docker host-based networking - -### Note on permissions - -- The Docker image is configured to run as non-root UID 1000. This means if you are running in Linux or OSX and you are getting permission errors when trying to run the docker image, run this command to allow all users to update the persistent folders - ``` - mkdir /some/local/dir/rinkeby-nitro - chmod -fR 777 /some/local/dir/rinkeby-nitro - ``` - -### Optional parameters - -- `--init.url="https://snapshot.arbitrum.io/rinkeby/nitro.tar"` - - URL to download seed database from. Only needed when starting without database -- `--node.rpc.classic-redirect=` - - If set, will redirect archive requests for pre-nitro blocks to the designated RPC, which should be an Arbitrum Classic node with archive database -- `--http.api` - - APIs offered over the HTTP-RPC interface (default `net,web3,eth`) - - Add `debug` to enable tracing -- `--http.corsdomain` - - Comma separated list of domains from which to accept cross origin requests (browser enforced) -- `--http.vhosts` - - Comma separated list of virtual hostnames from which to accept requests (server enforced). Accepts `*` wildcard (default `localhost`) -- `--node.archive` - - Retain past block state -- `--node.feed.input.url=` - - Defaults to `wss://rinkeby.arbitrum.io/feed`. If running more than a couple nodes, you will want to provide one feed relay per datacenter, see further instructions below. -- `--node.forwarding-target=` - - Defaults to `https://rinkeby.arbitrum.io/rpc` -- `--node.rpc.evm-timeout` - - Defaults to `5s`, timeout used for `eth_call` (0 == no timeout) -- `--node.rpc.gas-cap` - - Defaults to `50000000`, cap on computation gas that can be used in `eth_call`/`estimateGas` (0 = no cap) -- `--node.rpc.tx-fee-cap` - - Defaults to `1`, cap on transaction fee (in ether) that can be sent via the RPC APIs (0 = no cap) - -### Arb-Relay - -- When running more than one node, you want to run a single arb-relay which can provide a feed for all your nodes. - The arb-relay is in the same docker image. -- Here is an example of how to run nitro-relay for Rinkeby: - ``` - docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --node.feed.output.addr=0.0.0.0 --node.feed.input.url wss://rinkeby.arbitrum.io/feed - ``` -- Here is an example of how to run nitro-node for Rinkeby with custom relay: - ``` - docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-rinkeby-node:8545 --l2.chain-id=421611 --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* --node.feed.input.url ws://local-relay-address:9642 - ``` From 2416dc629b4026d63a5107c4f84b5ae19c8de589 Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Tue, 2 Aug 2022 06:41:41 -0700 Subject: [PATCH 093/128] Address code review comments --- docs/Running_Node.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Running_Node.md b/docs/Running_Node.md index 11ba4c8f2b..630ba0148f 100644 --- a/docs/Running_Node.md +++ b/docs/Running_Node.md @@ -6,7 +6,7 @@ sidebar_label: Running a Node Note: The Arbitrum Rinkeby testnet has been upgraded to Nitro, and the classic node is only useful for archive requests for pre-Nitro blocks on Rinkeby. Mainnet Nitro upgrade date will be announced at a later date -Note: If you’re interested in accessing the Arbitrum network but you don’t want to setup your own node, see our [Node Providers](https://developer.offchainlabs.com/docs/node_providers) to get RPC access to fully-managed nodes hosted by one of our partners! +Note: If you’re interested in accessing the Arbitrum network but you don’t want to setup your own node, see our [Node Providers](https://developer.offchainlabs.com/docs/node_providers) to get RPC access to fully-managed nodes hosted by a third party provider ### Required Artifacts From d298d963c54fa7320d160ccee2a5b7607feb78ee Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Tue, 2 Aug 2022 10:31:59 -0700 Subject: [PATCH 094/128] Address code review comments --- docs/Running_Nitro_Node.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Running_Nitro_Node.md b/docs/Running_Nitro_Node.md index 62246b194d..e984faae0d 100644 --- a/docs/Running_Nitro_Node.md +++ b/docs/Running_Nitro_Node.md @@ -4,7 +4,7 @@ title: Running full node for any of the Arbitrum Nitro chains sidebar_label: Running a Nitro Node --- -Note: If you’re interested in accessing an Arbitrum chain, but you don’t want to set up your own node, see our [Node Providers](https://developer.offchainlabs.com/docs/node_providers) to get RPC access to fully-managed nodes hosted by one of our partners! +Note: If you’re interested in accessing an Arbitrum chain, but you don’t want to set up your own node, see our [Node Providers](https://developer.offchainlabs.com/docs/node_providers) to get RPC access to fully-managed nodes hosted by a third party provider ### Required Artifacts From d417bf98e23c975957a32f9bbdeacfbbb4ec05b5 Mon Sep 17 00:00:00 2001 From: pearring Date: Tue, 2 Aug 2022 07:58:05 -1000 Subject: [PATCH 095/128] Update Tutorials.md Add tutorials and docs pages from other providers --- docs/Tutorials.md | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/docs/Tutorials.md b/docs/Tutorials.md index 70bec2aa92..ea21af2b2b 100644 --- a/docs/Tutorials.md +++ b/docs/Tutorials.md @@ -19,12 +19,32 @@ It includes: And more! -Our partners [Alchemy](https://alchemy.com/?a=arbitrum-docs) and [Web3 University](https://web3.university) provide a number of useful tutorials on building smart contracts and client applications in the Ethereum ecosystem. All of the following projects will work equivalently with the Arbitrum ecosystem simply by swapping out the deploying network to be arb-mainnet or arb-rinkeby. +Our partners across the ecosystem provide a number of useful tutorials on building smart contracts and client applications in the Ethereum ecosystem. All of the following projects will work equivalently with the Arbitrum ecosystem simply by swapping out the deploying network to be arb-mainnet or arb-rinkeby. + +- [Alchemy](https://alchemy.com/?a=arbitrum-docs) + + - ✅ [How to Get the Latest Block on Ethereum](https://docs.alchemy.com/alchemy/introduction/getting-started/simple-web3-script) + + - ✅ [How to Send Transactions on Ethereum](https://docs.alchemy.com/alchemy/introduction/getting-started/sending-txs) + +- [Infura](https://docs.infura.io/infura/networks/arbitrum) + + - ✅ [Send a Transaction](https://docs.infura.io/infura/tutorials/ethereum/send-a-transaction) + + - ✅ [Create an NFT Using Truffle](https://docs.infura.io/infura/tutorials/ethereum/create-an-nft-using-truffle) + +- [QuickNode](https://www.quicknode.com/docs/arbitrum) + + - ✅ [How to Write an Ethereum Smart Contract](https://www.quicknode.com/guides/solidity/how-to-write-an-ethereum-smart-contract-using-solidity) + + - ✅ [Create and Deploy an ERC-721](https://www.quicknode.com/guides/solidity/how-to-create-and-deploy-an-erc-721-nft) + +- [Web3 University](https://web3.university) + + - ✅ [Create Your First Smart Contract](https://www.web3.university/tracks/create-a-smart-contract) + + - ✅ [How to Build Your First NFT](https://www.web3.university/tracks/build-your-first-nft) -- ✅ [How to Get the Latest Block on Ethereum](https://docs.alchemy.com/alchemy/introduction/getting-started/simple-web3-script) -- ✅ [How to Send Transactions on Ethereum](https://docs.alchemy.com/alchemy/introduction/getting-started/sending-txs) -- ✅ [Create Your First Smart Contract](https://www.web3.university/tracks/create-a-smart-contract) -- ✅ [How to Build Your First NFT](https://www.web3.university/tracks/build-your-first-nft) From 1332b2cfbf0764a400ec61ce5369a81e985d10ff Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 3 Aug 2022 00:38:27 +0800 Subject: [PATCH 096/128] docs: goerli rollup deployment json --- .../_deployments/5_current_deployment.json | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 packages/arb-bridge-peripherals/_deployments/5_current_deployment.json diff --git a/packages/arb-bridge-peripherals/_deployments/5_current_deployment.json b/packages/arb-bridge-peripherals/_deployments/5_current_deployment.json new file mode 100644 index 0000000000..27493b295c --- /dev/null +++ b/packages/arb-bridge-peripherals/_deployments/5_current_deployment.json @@ -0,0 +1,33 @@ +{ + "proxyAdminAddress": "0x16101A84B00344221E2983190718bFAba30D9CeE", + "contracts": { + "L1GatewayRouter": { + "proxyAddress": "0x4c7708168395aEa569453Fc36862D2ffcDaC588c", + "implAddress": "0x23BfBCa0e0B1B8C351Ea80B586F4eF468040A203", + "implDeploymentTxn": "0x6add19e7b0317adde24600564de5f3372aeb6c80f0200b2bf90f561c817452c0", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + }, + "L1ERC20Gateway": { + "proxyAddress": "0x715D99480b77A8d9D603638e593a539E21345FdF", + "implAddress": "0xDa685EC2BD8D813267D5563029c5eCF390e73865", + "implDeploymentTxn": "0xbe1f8f4398257f3db4703f78a46c69dfea6a08d4f37b5942ec27ffba9653fabc", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + }, + "L1CustomGateway": { + "proxyAddress": "0x9fDD1C4E4AA24EEc1d913FABea925594a20d43C7", + "implAddress": "0x6F1eF246894b6269e2A98c741C36385F61EE1e32", + "implDeploymentTxn": "0xedee08a169cbe7ca8fac05250920d11bbe066cd58d9da2705feae9eb32cf02c4", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + }, + "L1WethGateway": { + "proxyAddress": "0x6e244cD02BBB8a6dbd7F626f05B2ef82151Ab502", + "implAddress": "0x391c9b3Cb3cAE0a653295f42267DaB8B0505e760", + "implDeploymentTxn": "0x40a7ee22ccf95e2fab76d5d602688b5275455f778bbe9f3e3e2f99680b50e33b", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + } + } +} From bbcec8d5693fc588ca4ecc384184d609a11ddc85 Mon Sep 17 00:00:00 2001 From: Harry Kalodner Date: Tue, 2 Aug 2022 23:55:32 -0400 Subject: [PATCH 097/128] Create 421613_current_deployment.json --- .../421613_current_deployment.json | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 packages/arb-bridge-peripherals/_deployments/421613_current_deployment.json diff --git a/packages/arb-bridge-peripherals/_deployments/421613_current_deployment.json b/packages/arb-bridge-peripherals/_deployments/421613_current_deployment.json new file mode 100644 index 0000000000..fe6b01c066 --- /dev/null +++ b/packages/arb-bridge-peripherals/_deployments/421613_current_deployment.json @@ -0,0 +1,40 @@ +{ + "proxyAdminAddress": "0xeC377B42712608B0356CC54Da81B2be1A4982bAb", + "contracts": { + "L2GatewayRouter": { + "proxyAddress": "0xE5B9d8d42d656d1DcB8065A6c012FE3780246041", + "implAddress": "0x1aef22B6b1272a6c0b78454CB96206FC289dCB33", + "implDeploymentTxn": "0x50b3abafe44cd945df0933c7dd84fbb9eafe74417067dd3183e4df920fb1fc65", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + }, + "L2ERC20Gateway": { + "proxyAddress": "0x2eC7Bc552CE8E51f098325D2FcF0d3b9d3d2A9a2", + "implAddress": "0x14b5426db177CE59864a90F70635a1a7945e396E", + "implDeploymentTxn": "0x48b85af1b086cc7d7f2f6d735efbdf9d9170c656835ac0529ae0653540d39152", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + }, + "L2CustomGateway": { + "proxyAddress": "0x8b6990830cF135318f75182487A4D7698549C717", + "implAddress": "0xB64c7f1A186a785fcfF594498f29Ea295853aF05", + "implDeploymentTxn": "0xf452c6a4fc0d612c085429560792eef83985b3759a778fea2f90323bfa37af7f", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + }, + "L2WethGateway": { + "proxyAddress": "0xf9F2e89c8347BD96742Cc07095dee490e64301d6", + "implAddress": "0x185ff5e33c4df31C715B386916A49fc2f80fFe4c", + "implDeploymentTxn": "0x27ecab5255d52ebc9585d0d88e341e502abfc05a6d03487738c943eefe3d7a1d", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + }, + "StandardArbERC20": { + "proxyAddress": "0xC0EaEeeb3Bb716ef3e49c2db0331e5bCaAb88865", + "implAddress": "0x2063a7def7614347896c880C0F04788De18A8dEb", + "implDeploymentTxn": "0x7ccdf95b0c6e46d12bfaac47f14343e3c227ad70f03625108e7c300339c63d5e", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + } + } +} From 5ee8d0ab7bfb8e8e513272b3b5e1929ad7735bab Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 3 Aug 2022 15:17:26 +0800 Subject: [PATCH 098/128] chore: testnet upgrade --- .../421611_current_deployment.json | 24 ++++++++--------- .../_deployments/421611_queued-updates.json | 27 +------------------ .../421613_current_deployment.json | 24 ++++++++--------- .../_deployments/421613_queued-updates.json | 27 +------------------ .../_deployments/4_current_deployment.json | 24 ++++++++--------- .../_deployments/4_queued-updates.json | 27 +------------------ .../_deployments/5_current_deployment.json | 24 ++++++++--------- .../_deployments/5_queued-updates.json | 27 +------------------ 8 files changed, 52 insertions(+), 152 deletions(-) diff --git a/packages/arb-bridge-peripherals/_deployments/421611_current_deployment.json b/packages/arb-bridge-peripherals/_deployments/421611_current_deployment.json index 8c11e6df0e..2ebd057176 100644 --- a/packages/arb-bridge-peripherals/_deployments/421611_current_deployment.json +++ b/packages/arb-bridge-peripherals/_deployments/421611_current_deployment.json @@ -3,30 +3,30 @@ "contracts": { "L2GatewayRouter": { "proxyAddress": "0x9413AD42910c1eA60c737dB5f58d1C504498a3cD", - "implAddress": "0x469C973A67B86416146935244FC6a56f9B6AaA76", - "implDeploymentTxn": "0x5ddbad36c06f9964866e95842e618703d34d939c6ce78c1fa695de143b3deb44", - "implArbitrumCommitHash": "5c06d89daf8fa6088bcdba292ffa6ed0c72afab2", + "implAddress": "0x9BB136adEa1E3dd0B132CAd18d69Ee444aC17bFd", + "implDeploymentTxn": "0xa660838e693561d61189e9ca831d118171509fefdac3ae257c0e422dcc61bcfc", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" }, "L2ERC20Gateway": { "proxyAddress": "0x195C107F3F75c4C93Eba7d9a1312F19305d6375f", - "implAddress": "0xfFac08AD8DCB91014C43861C4771e7C57ffE0997", - "implDeploymentTxn": "0x99cae0f5af7f49cedcab53eefe19bfabe365d1e5666196c846e76c18ae38441d", - "implArbitrumCommitHash": "5c06d89daf8fa6088bcdba292ffa6ed0c72afab2", + "implAddress": "0x5574f6Cd9de0F9D224cE85e1cD6C4Be11132A385", + "implDeploymentTxn": "0xd1e86b6a6162b50fc16f4ae47fd4cbc8d4dce4421a5e9f0ac18c3af49aa0c7da", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" }, "L2CustomGateway": { "proxyAddress": "0x9b014455AcC2Fe90c52803849d0002aeEC184a06", - "implAddress": "0xC2186a1cA4ff80A52B93D2A196BB5a5c0E7b74eC", - "implDeploymentTxn": "0x4ff31e618ec8e7d6c0ca160674fa8bb792655c47d2730a0169db2471e8e77332", - "implArbitrumCommitHash": "5c06d89daf8fa6088bcdba292ffa6ed0c72afab2", + "implAddress": "0x02F95dFAc9B67EdCD9158c04fe30d114A013d08D", + "implDeploymentTxn": "0x4603823d126f5f78f228d2d3431a01d93a082b75e2e3ff2fb7d754c7b5789506", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" }, "L2WethGateway": { "proxyAddress": "0xf94bc045c4E926CC0b34e8D1c41Cd7a043304ac9", - "implAddress": "0xFAd0fA56f1b7abAf568fb04A47F142C04BBf09c6", - "implDeploymentTxn": "0x8ba01c413599e209a72cab40d64e311252e1d72bb2aba7572993f0e9e08f22e7", - "implArbitrumCommitHash": "5c06d89daf8fa6088bcdba292ffa6ed0c72afab2", + "implAddress": "0x675a824f4B940c747caC35DA0CC3f7E441419942", + "implDeploymentTxn": "0x74f56f704a64a0b87306eb9a6480420ea137d043bf4d12c8e9fb490864bb0584", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" }, "StandardArbERC20": { diff --git a/packages/arb-bridge-peripherals/_deployments/421611_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/421611_queued-updates.json index 1c095a1951..0967ef424b 100644 --- a/packages/arb-bridge-peripherals/_deployments/421611_queued-updates.json +++ b/packages/arb-bridge-peripherals/_deployments/421611_queued-updates.json @@ -1,26 +1 @@ -{ - "L2GatewayRouter": { - "address": "0x9BB136adEa1E3dd0B132CAd18d69Ee444aC17bFd", - "deployTxn": "0xa660838e693561d61189e9ca831d118171509fefdac3ae257c0e422dcc61bcfc", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - }, - "L2ERC20Gateway": { - "address": "0x5574f6Cd9de0F9D224cE85e1cD6C4Be11132A385", - "deployTxn": "0xd1e86b6a6162b50fc16f4ae47fd4cbc8d4dce4421a5e9f0ac18c3af49aa0c7da", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - }, - "L2CustomGateway": { - "address": "0x02F95dFAc9B67EdCD9158c04fe30d114A013d08D", - "deployTxn": "0x4603823d126f5f78f228d2d3431a01d93a082b75e2e3ff2fb7d754c7b5789506", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - }, - "L2WethGateway": { - "address": "0x675a824f4B940c747caC35DA0CC3f7E441419942", - "deployTxn": "0x74f56f704a64a0b87306eb9a6480420ea137d043bf4d12c8e9fb490864bb0584", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - } -} +{} diff --git a/packages/arb-bridge-peripherals/_deployments/421613_current_deployment.json b/packages/arb-bridge-peripherals/_deployments/421613_current_deployment.json index fe6b01c066..8258e0d18f 100644 --- a/packages/arb-bridge-peripherals/_deployments/421613_current_deployment.json +++ b/packages/arb-bridge-peripherals/_deployments/421613_current_deployment.json @@ -3,30 +3,30 @@ "contracts": { "L2GatewayRouter": { "proxyAddress": "0xE5B9d8d42d656d1DcB8065A6c012FE3780246041", - "implAddress": "0x1aef22B6b1272a6c0b78454CB96206FC289dCB33", - "implDeploymentTxn": "0x50b3abafe44cd945df0933c7dd84fbb9eafe74417067dd3183e4df920fb1fc65", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0xa707480046b0Bd1C602CCd1D83FCf7Bd367217E2", + "implDeploymentTxn": "0x3c2adecca82c874282a694a23faec77ae02cd3a19a17527855554fd77d93e4a9", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" }, "L2ERC20Gateway": { "proxyAddress": "0x2eC7Bc552CE8E51f098325D2FcF0d3b9d3d2A9a2", - "implAddress": "0x14b5426db177CE59864a90F70635a1a7945e396E", - "implDeploymentTxn": "0x48b85af1b086cc7d7f2f6d735efbdf9d9170c656835ac0529ae0653540d39152", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0xCbD2dC47b287C8324747A5AA2A71A8f939662B3e", + "implDeploymentTxn": "0x07c3734dd047f99ce9955d694517f2fa0b73def14bd46215847a747accb49702", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" }, "L2CustomGateway": { "proxyAddress": "0x8b6990830cF135318f75182487A4D7698549C717", - "implAddress": "0xB64c7f1A186a785fcfF594498f29Ea295853aF05", - "implDeploymentTxn": "0xf452c6a4fc0d612c085429560792eef83985b3759a778fea2f90323bfa37af7f", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0x802B583C2f81415b047f1Ee19e498bDa7Efd6920", + "implDeploymentTxn": "0xb14f6f5b2e6c425f597b7438e32058441420c70aaa7ca8a6f505b5d935cfb820", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" }, "L2WethGateway": { "proxyAddress": "0xf9F2e89c8347BD96742Cc07095dee490e64301d6", - "implAddress": "0x185ff5e33c4df31C715B386916A49fc2f80fFe4c", - "implDeploymentTxn": "0x27ecab5255d52ebc9585d0d88e341e502abfc05a6d03487738c943eefe3d7a1d", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0x3BD10e97ECa83B362dA291beFdA0f1ba70D31411", + "implDeploymentTxn": "0xe35957e6aef4d5919b8d7d93ff1b575dd5c50aa3b3dc944be07ac913d46a2846", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" }, "StandardArbERC20": { diff --git a/packages/arb-bridge-peripherals/_deployments/421613_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/421613_queued-updates.json index 307a02a4a3..0967ef424b 100644 --- a/packages/arb-bridge-peripherals/_deployments/421613_queued-updates.json +++ b/packages/arb-bridge-peripherals/_deployments/421613_queued-updates.json @@ -1,26 +1 @@ -{ - "L2GatewayRouter": { - "address": "0xa707480046b0Bd1C602CCd1D83FCf7Bd367217E2", - "deployTxn": "0x3c2adecca82c874282a694a23faec77ae02cd3a19a17527855554fd77d93e4a9", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - }, - "L2ERC20Gateway": { - "address": "0xCbD2dC47b287C8324747A5AA2A71A8f939662B3e", - "deployTxn": "0x07c3734dd047f99ce9955d694517f2fa0b73def14bd46215847a747accb49702", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - }, - "L2CustomGateway": { - "address": "0x802B583C2f81415b047f1Ee19e498bDa7Efd6920", - "deployTxn": "0xb14f6f5b2e6c425f597b7438e32058441420c70aaa7ca8a6f505b5d935cfb820", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - }, - "L2WethGateway": { - "address": "0x3BD10e97ECa83B362dA291beFdA0f1ba70D31411", - "deployTxn": "0xe35957e6aef4d5919b8d7d93ff1b575dd5c50aa3b3dc944be07ac913d46a2846", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - } -} +{} diff --git a/packages/arb-bridge-peripherals/_deployments/4_current_deployment.json b/packages/arb-bridge-peripherals/_deployments/4_current_deployment.json index 4342471098..b4d846747d 100644 --- a/packages/arb-bridge-peripherals/_deployments/4_current_deployment.json +++ b/packages/arb-bridge-peripherals/_deployments/4_current_deployment.json @@ -3,30 +3,30 @@ "contracts": { "L1GatewayRouter": { "proxyAddress": "0x70C143928eCfFaf9F5b406f7f4fC28Dc43d68380", - "implAddress": "0x99e039EEd9c083014dE95CbC8Cc67aED91081C51", - "implDeploymentTxn": "0xb9d3941dab77f519a37f2db2f01c9ac1e56c043d6f07c45272a26e755c58fc52", - "implArbitrumCommitHash": "64f0fb06fb74fb944ab5acab770837aab8e54c6d", + "implAddress": "0x8b6990830cF135318f75182487A4D7698549C717", + "implDeploymentTxn": "0xee36d85905a0ef010d85f2d023f30dd8cb91eccba755256ede147d6b3f29e8f9", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" }, "L1ERC20Gateway": { "proxyAddress": "0x91169Dbb45e6804743F94609De50D511C437572E", - "implAddress": "0x1bd82dB602a15F99174BdC2573B827Fa16DA18AF", - "implDeploymentTxn": "0xf0ca999a1589b45cfd043d21c3f7ccf67035217a4d775c82fd45bf964c3f18b3", - "implArbitrumCommitHash": "5c06d89daf8fa6088bcdba292ffa6ed0c72afab2", + "implAddress": "0x185ff5e33c4df31C715B386916A49fc2f80fFe4c", + "implDeploymentTxn": "0x041673dd25b9dbc4a831b0ee4d795563ecd67e21c3b3fe58d07d17698b44df4b", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" }, "L1CustomGateway": { "proxyAddress": "0x917dc9a69F65dC3082D518192cd3725E1Fa96cA2", - "implAddress": "0x5b8A1381dF036f3Bb23398BB62d4f16E8B11d04F", - "implDeploymentTxn": "0xe0cadd03e8e865cade31002d376fae0c85b869926aab9f42b9d4a78d9e3d31ef", - "implArbitrumCommitHash": "7cce402117417c73f2a17eb17011e0d09a304d2f", + "implAddress": "0xf9F2e89c8347BD96742Cc07095dee490e64301d6", + "implDeploymentTxn": "0xae2522d1fe13f69007fc63869fb8640f69e2ad59df599e284bb39e0ee2f5627e", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" }, "L1WethGateway": { "proxyAddress": "0x81d1a19cf7071732D4313c75dE8DD5b8CF697eFD", - "implAddress": "0x2421C16D182F63b7475Ea79e73D1F7088C6C869F", - "implDeploymentTxn": "0x4142cbc703bbee31828eebce7cc7e01319905e3f26dde14fbe2c022f57588cd3", - "implArbitrumCommitHash": "5c06d89daf8fa6088bcdba292ffa6ed0c72afab2", + "implAddress": "0x2063a7def7614347896c880C0F04788De18A8dEb", + "implDeploymentTxn": "0x45078b798a2f6b9cdcd8a98fc1a8c145b278ee9da56ea5d9f12ea9117b94a153", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" } } diff --git a/packages/arb-bridge-peripherals/_deployments/4_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/4_queued-updates.json index 4bffe68e10..0967ef424b 100644 --- a/packages/arb-bridge-peripherals/_deployments/4_queued-updates.json +++ b/packages/arb-bridge-peripherals/_deployments/4_queued-updates.json @@ -1,26 +1 @@ -{ - "L1GatewayRouter": { - "address": "0x8b6990830cF135318f75182487A4D7698549C717", - "deployTxn": "0xee36d85905a0ef010d85f2d023f30dd8cb91eccba755256ede147d6b3f29e8f9", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - }, - "L1ERC20Gateway": { - "address": "0x185ff5e33c4df31C715B386916A49fc2f80fFe4c", - "deployTxn": "0x041673dd25b9dbc4a831b0ee4d795563ecd67e21c3b3fe58d07d17698b44df4b", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - }, - "L1CustomGateway": { - "address": "0xf9F2e89c8347BD96742Cc07095dee490e64301d6", - "deployTxn": "0xae2522d1fe13f69007fc63869fb8640f69e2ad59df599e284bb39e0ee2f5627e", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - }, - "L1WethGateway": { - "address": "0x2063a7def7614347896c880C0F04788De18A8dEb", - "deployTxn": "0x45078b798a2f6b9cdcd8a98fc1a8c145b278ee9da56ea5d9f12ea9117b94a153", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - } -} +{} diff --git a/packages/arb-bridge-peripherals/_deployments/5_current_deployment.json b/packages/arb-bridge-peripherals/_deployments/5_current_deployment.json index 27493b295c..0279975216 100644 --- a/packages/arb-bridge-peripherals/_deployments/5_current_deployment.json +++ b/packages/arb-bridge-peripherals/_deployments/5_current_deployment.json @@ -3,30 +3,30 @@ "contracts": { "L1GatewayRouter": { "proxyAddress": "0x4c7708168395aEa569453Fc36862D2ffcDaC588c", - "implAddress": "0x23BfBCa0e0B1B8C351Ea80B586F4eF468040A203", - "implDeploymentTxn": "0x6add19e7b0317adde24600564de5f3372aeb6c80f0200b2bf90f561c817452c0", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0x5664F1f04bb9f5eF1970D6e12Be073F73AacA854", + "implDeploymentTxn": "0xde3262b207e171ee9ef342aed0d631adc8e23e5783079d7a8a2803fe0ad8b01f", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" }, "L1ERC20Gateway": { "proxyAddress": "0x715D99480b77A8d9D603638e593a539E21345FdF", - "implAddress": "0xDa685EC2BD8D813267D5563029c5eCF390e73865", - "implDeploymentTxn": "0xbe1f8f4398257f3db4703f78a46c69dfea6a08d4f37b5942ec27ffba9653fabc", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0xea066056f73156E80090C24ADAC5d47CEc313a2d", + "implDeploymentTxn": "0x02c5ed6eec83e3cc015373f85cb2ca89826d66bf3f5b7caf91d79c4ae561a38f", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" }, "L1CustomGateway": { "proxyAddress": "0x9fDD1C4E4AA24EEc1d913FABea925594a20d43C7", - "implAddress": "0x6F1eF246894b6269e2A98c741C36385F61EE1e32", - "implDeploymentTxn": "0xedee08a169cbe7ca8fac05250920d11bbe066cd58d9da2705feae9eb32cf02c4", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0x161183c42E54F709Bd7b8c12670957f2Ee150299", + "implDeploymentTxn": "0xb071c5c0153295e0c7e177a3d9d9f770206a305680e3461e16b9c92202f8f219", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" }, "L1WethGateway": { "proxyAddress": "0x6e244cD02BBB8a6dbd7F626f05B2ef82151Ab502", - "implAddress": "0x391c9b3Cb3cAE0a653295f42267DaB8B0505e760", - "implDeploymentTxn": "0x40a7ee22ccf95e2fab76d5d602688b5275455f778bbe9f3e3e2f99680b50e33b", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0xAA82b5384ef36c5EFdCe36300dc1E85CA45ad1D8", + "implDeploymentTxn": "0x2c349a6110c697aebb2fb0a74c71ec78f04b94ec608443052b61e802420de4b9", + "implArbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", "implBuildInfo": "" } } diff --git a/packages/arb-bridge-peripherals/_deployments/5_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/5_queued-updates.json index b9b4e6553e..0967ef424b 100644 --- a/packages/arb-bridge-peripherals/_deployments/5_queued-updates.json +++ b/packages/arb-bridge-peripherals/_deployments/5_queued-updates.json @@ -1,26 +1 @@ -{ - "L1GatewayRouter": { - "address": "0x5664F1f04bb9f5eF1970D6e12Be073F73AacA854", - "deployTxn": "0xde3262b207e171ee9ef342aed0d631adc8e23e5783079d7a8a2803fe0ad8b01f", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - }, - "L1ERC20Gateway": { - "address": "0xea066056f73156E80090C24ADAC5d47CEc313a2d", - "deployTxn": "0x02c5ed6eec83e3cc015373f85cb2ca89826d66bf3f5b7caf91d79c4ae561a38f", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - }, - "L1CustomGateway": { - "address": "0x161183c42E54F709Bd7b8c12670957f2Ee150299", - "deployTxn": "0xb071c5c0153295e0c7e177a3d9d9f770206a305680e3461e16b9c92202f8f219", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - }, - "L1WethGateway": { - "address": "0xAA82b5384ef36c5EFdCe36300dc1E85CA45ad1D8", - "deployTxn": "0x2c349a6110c697aebb2fb0a74c71ec78f04b94ec608443052b61e802420de4b9", - "arbitrumCommitHash": "25bf76e8cdd9b00bc181269abcc9b04579a42aca", - "buildInfo": "" - } -} +{} From 745afbc994e94ad342be597ddc975c66d9fc6d10 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 3 Aug 2022 15:34:54 +0800 Subject: [PATCH 099/128] docs: anytrust current deployment --- .../1_42170_current_deployment.json | 33 +++++++++++++++ .../_deployments/1_42170_queued-updates.json | 1 + .../42170_current_deployment.json | 40 +++++++++++++++++++ .../_deployments/42170_queued-updates.json | 1 + 4 files changed, 75 insertions(+) create mode 100644 packages/arb-bridge-peripherals/_deployments/1_42170_current_deployment.json create mode 100644 packages/arb-bridge-peripherals/_deployments/1_42170_queued-updates.json create mode 100644 packages/arb-bridge-peripherals/_deployments/42170_current_deployment.json create mode 100644 packages/arb-bridge-peripherals/_deployments/42170_queued-updates.json diff --git a/packages/arb-bridge-peripherals/_deployments/1_42170_current_deployment.json b/packages/arb-bridge-peripherals/_deployments/1_42170_current_deployment.json new file mode 100644 index 0000000000..f51f0c1e35 --- /dev/null +++ b/packages/arb-bridge-peripherals/_deployments/1_42170_current_deployment.json @@ -0,0 +1,33 @@ +{ + "proxyAdminAddress": "0xa8f7DdEd54a726eB873E98bFF2C95ABF2d03e560", + "contracts": { + "L1GatewayRouter": { + "proxyAddress": "0xC840838Bc438d73C16c2f8b22D2Ce3669963cD48", + "implAddress": "0xa9610559f1E5BB0Eab9a25e21137D39426fd477E", + "implDeploymentTxn": "0x5816474faae2e6fb1b9b9664f422a188bcb3c9e263a99071bbf6fe4370ff238a", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + }, + "L1ERC20Gateway": { + "proxyAddress": "0xB2535b988dcE19f9D71dfB22dB6da744aCac21bf", + "implAddress": "0xf852de96aD5Ca30d54b40b9cE5c8C6DE56C0Ef4B", + "implDeploymentTxn": "0x5e06989f56c77dfaa32ff528a407748502c82873b62f8871ba43f512efdb9cd8", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + }, + "L1CustomGateway": { + "proxyAddress": "0x23122da8C581AA7E0d07A36Ff1f16F799650232f", + "implAddress": "0x97367486f5905c2B7EE7b58330Fb4EB52639db17", + "implDeploymentTxn": "0x50543350a0b6dcc54f59ce1497259da439640cdc42f02b2bc10046665a7da8a8", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + }, + "L1WethGateway": { + "proxyAddress": "0xE4E2121b479017955Be0b175305B35f312330BaE", + "implAddress": "0xB63762dfDaAF0f665a1F387e9B29699f22aC409C", + "implDeploymentTxn": "0x6b8aa2f756c428bf3a7f2b7aa7f82fd59d1c64f98c67dfc5169b5ecc8cb24656", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + } + } +} diff --git a/packages/arb-bridge-peripherals/_deployments/1_42170_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/1_42170_queued-updates.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/packages/arb-bridge-peripherals/_deployments/1_42170_queued-updates.json @@ -0,0 +1 @@ +{} diff --git a/packages/arb-bridge-peripherals/_deployments/42170_current_deployment.json b/packages/arb-bridge-peripherals/_deployments/42170_current_deployment.json new file mode 100644 index 0000000000..14e15634da --- /dev/null +++ b/packages/arb-bridge-peripherals/_deployments/42170_current_deployment.json @@ -0,0 +1,40 @@ +{ + "proxyAdminAddress": "0xada790b026097BfB36a5ed696859b97a96CEd92C", + "contracts": { + "L2GatewayRouter": { + "proxyAddress": "0x21903d3F8176b1a0c17E953Cd896610Be9fFDFa8", + "implAddress": "0x09854610F48462a7029fF192FA0AfB7F00133F54", + "implDeploymentTxn": "0x93bffbfa61c4f3b5b1abc31611bdd97de2e29832b8c8291a23826da6efd61d33", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + }, + "L2ERC20Gateway": { + "proxyAddress": "0xcF9bAb7e53DDe48A6DC4f286CB14e05298799257", + "implAddress": "0xEa2562667c98Bfe329995616454BeA9ea3290D1C", + "implDeploymentTxn": "0xc472f2d6e5b87991f19d2206ffcc74ad6e40ba0cf41ff04c5a17776c31b19c2f", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + }, + "L2CustomGateway": { + "proxyAddress": "0xbf544970E6BD77b21C6492C281AB60d0770451F4", + "implAddress": "0xb1d943d67b793D61F08b5F536AC591a057306fe5", + "implDeploymentTxn": "0x1f0a93061393d00cd6d3b1c08b5c9737a7fa4b17e5437556bdfab57637ba126a", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + }, + "L2WethGateway": { + "proxyAddress": "0x7626841cB6113412F9c88D3ADC720C9FAC88D9eD", + "implAddress": "0x3525f734fcE1a26a6CEffFca43538290DC239771", + "implDeploymentTxn": "0x07141c0dfc61287946950a3abee91b6aa96144fee98a88a7b065efc3b0248968", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + }, + "StandardArbERC20": { + "proxyAddress": "0xd31Ed16a8CeCe0A5070AC26024674eB680E3e639", + "implAddress": "0x53923A0d1f4805463584c91b2E55d6c600A94E91", + "implDeploymentTxn": "0x96513ab528683b13d918024d0c410ecaa88b7949cc4a980544af8362f22cc277", + "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implBuildInfo": "" + } + } +} diff --git a/packages/arb-bridge-peripherals/_deployments/42170_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/42170_queued-updates.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/packages/arb-bridge-peripherals/_deployments/42170_queued-updates.json @@ -0,0 +1 @@ +{} From 44d41f4610063776a3a942f918e27810aef23e0b Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Thu, 4 Aug 2022 17:36:55 +0800 Subject: [PATCH 100/128] chore: add inbox to interface --- .../tokenbridge/ethereum/gateway/IL1ArbitrumGateway.sol | 2 ++ .../tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/IL1ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/IL1ArbitrumGateway.sol index b2fb406424..09189aa47a 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/IL1ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/IL1ArbitrumGateway.sol @@ -26,6 +26,8 @@ import "../../libraries/IERC165.sol"; * @title Common interface for gatways on L1 messaging to Arbitrum. */ interface IL1ArbitrumGateway is ITokenGateway, IERC165 { + function inbox() external view returns (address); + /** * @notice Deposit ERC20 token from Ethereum into Arbitrum. If L2 side hasn't been deployed yet, includes name/symbol/decimals data for initial L2 deploy. Initiate by GatewayRouter. * @dev L2 address alias will not be applied to the following types of addresses on L1: diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol index 2037f9a550..a0a9b90010 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/ethereum/gateway/L1ArbitrumGateway.sol @@ -46,7 +46,7 @@ abstract contract L1ArbitrumGateway is using SafeERC20 for IERC20; using Address for address; - address public inbox; + address public override inbox; event DepositInitiated( address l1Token, From 5ea6328312935b268f4d4e0936d1796e63addf16 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Thu, 4 Aug 2022 18:35:48 +0800 Subject: [PATCH 101/128] refactor: create IGatewayRouter --- .../libraries/gateway/GatewayRouter.sol | 9 ++-- .../libraries/gateway/IGatewayRouter.sol | 43 +++++++++++++++++++ .../tokenbridge/test/TestCustomTokenL1.sol | 4 +- 3 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/IGatewayRouter.sol diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol index 8228cb9e2c..074170d488 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/GatewayRouter.sol @@ -22,18 +22,19 @@ import "arb-bridge-eth/contracts/libraries/ProxyUtil.sol"; import "@openzeppelin/contracts/utils/Address.sol"; import "./TokenGateway.sol"; import "./GatewayMessageHandler.sol"; +import "./IGatewayRouter.sol"; /** * @title Common interface for L1 and L2 Gateway Routers */ -abstract contract GatewayRouter is TokenGateway { +abstract contract GatewayRouter is TokenGateway, IGatewayRouter { using Address for address; address internal constant ZERO_ADDR = address(0); address internal constant DISABLED = address(1); mapping(address => address) public l1TokenToGateway; - address public defaultGateway; + address public override defaultGateway; event TransferRouted( address indexed token, @@ -114,7 +115,7 @@ abstract contract GatewayRouter is TokenGateway { return TokenGateway(gateway).getOutboundCalldata(_token, _from, _to, _amount, _data); } - function getGateway(address _token) public view virtual returns (address gateway) { + function getGateway(address _token) public view virtual override returns (address gateway) { gateway = l1TokenToGateway[_token]; if (gateway == ZERO_ADDR) { @@ -134,7 +135,7 @@ abstract contract GatewayRouter is TokenGateway { public view virtual - override + override(TokenGateway, ITokenGateway) returns (address) { address gateway = getGateway(l1ERC20); diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/IGatewayRouter.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/IGatewayRouter.sol new file mode 100644 index 0000000000..b67194f5fe --- /dev/null +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/libraries/gateway/IGatewayRouter.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: Apache-2.0 + +/* + * Copyright 2020, Offchain Labs, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +pragma solidity ^0.6.11; + +import "arb-bridge-eth/contracts/libraries/ProxyUtil.sol"; +import "@openzeppelin/contracts/utils/Address.sol"; +import "./TokenGateway.sol"; +import "./GatewayMessageHandler.sol"; + +/** + * @title Common interface for L1 and L2 Gateway Routers + */ +interface IGatewayRouter is ITokenGateway { + function defaultGateway() external view returns (address gateway); + + event TransferRouted( + address indexed token, + address indexed _userFrom, + address indexed _userTo, + address gateway + ); + + event GatewaySet(address indexed l1Token, address indexed gateway); + event DefaultGatewayUpdated(address newDefaultGateway); + + function getGateway(address _token) external view returns (address gateway); +} diff --git a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol index 941c811b07..716e995733 100644 --- a/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol +++ b/packages/arb-bridge-peripherals/contracts/tokenbridge/test/TestCustomTokenL1.sol @@ -20,7 +20,7 @@ interface IL1CustomGateway { ) external payable returns (uint256); } -interface IGatewayRouter { +interface IGatewayRouter2 { function setGateway( address _gateway, uint256 _maxGas, @@ -92,7 +92,7 @@ contract TestCustomTokenL1 is aeERC20, ICustomToken { creditBackAddress ); - IGatewayRouter(router).setGateway{ value: valueForRouter }( + IGatewayRouter2(router).setGateway{ value: valueForRouter }( bridge, maxGasForRouter, gasPriceBid, From 9cd6eb7937af9ef12ef27d00040eccc5adb9ad91 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Fri, 5 Aug 2022 18:32:04 +0800 Subject: [PATCH 102/128] chore: mainnets logic deployment --- .../_deployments/1_42170_queued-updates.json | 27 ++++++++++++++++++- .../_deployments/1_queued-updates.json | 27 ++++++++++++++++++- .../_deployments/42161_queued-updates.json | 27 ++++++++++++++++++- .../_deployments/42170_queued-updates.json | 27 ++++++++++++++++++- 4 files changed, 104 insertions(+), 4 deletions(-) diff --git a/packages/arb-bridge-peripherals/_deployments/1_42170_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/1_42170_queued-updates.json index 0967ef424b..2bd63f184e 100644 --- a/packages/arb-bridge-peripherals/_deployments/1_42170_queued-updates.json +++ b/packages/arb-bridge-peripherals/_deployments/1_42170_queued-updates.json @@ -1 +1,26 @@ -{} +{ + "L1GatewayRouter": { + "address": "0x6D1c576Fe3e54313990450f5Fa322306B4cCB47B", + "deployTxn": "0x0badea7ff78ffcaee80d8b3686debf2f3172a65aa4df26de5aaccc58bc7a6031", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + }, + "L1ERC20Gateway": { + "address": "0xb4299A1F5f26fF6a98B7BA35572290C359fde900", + "deployTxn": "0x23b0939cffff711071c3270fd7c1e619fd6f464acfbb07ae452f4f091eb0af90", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + }, + "L1CustomGateway": { + "address": "0xC8D26aB9e132C79140b3376a0Ac7932E4680Aa45", + "deployTxn": "0xd6ae3ba8c58ef4fa22688950c4849085779b0db441d3d68d84cdca5618e0e565", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + }, + "L1WethGateway": { + "address": "0x6299838C8254b59213eb56d158ebe562D23c4936", + "deployTxn": "0xc908d4f902b021a28618f8828e988fe4a25a676c4aab3414b25e783a62e17ba2", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + } +} diff --git a/packages/arb-bridge-peripherals/_deployments/1_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/1_queued-updates.json index 0967ef424b..2bd63f184e 100644 --- a/packages/arb-bridge-peripherals/_deployments/1_queued-updates.json +++ b/packages/arb-bridge-peripherals/_deployments/1_queued-updates.json @@ -1 +1,26 @@ -{} +{ + "L1GatewayRouter": { + "address": "0x6D1c576Fe3e54313990450f5Fa322306B4cCB47B", + "deployTxn": "0x0badea7ff78ffcaee80d8b3686debf2f3172a65aa4df26de5aaccc58bc7a6031", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + }, + "L1ERC20Gateway": { + "address": "0xb4299A1F5f26fF6a98B7BA35572290C359fde900", + "deployTxn": "0x23b0939cffff711071c3270fd7c1e619fd6f464acfbb07ae452f4f091eb0af90", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + }, + "L1CustomGateway": { + "address": "0xC8D26aB9e132C79140b3376a0Ac7932E4680Aa45", + "deployTxn": "0xd6ae3ba8c58ef4fa22688950c4849085779b0db441d3d68d84cdca5618e0e565", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + }, + "L1WethGateway": { + "address": "0x6299838C8254b59213eb56d158ebe562D23c4936", + "deployTxn": "0xc908d4f902b021a28618f8828e988fe4a25a676c4aab3414b25e783a62e17ba2", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + } +} diff --git a/packages/arb-bridge-peripherals/_deployments/42161_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/42161_queued-updates.json index 0967ef424b..2f7ad2d906 100644 --- a/packages/arb-bridge-peripherals/_deployments/42161_queued-updates.json +++ b/packages/arb-bridge-peripherals/_deployments/42161_queued-updates.json @@ -1 +1,26 @@ -{} +{ + "L2GatewayRouter": { + "address": "0xe80eb0238029333e368e0bDDB7acDf1b9cb28278", + "deployTxn": "0x42f97c8e518193c04c8aba7b71b08e1c05257070c71b8f5796c4c6fe885a4009", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + }, + "L2ERC20Gateway": { + "address": "0x1DCf7D03574fbC7C205F41f2e116eE094a652e93", + "deployTxn": "0x386a8c3b2f12d91644faef8483d13c36e283bb23cb2e05ee946474d7383834d9", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + }, + "L2CustomGateway": { + "address": "0xebb11Bbd7d72165FaC86bb5AB1B07A602540b286", + "deployTxn": "0xb437ff5aac97fa1ced73a1498af5fb71df9011f67d02ce2f10feed6937cb7376", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + }, + "L2WethGateway": { + "address": "0xB642058A41D414D9De3F36D14051623e557f1052", + "deployTxn": "0x97f65d6e95d885fbf61e4824bbc59a365bb97ce8719265a09d1398b03347bc8b", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + } +} diff --git a/packages/arb-bridge-peripherals/_deployments/42170_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/42170_queued-updates.json index 0967ef424b..6a7c73d813 100644 --- a/packages/arb-bridge-peripherals/_deployments/42170_queued-updates.json +++ b/packages/arb-bridge-peripherals/_deployments/42170_queued-updates.json @@ -1 +1,26 @@ -{} +{ + "L2GatewayRouter": { + "address": "0x8f377770289863DF73Fe665B74460579F82321fb", + "deployTxn": "0x8c917e27e5aeff1f9f2ae781efc24c4ee3502550f4fd6d451af09756a9fbeb41", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + }, + "L2ERC20Gateway": { + "address": "0x466155FD6d8BbF1c0d5ca32818814cB28b6884d8", + "deployTxn": "0x3d949fdeb42a3ebb04b705358ab5f8559cffbc27d7fbaf3a63649d12e327d592", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + }, + "L2CustomGateway": { + "address": "0x6e04b9dd87CF2cD3b7D81C50D2DF72d24BC0Cc4C", + "deployTxn": "0x23f85120a694473d855e67fda56f46206c11e279edb4d041c1eec865792a94cb", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + }, + "L2WethGateway": { + "address": "0x190C993Db842097df8b8d71c910f1802df0724C3", + "deployTxn": "0x510b16690e35cd4490211c1b7f11762f2e47c33236076883d54d8c153df79855", + "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", + "buildInfo": "" + } +} From 6c6508908e2e6f94d998666a1a633bf4628e7a5b Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Sat, 6 Aug 2022 16:53:12 +0800 Subject: [PATCH 103/128] docs: add note on how to use a local snapshot --- docs/Running_Nitro_Node.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Running_Nitro_Node.md b/docs/Running_Nitro_Node.md index e984faae0d..dcb8bb1573 100644 --- a/docs/Running_Nitro_Node.md +++ b/docs/Running_Nitro_Node.md @@ -13,6 +13,7 @@ Note: If you’re interested in accessing an Arbitrum chain, but you don’t wan - Only if using Rinkeby: Rinkeby Nitro Seed Database Snapshot - Use the parameter `--init.url="https://snapshot.arbitrum.io/rinkeby/nitro.tar"` on first startup to initialize Nitro database - If running more than one node, easiest to manually download image from https://snapshot.arbitrum.io/rinkeby/nitro.tar and host it locally for your nodes + - Or use `--init.url="file:///path/to/snapshot/in/container/nitro.tar"` to use a local snapshot archive ### Required parameter From 32d761ff4aa2ac60b04e77fd779c4281687d5300 Mon Sep 17 00:00:00 2001 From: GreatSoshiant Date: Mon, 8 Aug 2022 16:01:05 -0400 Subject: [PATCH 104/128] Update Public_Chains.md --- docs/Public_Chains.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/Public_Chains.md b/docs/Public_Chains.md index 81f5017116..37b49249a7 100644 --- a/docs/Public_Chains.md +++ b/docs/Public_Chains.md @@ -7,12 +7,12 @@ sidebar_label: Public Arbitrum Chains The following is a comprehensive list of all of the currently live Arbitrum chains: -| Name | ID | Type | Underlying L1 | Current Tech Stack | RPC Url(s) | Feed URLs | Nitro Seed Database URLs | Explorer(s) | Native Currency | Retryable Dashboard | -| ------------------------------- | ------ | ------- | ------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | --------------- | ------------------------------------------------------------------------------------ | -| Arbitrum One | 42161 | Mainnet | Ethereum | Classic Rollup | [arb1.arbitrum.io/rpc](https://arb1.arbitrum.io/rpc) [arbitrum-mainnet.infura.io/v3/-ID](https://arbitrum-mainnet.infura.io/v3/YOUR-PROJECT-ID) [arb-mainnet.g.alchemy.com/v2/-KEY](https://arb-mainnet.g.alchemy.com/v2/your-api-key) | [wss://arb1.arbitrum.io/feed](wss://arb1.arbitrum.io/feed) | Not Available Yet | [arbiscan.io](https://arbiscan.io/) [explorer.arbitrum.io/](https://explorer.arbitrum.io/) | ETH | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | -| Arbitrum Nova | 42170 | Mainnet | Ethereum | Nitro AnyTrust | [nova.arbitrum.io/rpc](https://nova.arbitrum.io/rpc) | [wss://nova.arbitrum.io/feed](wss://nova.arbitrum.io/feed) | N/A | [nova-explorer.arbitrum.io/](https://nova-explorer.arbitrum.io/) | ETH | [retryable-tx-panel-nitro.arbitrum.io](http://retryable-tx-panel-nitro.arbitrum.io/) | -| RinkArby | 421611 | Testnet | Rinkeby | Nitro Rollup | [rinkeby.arbitrum.io/rpc](https://rinkeby.arbitrum.io/rpc) | [wss://rinkeby.arbitrum.io/feed](wss://rinkeby.arbitrum.io/feed) | https://snapshot.arbitrum.io/rinkeby/nitro.tar | [testnet.arbiscan.io](https://testnet.arbiscan.io/) [rinkeby-explorer.arbitrum.io](https://rinkeby-explorer.arbitrum.io/) | RinkebyETH | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | -| Nitro Goerli Rollup Testnet | 421613 | Testnet | Goerli | Nitro Rollup | [goerli-rollup.arbitrum.io/rpc](https://goerli-rollup.arbitrum.io/rpc) | [wss://goerli-rollup.arbitrum.io/feed](wss://goerli-rollup.arbitrum.io/feed) | N/A | [goerli-rollup-explorer.arbitrum.io](https://goerli-rollup-explorer.arbitrum.io/) | GoerliETH | [retryable-tx-panel-nitro.arbitrum.io](http://retryable-tx-panel-nitro.arbitrum.io/) | +| Name | ID | Type | Native Currency | RPC Url(s) | Explorer(s) | Underlying L1 | Current Tech Stack | Feed URLs | Nitro Seed Database URLs | Retryable Dashboard | +| ------------------------------- | ------ | ------- | ------------- | ---------------------------------------------------------------------------- | --------------- | ------------------ | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | +| Arbitrum One | 42161 | Mainnet | ETH | [https://arb1.arbitrum.io/rpc](https://arb1.arbitrum.io/rpc) [https://arbitrum-mainnet.infura.io/v3/-ID](https://arbitrum-mainnet.infura.io/v3/YOUR-PROJECT-ID) [https://arb-mainnet.g.alchemy.com/v2/-KEY](https://arb-mainnet.g.alchemy.com/v2/your-api-key) | [https://arbiscan.io/](https://arbiscan.io/) [https://explorer.arbitrum.io/](https://explorer.arbitrum.io/) | Ethereum | Classic Rollup | [wss://arb1.arbitrum.io/feed](wss://arb1.arbitrum.io/feed) | Not Available Yet | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | +| Arbitrum Nova | 42170 | Mainnet | ETH | [https://nova.arbitrum.io/rpc](https://nova.arbitrum.io/rpc) | [https://nova-explorer.arbitrum.io/](https://nova-explorer.arbitrum.io/) | Ethereum | Nitro AnyTrust | [wss://nova.arbitrum.io/feed](wss://nova.arbitrum.io/feed) | N/A | [retryable-tx-panel-nitro.arbitrum.io](http://retryable-tx-panel-nitro.arbitrum.io/) | +| RinkArby | 421611 | Testnet | RinkebyETH | [https://rinkeby.arbitrum.io/rpc](https://rinkeby.arbitrum.io/rpc) | [https://testnet.arbiscan.io](https://testnet.arbiscan.io/) [https://rinkeby-explorer.arbitrum.io](https://rinkeby-explorer.arbitrum.io/) | Rinkeby | Nitro Rollup | [wss://rinkeby.arbitrum.io/feed](wss://rinkeby.arbitrum.io/feed) | https://snapshot.arbitrum.io/rinkeby/nitro.tar | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | +| Nitro Goerli Rollup Testnet | 421613 | Testnet | GoerliETH | [https://goerli-rollup.arbitrum.io/rpc](https://goerli-rollup.arbitrum.io/rpc) | [https://goerli-rollup-explorer.arbitrum.io](https://goerli-rollup-explorer.arbitrum.io/) | Goerli | Nitro Rollup | [wss://goerli-rollup.arbitrum.io/feed](wss://goerli-rollup.arbitrum.io/feed) | N/A | [retryable-tx-panel-nitro.arbitrum.io](http://retryable-tx-panel-nitro.arbitrum.io/) | For a list of useful contract addresses, see [here](Useful_Addresses.md). From bcc4bd6992bb06e22d3744e641b552e21638f487 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Tue, 9 Aug 2022 12:30:31 +0800 Subject: [PATCH 105/128] Update Public_Chains.md --- docs/Public_Chains.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/docs/Public_Chains.md b/docs/Public_Chains.md index 37b49249a7..edc9c6db74 100644 --- a/docs/Public_Chains.md +++ b/docs/Public_Chains.md @@ -7,17 +7,19 @@ sidebar_label: Public Arbitrum Chains The following is a comprehensive list of all of the currently live Arbitrum chains: -| Name | ID | Type | Native Currency | RPC Url(s) | Explorer(s) | Underlying L1 | Current Tech Stack | Feed URLs | Nitro Seed Database URLs | Retryable Dashboard | -| ------------------------------- | ------ | ------- | ------------- | ---------------------------------------------------------------------------- | --------------- | ------------------ | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | -| Arbitrum One | 42161 | Mainnet | ETH | [https://arb1.arbitrum.io/rpc](https://arb1.arbitrum.io/rpc) [https://arbitrum-mainnet.infura.io/v3/-ID](https://arbitrum-mainnet.infura.io/v3/YOUR-PROJECT-ID) [https://arb-mainnet.g.alchemy.com/v2/-KEY](https://arb-mainnet.g.alchemy.com/v2/your-api-key) | [https://arbiscan.io/](https://arbiscan.io/) [https://explorer.arbitrum.io/](https://explorer.arbitrum.io/) | Ethereum | Classic Rollup | [wss://arb1.arbitrum.io/feed](wss://arb1.arbitrum.io/feed) | Not Available Yet | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | -| Arbitrum Nova | 42170 | Mainnet | ETH | [https://nova.arbitrum.io/rpc](https://nova.arbitrum.io/rpc) | [https://nova-explorer.arbitrum.io/](https://nova-explorer.arbitrum.io/) | Ethereum | Nitro AnyTrust | [wss://nova.arbitrum.io/feed](wss://nova.arbitrum.io/feed) | N/A | [retryable-tx-panel-nitro.arbitrum.io](http://retryable-tx-panel-nitro.arbitrum.io/) | -| RinkArby | 421611 | Testnet | RinkebyETH | [https://rinkeby.arbitrum.io/rpc](https://rinkeby.arbitrum.io/rpc) | [https://testnet.arbiscan.io](https://testnet.arbiscan.io/) [https://rinkeby-explorer.arbitrum.io](https://rinkeby-explorer.arbitrum.io/) | Rinkeby | Nitro Rollup | [wss://rinkeby.arbitrum.io/feed](wss://rinkeby.arbitrum.io/feed) | https://snapshot.arbitrum.io/rinkeby/nitro.tar | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | -| Nitro Goerli Rollup Testnet | 421613 | Testnet | GoerliETH | [https://goerli-rollup.arbitrum.io/rpc](https://goerli-rollup.arbitrum.io/rpc) | [https://goerli-rollup-explorer.arbitrum.io](https://goerli-rollup-explorer.arbitrum.io/) | Goerli | Nitro Rollup | [wss://goerli-rollup.arbitrum.io/feed](wss://goerli-rollup.arbitrum.io/feed) | N/A | [retryable-tx-panel-nitro.arbitrum.io](http://retryable-tx-panel-nitro.arbitrum.io/) | +| Name | RPC Url(s) | ID | Native Currency | Explorer(s) | Underlying L1 | Current Tech Stack | Sequencer Feed | Nitro Seed Database URLs | Retryable Dashboard | +| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------ | --------------- | ----------------------------------------------------------------------- | ------------- | ------------------ | -------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------- | +| Arbitrum One | `https://arb1.arbitrum.io/rpc`
`https://arbitrum-mainnet.infura.io/v3/YOUR-PROJECT-ID`
`https://arb-mainnet.g.alchemy.com/v2/-KEY` | 42161 | ETH | `https://arbiscan.io/`
`https://explorer.arbitrum.io/` | Ethereum | Classic Rollup | `wss://arb1.arbitrum.io/feed` | Not Available Yet | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | +| Arbitrum Nova | `https://nova.arbitrum.io/rpc` | 42170 | ETH | `https://nova-explorer.arbitrum.io/` | Ethereum | Nitro AnyTrust | `wss://nova.arbitrum.io/feed` | N/A | [retryable-tx-panel-nitro.arbitrum.io](https://retryable-tx-panel-nitro.arbitrum.io/) | +| RinkArby^ | `https://rinkeby.arbitrum.io/rpc` | 421611 | RinkebyETH | `https://testnet.arbiscan.io`
`https://rinkeby-explorer.arbitrum.io` | Rinkeby | Nitro Rollup | `wss://rinkeby.arbitrum.io/feed` | `snapshot.arbitrum.io/rinkeby/nitro.tar` | [retryable-tx-panel-nitro.arbitrum.io](https://retryable-tx-panel-nitro.arbitrum.io/) | +| Nitro Goerli Rollup Testnet^ | `https://goerli-rollup.arbitrum.io/rpc` | 421613 | GoerliETH | `https://goerli-rollup-explorer.arbitrum.io` | Goerli | Nitro Rollup | `wss://goerli-rollup.arbitrum.io/feed` | N/A | [retryable-tx-panel-nitro.arbitrum.io](https://retryable-tx-panel-nitro.arbitrum.io/) |
+^ Testnet + For a list of useful contract addresses, see [here](Useful_Addresses.md). -## Arbitrum Chains Summary +### Arbitrum Chains Summary **Arbitrum One**: Arbitrum One is the flagship Arbitrum mainnet chain; it is an Optimistic Rollup chain running on top of Ethereum Mainnet, and is open to all users. In an upcoming upgrade, the Arbitrum One chain will be upgraded to use the [Nitro](https://medium.com/offchainlabs/its-nitro-time-86944693bf29) tech stack, maintaining the same state. (Stay tuned for updates!) @@ -27,7 +29,7 @@ For a list of useful contract addresses, see [here](Useful_Addresses.md). **Nitro Goerli Rollup Testnet**: This testnet (421613) uses the Nitro rollup tech stack; it is expected to be the primary, stable Arbitrum testnet moving forward. -## Using Arbitrum +### Using Arbitrum _**Note: before interacting with a mainnet chain, users should familiarize themselves with the risks; see [Mainnet Beta](Mainnet.md)**_. @@ -45,19 +47,19 @@ You'll need a chain's native currency to transact. You can either acquire funds [Supported centralized exchanges](https://portal.arbitrum.one/#centralizedexchanges) allow you to purchase (mainnet) Ether and withdraw it directly onto Arbitrum one. -### Deposit And Withdraw +#### Deposit And Withdraw To move your Ether and Tokens between Arbitrum and Ethereum chains, visit [bridge.arbitrum.io](https://bridge.arbitrum.io/). -### Use L2 Dapps! +#### Use L2 Dapps! Interacting with Arbitrum chains will feel very similar to using Ethereum, just cheaper and faster! To get a sense of what's out there, you can check out our [portal page](https://portal.arbitrum.one/), where we showcase some of the dApps, wallets, and infrastructure currently live on Arbitrum One. -### Build on Arbitrum +#### Build on Arbitrum Dapp developers can build on Arbitrum seamlessly using their favorite Ethereum tooling; see [here](Contract_Deployment.md) for contract deployment and [here](Frontend_Integration.md) for frontend integration. -### What's Next +#### What's Next The team working on Arbitrum is always interested and looking forward to engage with its users. Why not follow us on [Twitter](https://twitter.com/arbitrum) or join our community on [Discord](https://discord.gg/5KE54JwyTs)? From fd408197956ee1968fed2a63a41809fc2e60e7d2 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 10 Aug 2022 00:07:04 +0800 Subject: [PATCH 106/128] docs: mainnet upgrade --- .../1_42170_current_deployment.json | 24 ++++++++--------- .../_deployments/1_42170_queued-updates.json | 27 +------------------ .../_deployments/1_current_deployment.json | 24 ++++++++--------- .../_deployments/1_queued-updates.json | 27 +------------------ .../42161_current_deployment.json | 24 ++++++++--------- .../_deployments/42161_queued-updates.json | 27 +------------------ .../42170_current_deployment.json | 24 ++++++++--------- .../_deployments/42170_queued-updates.json | 27 +------------------ 8 files changed, 52 insertions(+), 152 deletions(-) diff --git a/packages/arb-bridge-peripherals/_deployments/1_42170_current_deployment.json b/packages/arb-bridge-peripherals/_deployments/1_42170_current_deployment.json index f51f0c1e35..269868a5d8 100644 --- a/packages/arb-bridge-peripherals/_deployments/1_42170_current_deployment.json +++ b/packages/arb-bridge-peripherals/_deployments/1_42170_current_deployment.json @@ -3,30 +3,30 @@ "contracts": { "L1GatewayRouter": { "proxyAddress": "0xC840838Bc438d73C16c2f8b22D2Ce3669963cD48", - "implAddress": "0xa9610559f1E5BB0Eab9a25e21137D39426fd477E", - "implDeploymentTxn": "0x5816474faae2e6fb1b9b9664f422a188bcb3c9e263a99071bbf6fe4370ff238a", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0x6D1c576Fe3e54313990450f5Fa322306B4cCB47B", + "implDeploymentTxn": "0x0badea7ff78ffcaee80d8b3686debf2f3172a65aa4df26de5aaccc58bc7a6031", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" }, "L1ERC20Gateway": { "proxyAddress": "0xB2535b988dcE19f9D71dfB22dB6da744aCac21bf", - "implAddress": "0xf852de96aD5Ca30d54b40b9cE5c8C6DE56C0Ef4B", - "implDeploymentTxn": "0x5e06989f56c77dfaa32ff528a407748502c82873b62f8871ba43f512efdb9cd8", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0xb4299A1F5f26fF6a98B7BA35572290C359fde900", + "implDeploymentTxn": "0x23b0939cffff711071c3270fd7c1e619fd6f464acfbb07ae452f4f091eb0af90", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" }, "L1CustomGateway": { "proxyAddress": "0x23122da8C581AA7E0d07A36Ff1f16F799650232f", - "implAddress": "0x97367486f5905c2B7EE7b58330Fb4EB52639db17", - "implDeploymentTxn": "0x50543350a0b6dcc54f59ce1497259da439640cdc42f02b2bc10046665a7da8a8", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0xC8D26aB9e132C79140b3376a0Ac7932E4680Aa45", + "implDeploymentTxn": "0xd6ae3ba8c58ef4fa22688950c4849085779b0db441d3d68d84cdca5618e0e565", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" }, "L1WethGateway": { "proxyAddress": "0xE4E2121b479017955Be0b175305B35f312330BaE", - "implAddress": "0xB63762dfDaAF0f665a1F387e9B29699f22aC409C", - "implDeploymentTxn": "0x6b8aa2f756c428bf3a7f2b7aa7f82fd59d1c64f98c67dfc5169b5ecc8cb24656", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0x6299838C8254b59213eb56d158ebe562D23c4936", + "implDeploymentTxn": "0xc908d4f902b021a28618f8828e988fe4a25a676c4aab3414b25e783a62e17ba2", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" } } diff --git a/packages/arb-bridge-peripherals/_deployments/1_42170_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/1_42170_queued-updates.json index 2bd63f184e..0967ef424b 100644 --- a/packages/arb-bridge-peripherals/_deployments/1_42170_queued-updates.json +++ b/packages/arb-bridge-peripherals/_deployments/1_42170_queued-updates.json @@ -1,26 +1 @@ -{ - "L1GatewayRouter": { - "address": "0x6D1c576Fe3e54313990450f5Fa322306B4cCB47B", - "deployTxn": "0x0badea7ff78ffcaee80d8b3686debf2f3172a65aa4df26de5aaccc58bc7a6031", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - }, - "L1ERC20Gateway": { - "address": "0xb4299A1F5f26fF6a98B7BA35572290C359fde900", - "deployTxn": "0x23b0939cffff711071c3270fd7c1e619fd6f464acfbb07ae452f4f091eb0af90", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - }, - "L1CustomGateway": { - "address": "0xC8D26aB9e132C79140b3376a0Ac7932E4680Aa45", - "deployTxn": "0xd6ae3ba8c58ef4fa22688950c4849085779b0db441d3d68d84cdca5618e0e565", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - }, - "L1WethGateway": { - "address": "0x6299838C8254b59213eb56d158ebe562D23c4936", - "deployTxn": "0xc908d4f902b021a28618f8828e988fe4a25a676c4aab3414b25e783a62e17ba2", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - } -} +{} diff --git a/packages/arb-bridge-peripherals/_deployments/1_current_deployment.json b/packages/arb-bridge-peripherals/_deployments/1_current_deployment.json index 647393e351..dbc6b7e66e 100644 --- a/packages/arb-bridge-peripherals/_deployments/1_current_deployment.json +++ b/packages/arb-bridge-peripherals/_deployments/1_current_deployment.json @@ -3,30 +3,30 @@ "contracts": { "L1GatewayRouter": { "proxyAddress": "0x72Ce9c846789fdB6fC1f34aC4AD25Dd9ef7031ef", - "implAddress": "0x2e8e3e55cE12F981EbF8E545Cb263aB238e19715", - "implDeploymentTxn": "0xc5e2fd78cf99985d15f2aa175ec56e69728a1eac7497bad4aa95af761fc38496", - "implArbitrumCommitHash": "7ac9347a41ece951af883d435cbe7d8e84329e36", + "implAddress": "0x6D1c576Fe3e54313990450f5Fa322306B4cCB47B", + "implDeploymentTxn": "0x0badea7ff78ffcaee80d8b3686debf2f3172a65aa4df26de5aaccc58bc7a6031", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" }, "L1ERC20Gateway": { "proxyAddress": "0xa3A7B6F88361F48403514059F1F16C8E78d60EeC", - "implAddress": "0xa83520Ae8d05bDBd20770c3d7268F66AcAcb6d43", - "implDeploymentTxn": "0xa6533e1364994c80b7b701789c4d1997e6545ec6512c2ff8175a454f79619759", - "implArbitrumCommitHash": "a85414fd515632b750707bd8aa19fb3045d29759", + "implAddress": "0xb4299A1F5f26fF6a98B7BA35572290C359fde900", + "implDeploymentTxn": "0x23b0939cffff711071c3270fd7c1e619fd6f464acfbb07ae452f4f091eb0af90", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" }, "L1CustomGateway": { "proxyAddress": "0xcEe284F754E854890e311e3280b767F80797180d", - "implAddress": "0xe8B0e562269EF963AA7b4c92645ff06E72CA02E6", - "implDeploymentTxn": "0xed05d3e52cd2bed8787f830f876a0d1a90d6657a6b12b2b9890777a0e8319bbb", - "implArbitrumCommitHash": "a85414fd515632b750707bd8aa19fb3045d29759", + "implAddress": "0xC8D26aB9e132C79140b3376a0Ac7932E4680Aa45", + "implDeploymentTxn": "0xd6ae3ba8c58ef4fa22688950c4849085779b0db441d3d68d84cdca5618e0e565", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" }, "L1WethGateway": { "proxyAddress": "0xd92023E9d9911199a6711321D1277285e6d4e2db", - "implAddress": "0xD21e23a237DaC0311e83f729313232C3b5039925", - "implDeploymentTxn": "0x6531e930bf6e40a0dd82019b6f9d29a003fbd777ed8df43bcfc91b3e6c6689b1", - "implArbitrumCommitHash": "917a689f2530eeb063bd8b5a7ee3487602898603", + "implAddress": "0x6299838C8254b59213eb56d158ebe562D23c4936", + "implDeploymentTxn": "0xc908d4f902b021a28618f8828e988fe4a25a676c4aab3414b25e783a62e17ba2", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" } } diff --git a/packages/arb-bridge-peripherals/_deployments/1_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/1_queued-updates.json index 2bd63f184e..0967ef424b 100644 --- a/packages/arb-bridge-peripherals/_deployments/1_queued-updates.json +++ b/packages/arb-bridge-peripherals/_deployments/1_queued-updates.json @@ -1,26 +1 @@ -{ - "L1GatewayRouter": { - "address": "0x6D1c576Fe3e54313990450f5Fa322306B4cCB47B", - "deployTxn": "0x0badea7ff78ffcaee80d8b3686debf2f3172a65aa4df26de5aaccc58bc7a6031", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - }, - "L1ERC20Gateway": { - "address": "0xb4299A1F5f26fF6a98B7BA35572290C359fde900", - "deployTxn": "0x23b0939cffff711071c3270fd7c1e619fd6f464acfbb07ae452f4f091eb0af90", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - }, - "L1CustomGateway": { - "address": "0xC8D26aB9e132C79140b3376a0Ac7932E4680Aa45", - "deployTxn": "0xd6ae3ba8c58ef4fa22688950c4849085779b0db441d3d68d84cdca5618e0e565", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - }, - "L1WethGateway": { - "address": "0x6299838C8254b59213eb56d158ebe562D23c4936", - "deployTxn": "0xc908d4f902b021a28618f8828e988fe4a25a676c4aab3414b25e783a62e17ba2", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - } -} +{} diff --git a/packages/arb-bridge-peripherals/_deployments/42161_current_deployment.json b/packages/arb-bridge-peripherals/_deployments/42161_current_deployment.json index 957f286712..9b303fc12a 100644 --- a/packages/arb-bridge-peripherals/_deployments/42161_current_deployment.json +++ b/packages/arb-bridge-peripherals/_deployments/42161_current_deployment.json @@ -3,30 +3,30 @@ "contracts": { "L2GatewayRouter": { "proxyAddress": "0x5288c571Fd7aD117beA99bF60FE0846C4E84F933", - "implAddress": "0x176a9d89d235512Ad5CB4b6A0879D704D8315eF8", - "implDeploymentTxn": "0xbb73e43fc2298db74f2d3224d6efbac8cb7d1d6272874df7ac1fcb723e8e7009", - "implArbitrumCommitHash": "917a689f2530eeb063bd8b5a7ee3487602898603", + "implAddress": "0xe80eb0238029333e368e0bDDB7acDf1b9cb28278", + "implDeploymentTxn": "0x42f97c8e518193c04c8aba7b71b08e1c05257070c71b8f5796c4c6fe885a4009", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" }, "L2ERC20Gateway": { "proxyAddress": "0x09e9222E96E7B4AE2a407B98d48e330053351EEe", - "implAddress": "0xEdE95739749BfA021134E41F520d784c99323D6B", - "implDeploymentTxn": "0x692d268b3e3c4ec8e7dfde230733a4a35571e3272fc9254e902d1b74965eb8d7", - "implArbitrumCommitHash": "917a689f2530eeb063bd8b5a7ee3487602898603", + "implAddress": "0x1DCf7D03574fbC7C205F41f2e116eE094a652e93", + "implDeploymentTxn": "0x386a8c3b2f12d91644faef8483d13c36e283bb23cb2e05ee946474d7383834d9", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" }, "L2CustomGateway": { "proxyAddress": "0x096760F208390250649E3e8763348E783AEF5562", - "implAddress": "0xE71d43C9da461D01a0EeeAbD253A52A7AEEf7538", - "implDeploymentTxn": "0xd92520c1c4214649d3130ae4a97916b00c5094c697b661b0cf6317ba1a593217", - "implArbitrumCommitHash": "917a689f2530eeb063bd8b5a7ee3487602898603", + "implAddress": "0xebb11Bbd7d72165FaC86bb5AB1B07A602540b286", + "implDeploymentTxn": "0xb437ff5aac97fa1ced73a1498af5fb71df9011f67d02ce2f10feed6937cb7376", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" }, "L2WethGateway": { "proxyAddress": "0x6c411aD3E74De3E7Bd422b94A27770f5B86C623B", - "implAddress": "0x0db4f16c99B0aE9b00fc09bF69b36c7d73c45CBE", - "implDeploymentTxn": "0x14144b2617b349ab89f9b2698cca8929ba213786db34e36c9d69b739f09fe42c", - "implArbitrumCommitHash": "917a689f2530eeb063bd8b5a7ee3487602898603", + "implAddress": "0xB642058A41D414D9De3F36D14051623e557f1052", + "implDeploymentTxn": "0x97f65d6e95d885fbf61e4824bbc59a365bb97ce8719265a09d1398b03347bc8b", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" }, "StandardArbERC20": { diff --git a/packages/arb-bridge-peripherals/_deployments/42161_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/42161_queued-updates.json index 2f7ad2d906..0967ef424b 100644 --- a/packages/arb-bridge-peripherals/_deployments/42161_queued-updates.json +++ b/packages/arb-bridge-peripherals/_deployments/42161_queued-updates.json @@ -1,26 +1 @@ -{ - "L2GatewayRouter": { - "address": "0xe80eb0238029333e368e0bDDB7acDf1b9cb28278", - "deployTxn": "0x42f97c8e518193c04c8aba7b71b08e1c05257070c71b8f5796c4c6fe885a4009", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - }, - "L2ERC20Gateway": { - "address": "0x1DCf7D03574fbC7C205F41f2e116eE094a652e93", - "deployTxn": "0x386a8c3b2f12d91644faef8483d13c36e283bb23cb2e05ee946474d7383834d9", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - }, - "L2CustomGateway": { - "address": "0xebb11Bbd7d72165FaC86bb5AB1B07A602540b286", - "deployTxn": "0xb437ff5aac97fa1ced73a1498af5fb71df9011f67d02ce2f10feed6937cb7376", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - }, - "L2WethGateway": { - "address": "0xB642058A41D414D9De3F36D14051623e557f1052", - "deployTxn": "0x97f65d6e95d885fbf61e4824bbc59a365bb97ce8719265a09d1398b03347bc8b", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - } -} +{} diff --git a/packages/arb-bridge-peripherals/_deployments/42170_current_deployment.json b/packages/arb-bridge-peripherals/_deployments/42170_current_deployment.json index 14e15634da..a97d065392 100644 --- a/packages/arb-bridge-peripherals/_deployments/42170_current_deployment.json +++ b/packages/arb-bridge-peripherals/_deployments/42170_current_deployment.json @@ -3,30 +3,30 @@ "contracts": { "L2GatewayRouter": { "proxyAddress": "0x21903d3F8176b1a0c17E953Cd896610Be9fFDFa8", - "implAddress": "0x09854610F48462a7029fF192FA0AfB7F00133F54", - "implDeploymentTxn": "0x93bffbfa61c4f3b5b1abc31611bdd97de2e29832b8c8291a23826da6efd61d33", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0x8f377770289863DF73Fe665B74460579F82321fb", + "implDeploymentTxn": "0x8c917e27e5aeff1f9f2ae781efc24c4ee3502550f4fd6d451af09756a9fbeb41", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" }, "L2ERC20Gateway": { "proxyAddress": "0xcF9bAb7e53DDe48A6DC4f286CB14e05298799257", - "implAddress": "0xEa2562667c98Bfe329995616454BeA9ea3290D1C", - "implDeploymentTxn": "0xc472f2d6e5b87991f19d2206ffcc74ad6e40ba0cf41ff04c5a17776c31b19c2f", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0x466155FD6d8BbF1c0d5ca32818814cB28b6884d8", + "implDeploymentTxn": "0x3d949fdeb42a3ebb04b705358ab5f8559cffbc27d7fbaf3a63649d12e327d592", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" }, "L2CustomGateway": { "proxyAddress": "0xbf544970E6BD77b21C6492C281AB60d0770451F4", - "implAddress": "0xb1d943d67b793D61F08b5F536AC591a057306fe5", - "implDeploymentTxn": "0x1f0a93061393d00cd6d3b1c08b5c9737a7fa4b17e5437556bdfab57637ba126a", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0x6e04b9dd87CF2cD3b7D81C50D2DF72d24BC0Cc4C", + "implDeploymentTxn": "0x23f85120a694473d855e67fda56f46206c11e279edb4d041c1eec865792a94cb", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" }, "L2WethGateway": { "proxyAddress": "0x7626841cB6113412F9c88D3ADC720C9FAC88D9eD", - "implAddress": "0x3525f734fcE1a26a6CEffFca43538290DC239771", - "implDeploymentTxn": "0x07141c0dfc61287946950a3abee91b6aa96144fee98a88a7b065efc3b0248968", - "implArbitrumCommitHash": "51dfc9fbe45a0d66c4fcad6ac645386eb50e528a", + "implAddress": "0x190C993Db842097df8b8d71c910f1802df0724C3", + "implDeploymentTxn": "0x510b16690e35cd4490211c1b7f11762f2e47c33236076883d54d8c153df79855", + "implArbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", "implBuildInfo": "" }, "StandardArbERC20": { diff --git a/packages/arb-bridge-peripherals/_deployments/42170_queued-updates.json b/packages/arb-bridge-peripherals/_deployments/42170_queued-updates.json index 6a7c73d813..0967ef424b 100644 --- a/packages/arb-bridge-peripherals/_deployments/42170_queued-updates.json +++ b/packages/arb-bridge-peripherals/_deployments/42170_queued-updates.json @@ -1,26 +1 @@ -{ - "L2GatewayRouter": { - "address": "0x8f377770289863DF73Fe665B74460579F82321fb", - "deployTxn": "0x8c917e27e5aeff1f9f2ae781efc24c4ee3502550f4fd6d451af09756a9fbeb41", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - }, - "L2ERC20Gateway": { - "address": "0x466155FD6d8BbF1c0d5ca32818814cB28b6884d8", - "deployTxn": "0x3d949fdeb42a3ebb04b705358ab5f8559cffbc27d7fbaf3a63649d12e327d592", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - }, - "L2CustomGateway": { - "address": "0x6e04b9dd87CF2cD3b7D81C50D2DF72d24BC0Cc4C", - "deployTxn": "0x23f85120a694473d855e67fda56f46206c11e279edb4d041c1eec865792a94cb", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - }, - "L2WethGateway": { - "address": "0x190C993Db842097df8b8d71c910f1802df0724C3", - "deployTxn": "0x510b16690e35cd4490211c1b7f11762f2e47c33236076883d54d8c153df79855", - "arbitrumCommitHash": "265b5ef6a68f4e6c5d891d61b4c733634e49ac74", - "buildInfo": "" - } -} +{} From 93340983cc28b9689c67f5117c1a6e42ba3f5332 Mon Sep 17 00:00:00 2001 From: Mahsa Moosavi Date: Tue, 9 Aug 2022 12:54:35 -0400 Subject: [PATCH 107/128] Add chains providers (#2444) * QuickNode added for Nova * providers added to the public chain * minor edits * minor tweak Co-authored-by: Daniel Goldman --- docs/Public_Chains.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/Public_Chains.md b/docs/Public_Chains.md index edc9c6db74..a2f70957ef 100644 --- a/docs/Public_Chains.md +++ b/docs/Public_Chains.md @@ -22,12 +22,16 @@ For a list of useful contract addresses, see [here](Useful_Addresses.md). ### Arbitrum Chains Summary **Arbitrum One**: Arbitrum One is the flagship Arbitrum mainnet chain; it is an Optimistic Rollup chain running on top of Ethereum Mainnet, and is open to all users. In an upcoming upgrade, the Arbitrum One chain will be upgraded to use the [Nitro](https://medium.com/offchainlabs/its-nitro-time-86944693bf29) tech stack, maintaining the same state. (Stay tuned for updates!) +Users can now use [Alchemy](https://alchemy.com/?a=arbitrum-docs), [Infura](https://infura.io/), [QuickNode](https://www.quicknode.com), [Moralis](https://moralis.io/), [Ankr](https://www.ankr.com/), [BlockVision](https://blockvision.org/), and [GetBlock](https://getblock.io/) to interact with the Arbitrum One. See [node providers](Node_Providers.md) for the full guide. -**Arbitrum Nova**: Arbitrum Nova is the first mainnet [AnyTrust](AnyTrust.md) chain; it is currently open for [developer access](https://medium.com/offchainlabs/introducing-nova-arbitrum-anytrust-mainnet-is-open-for-developers-9a54692f345e). +**Arbitrum Nova**: Arbitrum Nova is the first mainnet [AnyTrust](AnyTrust.md) chain. +Usres can now use [QuickNode](https://www.quicknode.com) to interact with the Arbitrum Nova chain. For a full guide of how to set up an Arbitrum node on QuickNode, see the QuickNode's Arbitrum RPC documentation. **RinkArby**: RinkArby is the longest running Arbitrum testnet. It previously ran on the classic stack, but at block 7/28/2022 it was migrated use the Nitro stack! Rinkarby will be deprecated [when Rinkeby itself gets deprecated](https://blog.ethereum.org/2022/06/21/testnet-deprecation/); plan accordingly! +Users can now use [Alchemy](https://alchemy.com/?a=arbitrum-docs), [Infura](https://infura.io/), [QuickNode](https://www.quicknode.com), [Moralis](https://moralis.io/), [Ankr](https://www.ankr.com/), [BlockVision](https://blockvision.org/), and [GetBlock](https://getblock.io/) to interact with the Arbitrum One. See [node providers](Node_Providers.md) for the full guide. **Nitro Goerli Rollup Testnet**: This testnet (421613) uses the Nitro rollup tech stack; it is expected to be the primary, stable Arbitrum testnet moving forward. +Users can now use [Alchemy](https://alchemy.com/?a=arbitrum-docs), [Infura](https://infura.io/), and [QuickNode](https://www.quicknode.com) to interact with the Arbitrum One. See [node providers](Node_Providers.md) for the full guide. ### Using Arbitrum From 897135a96d6101cbc4a8a3efc354a546c729d277 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 10 Aug 2022 02:18:56 +0800 Subject: [PATCH 108/128] Update Running_Nitro_Node.md --- docs/Running_Nitro_Node.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Running_Nitro_Node.md b/docs/Running_Nitro_Node.md index dcb8bb1573..4102e64e22 100644 --- a/docs/Running_Nitro_Node.md +++ b/docs/Running_Nitro_Node.md @@ -8,7 +8,7 @@ Note: If you’re interested in accessing an Arbitrum chain, but you don’t wan ### Required Artifacts -- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72` +- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.9-f8a2ed7` - Only if using Rinkeby: Rinkeby Nitro Seed Database Snapshot - Use the parameter `--init.url="https://snapshot.arbitrum.io/rinkeby/nitro.tar"` on first startup to initialize Nitro database @@ -83,7 +83,7 @@ Note: If you’re interested in accessing an Arbitrum chain, but you don’t wan The arb-relay is in the same docker image. - Here is an example of how to run nitro-relay for Rinkeby: ``` - docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --node.feed.output.addr=0.0.0.0 --node.feed.input.url wss://rinkeby.arbitrum.io/feed + docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.9-f8a2ed7 --node.feed.output.addr=0.0.0.0 --node.feed.input.url wss://rinkeby.arbitrum.io/feed ``` - Here is an example of how to run nitro-node for Rinkeby with custom relay: ``` From 8e90b15521449f37e165adf498d82ebbea248967 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Wed, 10 Aug 2022 02:36:11 +0800 Subject: [PATCH 109/128] fix: nova explorer urls (#2440) Co-authored-by: Daniel Goldman --- docs/Useful_Addresses.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/Useful_Addresses.md b/docs/Useful_Addresses.md index 01ea73973f..8e049e35db 100644 --- a/docs/Useful_Addresses.md +++ b/docs/Useful_Addresses.md @@ -40,18 +40,18 @@ _Users should only interact with the token bridge via dapp interfaces like https -| | Mainnet: Arbitrum One | Mainnet: Arbitrum Nova | Arb-Rinkeby | Nitro Goerli Rollup | -| --------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -| L1 Gateway Router | [0x72Ce9c846789fdB6fC1f34aC4AD25Dd9ef7031ef](https://etherscan.io/address/0x72Ce9c846789fdB6fC1f34aC4AD25Dd9ef7031ef) | [0xC840838Bc438d73C16c2f8b22D2Ce3669963cD48](https://etherscan.io/address/0xC840838Bc438d73C16c2f8b22D2Ce3669963cD48) | [0x70C143928eCfFaf9F5b406f7f4fC28Dc43d68380](https://rinkeby.etherscan.io/address/0x70C143928eCfFaf9F5b406f7f4fC28Dc43d68380) | [0x4c7708168395aEa569453Fc36862D2ffcDaC588c](https://goerli.etherscan.io/address/0x4c7708168395aEa569453Fc36862D2ffcDaC588c) | -| L2 Gateway Router | [0x5288c571Fd7aD117beA99bF60FE0846C4E84F933](https://arbiscan.io/address/0x5288c571Fd7aD117beA99bF60FE0846C4E84F933) | [0x21903d3F8176b1a0c17E953Cd896610Be9fFDFa8](https://nova.arbitrum.io/rpc/address/0x21903d3F8176b1a0c17E953Cd896610Be9fFDFa8) | [0x9413AD42910c1eA60c737dB5f58d1C504498a3cD](https://testnet.arbiscan.io/address/0x9413AD42910c1eA60c737dB5f58d1C504498a3cD) | [0xE5B9d8d42d656d1DcB8065A6c012FE3780246041](https://goerli-rollup-explorer.arbitrum.io/address/0xE5B9d8d42d656d1DcB8065A6c012FE3780246041) | -| L1 ERC20 Gateway | [0xa3A7B6F88361F48403514059F1F16C8E78d60EeC](https://etherscan.io/address/0xa3A7B6F88361F48403514059F1F16C8E78d60EeC) | [0xB2535b988dcE19f9D71dfB22dB6da744aCac21bf](https://etherscan.io/address/0xB2535b988dcE19f9D71dfB22dB6da744aCac21bf) | [0x91169Dbb45e6804743F94609De50D511C437572E](https://rinkeby.etherscan.io/address/0x91169Dbb45e6804743F94609De50D511C437572E) | [0x715D99480b77A8d9D603638e593a539E21345FdF](https://goerli.etherscan.io/address/0x715D99480b77A8d9D603638e593a539E21345FdF) | -| L2 ERC20 Gateway | [0x09e9222E96E7B4AE2a407B98d48e330053351EEe](https://arbiscan.io/address/0x09e9222E96E7B4AE2a407B98d48e330053351EEe) | [0xcF9bAb7e53DDe48A6DC4f286CB14e05298799257](https://nova.arbitrum.io/rpc/address/0xcF9bAb7e53DDe48A6DC4f286CB14e05298799257) | [0x195C107F3F75c4C93Eba7d9a1312F19305d6375f](https://testnet.arbiscan.io/address/0x195C107F3F75c4C93Eba7d9a1312F19305d6375f) | [0x2eC7Bc552CE8E51f098325D2FcF0d3b9d3d2A9a2](https://goerli-rollup-explorer.arbitrum.io/address/0x2eC7Bc552CE8E51f098325D2FcF0d3b9d3d2A9a2) | -| L1 Arb-Custom Gateway | [0xcEe284F754E854890e311e3280b767F80797180d](https://etherscan.io/address/0xcEe284F754E854890e311e3280b767F80797180d) | [0x23122da8C581AA7E0d07A36Ff1f16F799650232f](https://etherscan.io/address/0x23122da8C581AA7E0d07A36Ff1f16F799650232f) | [0x917dc9a69F65dC3082D518192cd3725E1Fa96cA2](https://rinkeby.etherscan.io/address/0x917dc9a69F65dC3082D518192cd3725E1Fa96cA2) | [0x9fDD1C4E4AA24EEc1d913FABea925594a20d43C7](https://goerli.etherscan.io/address/0x9fDD1C4E4AA24EEc1d913FABea925594a20d43C7) | -| L2 Arb-Custom Gateway | [0x096760F208390250649E3e8763348E783AEF5562](https://arbiscan.io/address/0x096760F208390250649E3e8763348E783AEF5562) | [0xbf544970E6BD77b21C6492C281AB60d0770451F4](https://nova.arbitrum.io/rpc/address/0xbf544970E6BD77b21C6492C281AB60d0770451F4) | [0x9b014455AcC2Fe90c52803849d0002aeEC184a06](https://testnet.arbiscan.io/address/0x9b014455AcC2Fe90c52803849d0002aeEC184a06) | [0x8b6990830cF135318f75182487A4D7698549C717](https://goerli-rollup-explorer.arbitrum.io/address/0x8b6990830cF135318f75182487A4D7698549C717) | -| L1 Weth Gateway | [0xd92023E9d9911199a6711321D1277285e6d4e2db](https://etherscan.io/address/0xd92023E9d9911199a6711321D1277285e6d4e2db) | [0xE4E2121b479017955Be0b175305B35f312330BaE](https://etherscan.io/address/0xE4E2121b479017955Be0b175305B35f312330BaE) | [0x81d1a19cf7071732D4313c75dE8DD5b8CF697eFD](https://rinkeby.etherscan.io/address/0x81d1a19cf7071732D4313c75dE8DD5b8CF697eFD) | [0x6e244cD02BBB8a6dbd7F626f05B2ef82151Ab502](https://goerli.etherscan.io/address/0x6e244cD02BBB8a6dbd7F626f05B2ef82151Ab502) | -| L2 Weth Gateway | [0x6c411aD3E74De3E7Bd422b94A27770f5B86C623B](https://arbiscan.io/address/0x6c411aD3E74De3E7Bd422b94A27770f5B86C623B) | [0x7626841cB6113412F9c88D3ADC720C9FAC88D9eD](https://nova.arbitrum.io/rpc/address/0x7626841cB6113412F9c88D3ADC720C9FAC88D9eD) | [0xf94bc045c4E926CC0b34e8D1c41Cd7a043304ac9](https://testnet.arbiscan.io/address/0xf94bc045c4E926CC0b34e8D1c41Cd7a043304ac9) | [0xf9F2e89c8347BD96742Cc07095dee490e64301d6](https://goerli-rollup-explorer.arbitrum.io/address/0xf9F2e89c8347BD96742Cc07095dee490e64301d6) | -| L1 Weth | [0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2) | [0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2](https://etherscan.io/address/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2) | [0xc778417E063141139Fce010982780140Aa0cD5Ab](https://rinkeby.etherscan.io/address/0xc778417E063141139Fce010982780140Aa0cD5Ab) | [0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6](https://goerli.etherscan.io/address/0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6) | -| L2 Weth | [0x82aF49447D8a07e3bd95BD0d56f35241523fBab1](https://arbiscan.io/address/0x82aF49447D8a07e3bd95BD0d56f35241523fBab1) | [0x722E8BdD2ce80A4422E880164f2079488e115365](https://nova.arbitrum.io/rpc/address/0x722E8BdD2ce80A4422E880164f2079488e115365) | [0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681](https://testnet.arbiscan.io/address/0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681) | [0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3](https://goerli-rollup-explorer.arbitrum.io/address/0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3) | +| | Mainnet: Arbitrum One | Mainnet: Arbitrum Nova | Arb-Rinkeby | Nitro Goerli Rollup | +| --------------------- | --------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| L1 Gateway Router | [0x72Ce9c846789fdB6fC1f34aC4AD25Dd9ef7031ef](https://etherscan.io/address/0x72Ce9c846789fdB6fC1f34aC4AD25Dd9ef7031ef) | [0xC840838Bc438d73C16c2f8b22D2Ce3669963cD48](https://etherscan.io/address/0xC840838Bc438d73C16c2f8b22D2Ce3669963cD48) | [0x70C143928eCfFaf9F5b406f7f4fC28Dc43d68380](https://rinkeby.etherscan.io/address/0x70C143928eCfFaf9F5b406f7f4fC28Dc43d68380) | [0x4c7708168395aEa569453Fc36862D2ffcDaC588c](https://goerli.etherscan.io/address/0x4c7708168395aEa569453Fc36862D2ffcDaC588c) | +| L2 Gateway Router | [0x5288c571Fd7aD117beA99bF60FE0846C4E84F933](https://arbiscan.io/address/0x5288c571Fd7aD117beA99bF60FE0846C4E84F933) | [0x21903d3F8176b1a0c17E953Cd896610Be9fFDFa8](https://nova-explorer.arbitrum.io/address/0x21903d3F8176b1a0c17E953Cd896610Be9fFDFa8) | [0x9413AD42910c1eA60c737dB5f58d1C504498a3cD](https://testnet.arbiscan.io/address/0x9413AD42910c1eA60c737dB5f58d1C504498a3cD) | [0xE5B9d8d42d656d1DcB8065A6c012FE3780246041](https://goerli-rollup-explorer.arbitrum.io/address/0xE5B9d8d42d656d1DcB8065A6c012FE3780246041) | +| L1 ERC20 Gateway | [0xa3A7B6F88361F48403514059F1F16C8E78d60EeC](https://etherscan.io/address/0xa3A7B6F88361F48403514059F1F16C8E78d60EeC) | [0xB2535b988dcE19f9D71dfB22dB6da744aCac21bf](https://etherscan.io/address/0xB2535b988dcE19f9D71dfB22dB6da744aCac21bf) | [0x91169Dbb45e6804743F94609De50D511C437572E](https://rinkeby.etherscan.io/address/0x91169Dbb45e6804743F94609De50D511C437572E) | [0x715D99480b77A8d9D603638e593a539E21345FdF](https://goerli.etherscan.io/address/0x715D99480b77A8d9D603638e593a539E21345FdF) | +| L2 ERC20 Gateway | [0x09e9222E96E7B4AE2a407B98d48e330053351EEe](https://arbiscan.io/address/0x09e9222E96E7B4AE2a407B98d48e330053351EEe) | [0xcF9bAb7e53DDe48A6DC4f286CB14e05298799257](https://nova-explorer.arbitrum.io/address/0xcF9bAb7e53DDe48A6DC4f286CB14e05298799257) | [0x195C107F3F75c4C93Eba7d9a1312F19305d6375f](https://testnet.arbiscan.io/address/0x195C107F3F75c4C93Eba7d9a1312F19305d6375f) | [0x2eC7Bc552CE8E51f098325D2FcF0d3b9d3d2A9a2](https://goerli-rollup-explorer.arbitrum.io/address/0x2eC7Bc552CE8E51f098325D2FcF0d3b9d3d2A9a2) | +| L1 Arb-Custom Gateway | [0xcEe284F754E854890e311e3280b767F80797180d](https://etherscan.io/address/0xcEe284F754E854890e311e3280b767F80797180d) | [0x23122da8C581AA7E0d07A36Ff1f16F799650232f](https://etherscan.io/address/0x23122da8C581AA7E0d07A36Ff1f16F799650232f) | [0x917dc9a69F65dC3082D518192cd3725E1Fa96cA2](https://rinkeby.etherscan.io/address/0x917dc9a69F65dC3082D518192cd3725E1Fa96cA2) | [0x9fDD1C4E4AA24EEc1d913FABea925594a20d43C7](https://goerli.etherscan.io/address/0x9fDD1C4E4AA24EEc1d913FABea925594a20d43C7) | +| L2 Arb-Custom Gateway | [0x096760F208390250649E3e8763348E783AEF5562](https://arbiscan.io/address/0x096760F208390250649E3e8763348E783AEF5562) | [0xbf544970E6BD77b21C6492C281AB60d0770451F4](https://nova-explorer.arbitrum.io/address/0xbf544970E6BD77b21C6492C281AB60d0770451F4) | [0x9b014455AcC2Fe90c52803849d0002aeEC184a06](https://testnet.arbiscan.io/address/0x9b014455AcC2Fe90c52803849d0002aeEC184a06) | [0x8b6990830cF135318f75182487A4D7698549C717](https://goerli-rollup-explorer.arbitrum.io/address/0x8b6990830cF135318f75182487A4D7698549C717) | +| L1 Weth Gateway | [0xd92023E9d9911199a6711321D1277285e6d4e2db](https://etherscan.io/address/0xd92023E9d9911199a6711321D1277285e6d4e2db) | [0xE4E2121b479017955Be0b175305B35f312330BaE](https://etherscan.io/address/0xE4E2121b479017955Be0b175305B35f312330BaE) | [0x81d1a19cf7071732D4313c75dE8DD5b8CF697eFD](https://rinkeby.etherscan.io/address/0x81d1a19cf7071732D4313c75dE8DD5b8CF697eFD) | [0x6e244cD02BBB8a6dbd7F626f05B2ef82151Ab502](https://goerli.etherscan.io/address/0x6e244cD02BBB8a6dbd7F626f05B2ef82151Ab502) | +| L2 Weth Gateway | [0x6c411aD3E74De3E7Bd422b94A27770f5B86C623B](https://arbiscan.io/address/0x6c411aD3E74De3E7Bd422b94A27770f5B86C623B) | [0x7626841cB6113412F9c88D3ADC720C9FAC88D9eD](https://nova-explorer.arbitrum.io/address/0x7626841cB6113412F9c88D3ADC720C9FAC88D9eD) | [0xf94bc045c4E926CC0b34e8D1c41Cd7a043304ac9](https://testnet.arbiscan.io/address/0xf94bc045c4E926CC0b34e8D1c41Cd7a043304ac9) | [0xf9F2e89c8347BD96742Cc07095dee490e64301d6](https://goerli-rollup-explorer.arbitrum.io/address/0xf9F2e89c8347BD96742Cc07095dee490e64301d6) | +| L1 Weth | [0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2) | [0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2](https://etherscan.io/address/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2) | [0xc778417E063141139Fce010982780140Aa0cD5Ab](https://rinkeby.etherscan.io/address/0xc778417E063141139Fce010982780140Aa0cD5Ab) | [0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6](https://goerli.etherscan.io/address/0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6) | +| L2 Weth | [0x82aF49447D8a07e3bd95BD0d56f35241523fBab1](https://arbiscan.io/address/0x82aF49447D8a07e3bd95BD0d56f35241523fBab1) | [0x722E8BdD2ce80A4422E880164f2079488e115365](https://nova-explorer.arbitrum.io/address/0x722E8BdD2ce80A4422E880164f2079488e115365) | [0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681](https://testnet.arbiscan.io/address/0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681) | [0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3](https://goerli-rollup-explorer.arbitrum.io/address/0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3) | #### Third party gateways @@ -86,8 +86,8 @@ These are the addresses of some other gateways that have been deployed and integ ### Misc -| | Mainnet: Arbitrum One | Mainnet: Arbitrum Nova | Arb-Rinkeby | Nitro Goerli Rollup | -| ------------ | -------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | -| L2 Multicall | [0x7ecfbaa8742fdf5756dac92fbc8b90a19b8815bf](https://arbiscan.io/address/0x7ecfbaa8742fdf5756dac92fbc8b90a19b8815bf) | [0x5e1eE626420A354BbC9a95FeA1BAd4492e3bcB86](https://nova.arbitrum.io/rpc/address/0x5e1eE626420A354BbC9a95FeA1BAd4492e3bcB86) | [0x7ecfbaa8742fdf5756dac92fbc8b90a19b8815bf](https://testnet.arbiscan.io/address/0x7ecfbaa8742fdf5756dac92fbc8b90a19b8815bf) | [0x108B25170319f38DbED14cA9716C54E5D1FF4623](https://goerli-rollup-explorer.arbitrum.io/address/0x108B25170319f38DbED14cA9716C54E5D1FF4623) | +| | Mainnet: Arbitrum One | Mainnet: Arbitrum Nova | Arb-Rinkeby | Nitro Goerli Rollup | +| ------------ | -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| L2 Multicall | [0x7ecfbaa8742fdf5756dac92fbc8b90a19b8815bf](https://arbiscan.io/address/0x7ecfbaa8742fdf5756dac92fbc8b90a19b8815bf) | [0x5e1eE626420A354BbC9a95FeA1BAd4492e3bcB86](https://nova-explorer.arbitrum.io/address/0x5e1eE626420A354BbC9a95FeA1BAd4492e3bcB86) | [0x7ecfbaa8742fdf5756dac92fbc8b90a19b8815bf](https://testnet.arbiscan.io/address/0x7ecfbaa8742fdf5756dac92fbc8b90a19b8815bf) | [0x108B25170319f38DbED14cA9716C54E5D1FF4623](https://goerli-rollup-explorer.arbitrum.io/address/0x108B25170319f38DbED14cA9716C54E5D1FF4623) | From 22e7ac9339646f922d76ac3986a7fa42c9568904 Mon Sep 17 00:00:00 2001 From: Daniel Goldman Date: Tue, 9 Aug 2022 15:28:55 -0400 Subject: [PATCH 110/128] updat nova mainnet status (#2446) Co-authored-by: gzeon <95478735+gzeoneth@users.noreply.github.com> --- docs/AnyTrust.md | 2 +- docs/Mainnet.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/AnyTrust.md b/docs/AnyTrust.md index da40deb8b5..b7f947dd32 100644 --- a/docs/AnyTrust.md +++ b/docs/AnyTrust.md @@ -4,7 +4,7 @@ title: AnyTrust Chains sidebar_label: AnyTrust Chains --- -AnyTrust chains are an Arbitrum chain type, distinct from Arbitrum Rollup chains. The Arbitrum One mainnet chain (chain ID 42161) is — and will always be — a rollup chain. The first AnyTrust chain — Arbitrum Nova, is currently open for [developer access](https://medium.com/offchainlabs/introducing-nova-arbitrum-anytrust-mainnet-is-open-for-developers-9a54692f345e). See [Public Chains](Public_Chains.md) for chain details. +AnyTrust chains are an Arbitrum chain type, distinct from Arbitrum Rollup chains. The Arbitrum One mainnet chain (chain ID 42161) is — and will always be — a rollup chain. The first AnyTrust chain — Arbitrum Nova, is currently [live on mainnet](https://medium.com/offchainlabs/its-time-for-a-new-dawn-nova-is-open-to-the-public-a081df1e4ad2); see [Public Chains](Public_Chains.md) for chain details. The fundamental tradeoff between Rollup and AnyTrust is decentralization vs. transaction costs: Rollup chains inherit their security directly from layer 1 without introducing new trust assumptions, whereas AnyTrust chains introduce their own security assumption, and are thus able to charge users lower fees. diff --git a/docs/Mainnet.md b/docs/Mainnet.md index ea52037949..7675bea7ce 100644 --- a/docs/Mainnet.md +++ b/docs/Mainnet.md @@ -4,7 +4,7 @@ title: What is "Mainnet Beta"? sidebar_label: What is "Mainnet Beta"? --- -Arbitrum One — the first permissionless Ethereum layer 2 rollup with full Ethereum smart contract functionality — is [live](https://offchain.medium.com/mainnet-for-everyone-27ce0f67c85e) — and Nova, our first [AnyTrust](AnyTrust.md) chain, is [open to developers on mainnet](https://medium.com/offchainlabs/introducing-nova-arbitrum-anytrust-mainnet-is-open-for-developers-9a54692f345e), soon to be opened up to all users! We're sure you're (almost) as excited as we are; here's what you need to know before using the system: +Arbitrum One — the first permissionless Ethereum layer 2 rollup with full Ethereum smart contract functionality — is [live on mainnet](https://offchain.medium.com/mainnet-for-everyone-27ce0f67c85e) — as is [Nova](https://medium.com/offchainlabs/its-time-for-a-new-dawn-nova-is-open-to-the-public-a081df1e4ad2), our first [AnyTrust](AnyTrust.md) chain! We're sure you're (almost) as excited as we are; here's what you need to know before using the system: ### Some Words of Caution From e9f6aacc6722ca0b87562cb9fa3add13faa094b7 Mon Sep 17 00:00:00 2001 From: Mahsa Moosavi Date: Wed, 10 Aug 2022 12:09:05 -0400 Subject: [PATCH 111/128] updating the landing page (#2448) --- docs/Developer_Quickstart.md | 94 ++---------------------------------- 1 file changed, 4 insertions(+), 90 deletions(-) diff --git a/docs/Developer_Quickstart.md b/docs/Developer_Quickstart.md index 8265a95efc..0c73fd8bbb 100644 --- a/docs/Developer_Quickstart.md +++ b/docs/Developer_Quickstart.md @@ -11,98 +11,12 @@ Arbitrum is a suite of Ethereum scaling solutions that enables high-throughput, If you're looking to discover how Arbitrum works, the best place to begin is by the [Rollups basics](Rollup_basics.md) section, which gives a high level overview of Arbitrum's internals. From there, you can jump into more detailed explainers on various components of the system. -### How Can I Start Building +### How Can I Start Building? If you want to get started using Arbitrum with no setup required, check out our [public testnets](Public_Chains.md). -### How Can I Develop Locally +You could use our [Tutorials](https://github.com/OffchainLabs/arbitrum-tutorials) to get started with building on Arbitrum. This mono-repo includes various demos showing and explaining how to interact with Arbitrum — deploying and using contracts directly on L2, moving Ether and tokens between L1 and L2, and more. -The very first step to start building with Arbitrum is [installing](Installation.md) Arbitrum and its dependencies. Next, you'll need to deploy an Arbitrum chain on an L1 blockchain. You can follow the [local testnet guide](Local_Blockchain.md) for a quickstart walkthrough deployment of an Arbitrum Rollup chain on the local testnet. +We also show how you can use broadly supported Ethereum ecosystem tooling (Hardhat, Ethers-js, etc.) as well as our special Arbitrum SDK for convenience. -Note that Arbitrum chains support dynamic launching of contracts, so you don't need to setup an Arbitrum chain for each application you build, and indeed you may deploy your contracts on a testnet chain which you did not launch. The benefits of having multiple applications on the same Arbitrum Rollup chain is that they'll be able to interact synchronously, just as they would if they were launched directly on Ethereum. - -Once you have deployed Arbitrum, you can [build and run the demo app](#hello-arbitrum) or [deploy your own contracts](Contract_Deployment.md). - -**Want to learn more? Check out the** [**open source code**](https://github.com/offchainlabs/arbitrum)**. Join the team on** [**Discord**](https://discord.gg/ZpZuw7p)**.** - -## Setup Local Geth and Rollup Blockchain - -See [Local Blockchain Setup](Local_Blockchain.md). - -## Hello, Arbitrum - -Now you'll deploy and run a demo dApp on Arbitrum. The dApp is based on -a simple Pet Shop dApp that is used in a Truffle tutorial. - -First clone the pet-shop demo dApp and install dependencies: - -```bash -git clone https://github.com/OffchainLabs/demo-dapp-pet-shop -cd demo-dapp-pet-shop -yarn -``` - -### Deployment - -Deploy contracts to Arbitrum : - -```bash -truffle migrate --network arbitrum -``` - -### Use the dApp - -1. Install [Metamask](https://metamask.io/) (See all supported wallets [here](https://portal.arbitrum.one/#wallets)) - - > Once Metamask is installed, open it and select - > `Import Account` and enter one of the following pre-funded private keys - > - > ``` - > 0x979f020f6f6f71577c09db93ba944c89945f10fade64cfc7eb26137d5816fb76 - > 0xd26a199ae5b6bed1992439d1840f7cb400d0a55a0c9f796fa67d7c571fbb180e - > 0xaf5c2984cb1e2f668ae3fd5bbfe0471f68417efd012493538dcd42692299155b - > 0x9af1e691e3db692cc9cad4e87b6490e099eb291e3b434a0d3f014dfd2bb747cc - > 0x27e926925fb5903ee038c894d9880f74d3dd6518e23ab5e5651de93327c7dffa - > 0xe4b33c0bb790b88f2463facaf86ae7c17cbdab41187e69ddde8cc1c1fda7c9ab - > ``` - -2) Select local arbitrum network in Metamask - - - Go back to Metamask or click the extension icon - - Select `Main Ethereum Network` top right hand side - - Choose `Custom RPC` - - Enter `Local Arbitrum` as the network name - - Enter `http://127.0.0.1:8547` as the RPC url - - Press the save button - - Metamask should now have an Local Arbitrum account holding ETH - -3) Launch the front-end - - ```bash - yarn start - ``` - - The browser will open to [localhost:8080](http://localhost:8080) - - In the popup window that appears, select `Connect` - -4) Adopt some pets - - The pet shop dApp should now be running in your browser. Choose a pet or two - and click the adopt button to adopt your new animal friend(s). - -### Election Dapp - -If you want to try another dApp run, deploy the solidity contracts and launch the frontend - -```bash -git clone https://github.com/OffchainLabs/demo-dapp-election -cd demo-dapp-election -yarn -truffle migrate --network arbitrum -yarn start -``` - -### More Demos - -For more demos, see our [demos](https://github.com/OffchainLabs/arbitrum-tutorials) mono-repo. +**Want to learn more? Check out the** [**open source code**](https://github.com/offchainlabs/arbitrum)**. Join the team on** [**Discord**](https://discord.gg/ZpZuw7p)**.** \ No newline at end of file From 534f5777795f42f27653a9f12c650ca61c869a86 Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Thu, 4 Aug 2022 15:00:45 -0700 Subject: [PATCH 112/128] Update build script to use up to date alpine docker image --- scripts/build_node_docker.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/build_node_docker.py b/scripts/build_node_docker.py index ed26808452..1630b14a6f 100755 --- a/scripts/build_node_docker.py +++ b/scripts/build_node_docker.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# Copyright 2019, Offchain Labs, Inc. +# Copyright 2022, Offchain Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -19,7 +19,7 @@ from support.run import run ROOT_DIR = os.path.abspath(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) -DOCKERFILE_CACHE = """FROM alpine:3.9 +DOCKERFILE_CACHE = """FROM alpine:3 RUN mkdir /build /cpp-build /rocksdb FROM scratch COPY --from=0 /cpp-build /cpp-build From 831438a0ec5bfda62bf363629c23ae761d48cb20 Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Wed, 10 Aug 2022 17:08:12 -0700 Subject: [PATCH 113/128] pin alpine image to 3.16.2 --- scripts/build_node_docker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build_node_docker.py b/scripts/build_node_docker.py index 1630b14a6f..dc5e591803 100755 --- a/scripts/build_node_docker.py +++ b/scripts/build_node_docker.py @@ -19,7 +19,7 @@ from support.run import run ROOT_DIR = os.path.abspath(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) -DOCKERFILE_CACHE = """FROM alpine:3 +DOCKERFILE_CACHE = """FROM alpine:3.16.2 RUN mkdir /build /cpp-build /rocksdb FROM scratch COPY --from=0 /cpp-build /cpp-build From ef01a145b541c47360ba54b7079577a8db8bd0d7 Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Wed, 10 Aug 2022 16:18:19 -0700 Subject: [PATCH 114/128] Update nitro node version to beta.9 also minor doc update --- docs/Node_Providers.md | 8 +++++--- docs/Running_Nitro_Node.md | 8 ++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/Node_Providers.md b/docs/Node_Providers.md index 613bc3b3fd..14c526eb38 100644 --- a/docs/Node_Providers.md +++ b/docs/Node_Providers.md @@ -8,7 +8,7 @@ To interact with Arbitrum One and the RinkArby testnet, you can rely on the same ## [Alchemy](https://alchemy.com/?a=arbitrum-docs) -Alchemy provides endpoints for both Arbitrum One (Mainnet) and Rinkeby testnet. To use these RPC endpoints, you need to create a free account and set up an ***Alchemy API key*** to authenticate your requests. For detailed steps of how to create one, see the [Alchemy's documentation](https://docs.alchemy.com/alchemy/introduction/getting-started#1.create-an-alchemy-key). +Alchemy provides endpoints for both Arbitrum One (Mainnet) and Rinkeby testnet. To use these RPC endpoints, you need to create a free account and set up an **_Alchemy API key_** to authenticate your requests. For detailed steps of how to create one, see the [Alchemy's documentation](https://docs.alchemy.com/alchemy/introduction/getting-started#1.create-an-alchemy-key). Next, depending one which network you want to interact with, you can choose between the two RPC endpoints provided by Alchemy and interact with them directly in the command line or point your [wallet's](https://portal.arbitrum.one/#wallets) RPC endpoints to them. For more information on Arbitrum JSON-RPC API methods supported by Alchemy, check out the [official documentation](https://docs.alchemy.com/alchemy/apis/arbitrum). @@ -16,9 +16,11 @@ Alchemy provides 300M compute units per month for free, or the equivalent of 30M ## [Infura](https://infura.io/) -Infura is a node service provider that provides access to Arbitrum One (Mainnet) and Rinkeby testnet. To start interacting with either of these networks, you need to set up an Infura account and create a project. Next, you will be given a ***Project ID*** (for detailed steps, check out the [Infura's documentation](https://blog.infura.io/getting-started-with-infura-28e41844cc89/)). You can now select which endpoint you want to connect to, this could be Arbitrum One, or it could be Rinkeby testnet. +Infura is a node service provider that provides access to Arbitrum One (Mainnet) and Rinkeby testnet. To start interacting with either of these networks, you need to set up an [Infura account](https://infura.io/register) and create a new key. For detailed steps, check out [Infura's documentation](https://docs.infura.io/infura/networks/arbitrum). -Infura provides access to Arbitrum up to 100k requests per day for free. Once Arbitrum leaves beta in Infura, it will be charged as an addon of $200 / month. +You can now select which endpoint you want to connect to, this could be Arbitrum One, or it could be Rinkeby testnet. + +Infura provides access to Arbitrum across all their subscription plans (Core Free, Developer, Team & Growth). See [pricing & daily request rate limits](https://infura.io/pricing) ## [QuickNode](https://www.quicknode.com/) diff --git a/docs/Running_Nitro_Node.md b/docs/Running_Nitro_Node.md index dcb8bb1573..d912c0b3bc 100644 --- a/docs/Running_Nitro_Node.md +++ b/docs/Running_Nitro_Node.md @@ -8,7 +8,7 @@ Note: If you’re interested in accessing an Arbitrum chain, but you don’t wan ### Required Artifacts -- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72` +- Latest Docker Image: `offchainlabs/nitro-node:v2.0.0-beta.9-f8a2ed7` - Only if using Rinkeby: Rinkeby Nitro Seed Database Snapshot - Use the parameter `--init.url="https://snapshot.arbitrum.io/rinkeby/nitro.tar"` on first startup to initialize Nitro database @@ -36,7 +36,7 @@ Note: If you’re interested in accessing an Arbitrum chain, but you don’t wan - Note that is important that `/some/local/dir/arbitrum` already exists, otherwise the directory might be created with `root` as owner, and the docker container won't be able to write to it. ``` - docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-node:8545 --l2.chain-id= --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* + docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.9-f8a2ed7 --l1.url https://l1-node:8545 --l2.chain-id= --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* ``` - Note that if you are running L1 node on localhost, you may need to add `--network host` right after `docker run` to use docker host-based networking @@ -83,9 +83,9 @@ Note: If you’re interested in accessing an Arbitrum chain, but you don’t wan The arb-relay is in the same docker image. - Here is an example of how to run nitro-relay for Rinkeby: ``` - docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --node.feed.output.addr=0.0.0.0 --node.feed.input.url wss://rinkeby.arbitrum.io/feed + docker run --rm -it -p 0.0.0.0:9642:9642 --entrypoint relay offchainlabs/nitro-node:v2.0.0-beta.9-f8a2ed7 --node.feed.output.addr=0.0.0.0 --node.feed.input.url wss://rinkeby.arbitrum.io/feed ``` - Here is an example of how to run nitro-node for Rinkeby with custom relay: ``` - docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.8-5ed2c72 --l1.url https://l1-rinkeby-node:8545 --l2.chain-id=421611 --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* --node.feed.input.url ws://local-relay-address:9642 + docker run --rm -it -v /some/local/dir/arbitrum:/home/user/.arbitrum -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/nitro-node:v2.0.0-beta.9-f8a2ed7 --l1.url https://l1-rinkeby-node:8545 --l2.chain-id=421611 --http.api=net,web3,eth,debug --http.corsdomain=* --http.addr=0.0.0.0 --http.vhosts=* --node.feed.input.url ws://local-relay-address:9642 ``` From 8f9c38886c3785fb87f8bb26182dc35c80a4d2bb Mon Sep 17 00:00:00 2001 From: Daniel Goldman Date: Thu, 11 Aug 2022 10:42:37 -0400 Subject: [PATCH 115/128] fix address aliasing description (#2425) * fix address aliasing description * Update docs/L1_L2_Messages.md Co-authored-by: gzeon <95478735+gzeoneth@users.noreply.github.com> Co-authored-by: gzeon <95478735+gzeoneth@users.noreply.github.com> --- docs/L1_L2_Messages.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/L1_L2_Messages.md b/docs/L1_L2_Messages.md index c1cde8e19f..bf7f4c4420 100644 --- a/docs/L1_L2_Messages.md +++ b/docs/L1_L2_Messages.md @@ -109,13 +109,13 @@ Beyond the superfluous ticket creation, this is suboptimal in that the base subm ### Address Aliasing -When a retryable ticket is executed on L2, the sender's address —i.e., that which is returned by `msg.sender` — will _not_ simply be the address of the contract on L1 that initiated the message; rather it will be the contract's "L2 Alias." A contract address's L2 alias is its value increased by the hex value `0x1111000000000000000000000000000000001111`: +All messages that are not initiated on L1 by the Sequencer (which includes all retryable tickets) are submitted via the [Delayed Inbox](Censorship_resistance). When unsigned messages in the Delayed Inbox are executed on L2, the sender's address —i.e., that which is returned by `msg.sender` — will _not_ simply be the L1 address that sent the message; rather it will be the address's "L2 Alias." An address's L2 alias is its value increased by the hex value `0x1111000000000000000000000000000000001111`: ``` L2_Alias = L1_Contract_ Address + 0x1111000000000000000000000000000000001111 ``` -The Arbitrum protocol's usage of L2 Aliases for L1-to-L2 messages prevents cross-chain exploits that would otherwise be possible if we simply reused L1 contact addresses. +The Arbitrum protocol's usage of L2 Aliases for L1-to-L2 messages prevents cross-chain exploits that would otherwise be possible if we simply reused the same L1 addresses as the L2 sender. If for some reason you need to compute the L1 address from an L2 alias on chain, you can use our `AddressAliasHelper` library: From 8fd5a98608822b509b9907b231cfdd0350a3780c Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Mon, 15 Aug 2022 09:51:01 -0700 Subject: [PATCH 116/128] Update documentation for quicknode --- docs/Node_Providers.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/Node_Providers.md b/docs/Node_Providers.md index 14c526eb38..0b3467d778 100644 --- a/docs/Node_Providers.md +++ b/docs/Node_Providers.md @@ -24,9 +24,11 @@ Infura provides access to Arbitrum across all their subscription plans (Core Fre ## [QuickNode](https://www.quicknode.com/) -QuickNode supports both Arbitrum One (Mainnet) and Rinkeby testnet and allows users to interact with these chains. For a full guide of how to set up an Arbitrum node on QuickNode, see the [QuickNode's Arbitrum RPC documentation](https://www.quicknode.com/docs/arbitrum). +QuickNode supports Arbitrum One Mainnet, Goerli and Rinkeby testnet, as well as Arbitrum Nova Mainnet, and allows users to interact with these chains. -Quicknode provides 300k Arbitrum requests per month at a rate of $9 / month. +For a full guide of how to use an Arbitrum node on QuickNode, see the [QuickNode's Arbitrum](https://www.quicknode.com/docs/arbitrum) and [Quicknode's Arbitrum Nova documentation](https://www.quicknode.com/docs/arbitrum-nova). + +[Quicknode](https://www.quicknode.com/accounts/new-signup) provides 10 million API credits per month for Arbitrum for free. ## [Moralis](https://moralis.io/) From d75568fa70919364cf56463038c57c96d1ca8cda Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Thu, 18 Aug 2022 00:07:03 +0800 Subject: [PATCH 117/128] docs: update latest arb-node docker tag --- docs/Running_Node.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/Running_Node.md b/docs/Running_Node.md index 630ba0148f..9385aa8296 100644 --- a/docs/Running_Node.md +++ b/docs/Running_Node.md @@ -10,7 +10,7 @@ Note: If you’re interested in accessing the Arbitrum network but you don’t w ### Required Artifacts -- Latest Docker Image: offchainlabs/arb-node:v1.4.0-f4bbe91 +- Latest Docker Image: offchainlabs/arb-node:v1.4.1-h9180527 ### Required parameter @@ -28,11 +28,11 @@ Note: If you’re interested in accessing the Arbitrum network but you don’t w - When running docker image, an external volume should be mounted to persist the database across restarts. The mount point should be `/home/user/.arbitrum/mainnet` or `/home/user/.arbitrum/rinkeby` depending on what chain you are connecting to. - Here is an example of how to run arb-node for mainnet: ``` - docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.0-f4bbe91 --l1.url https://l1-node:8545 + docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.1-h9180527 --l1.url https://l1-node:8545 ``` - Here is an example of how to run arb-node for rinkeby, disabling feed to reduce log error messages (only good for archive requests on pre-Nitro blocks, so probably want to enable archive as well): ``` - docker run --rm -it -v /some/local/dir/arbitrum-rinkeby/:/home/user/.arbitrum/rinkeby -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.0-f4bbe91 --l1.url https://l1-rinkeby-node:8545 --feed.input.url="" + docker run --rm -it -v /some/local/dir/arbitrum-rinkeby/:/home/user/.arbitrum/rinkeby -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.1-h9180527 --l1.url https://l1-rinkeby-node:8545 --feed.input.url="" ``` ### Note on permissions @@ -80,9 +80,9 @@ Note: If you’re interested in accessing the Arbitrum network but you don’t w - Note that rinkeby testnet has been upgraded to Nitro, so rinkeby feed messages cannot be parsed by the classic node and classic relay is not required. - Here is an example of how to run arb-relay for mainnet: ``` - docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:9642:9642 --entrypoint /home/user/go/bin/arb-relay offchainlabs/arb-node:v1.4.0-f4bbe91 --feed.input.url wss://arb1.arbitrum.io/feed + docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:9642:9642 --entrypoint /home/user/go/bin/arb-relay offchainlabs/arb-node:v1.4.1-h9180527 --feed.input.url wss://arb1.arbitrum.io/feed ``` - Here is an example of how to run arb-node for mainnet with custom relay: ``` - docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.0-f4bbe91 --l1.url https://l1-node:8545 --feed.input.url ws://local-relay-address:9642 + docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.1-h9180527 --l1.url https://l1-node:8545 --feed.input.url ws://local-relay-address:9642 ``` From 74bcde8eb9a9117907034ab6d9c2e9c0f6fa3e7e Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Fri, 19 Aug 2022 09:06:17 -0700 Subject: [PATCH 118/128] DIsable feed if empty URL Setting `--feed.input.url=""` to an empty string on command line creates an empty list. If set using environment variable, creates a list with a single entry of an empty string, so treat that as disabling feed as well. --- packages/arb-rpc-node/cmd/arb-node/arb-node.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/arb-rpc-node/cmd/arb-node/arb-node.go b/packages/arb-rpc-node/cmd/arb-node/arb-node.go index 1508bad9e3..354b0ef06b 100644 --- a/packages/arb-rpc-node/cmd/arb-node/arb-node.go +++ b/packages/arb-rpc-node/cmd/arb-node/arb-node.go @@ -288,7 +288,7 @@ func startup() error { var sequencerFeed chan broadcaster.BroadcastFeedMessage broadcastClientErrChan := make(chan error) - if len(config.Feed.Input.URLs) == 0 { + if len(config.Feed.Input.URLs) == 0 || len(config.Feed.Input.URLs[0]) == 0 { logger.Warn().Msg("Missing --feed.input.url so not subscribing to feed") } else if config.Node.Type() == configuration.ValidatorNodeType { logger.Info().Msg("Ignoring feed because running as validator") From 921771f91acbe5da885088fa33d119db3956100e Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Sat, 20 Aug 2022 20:31:17 -0700 Subject: [PATCH 119/128] Ignore nitro messages in feed --- packages/arb-node-core/monitor/inboxReader.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/arb-node-core/monitor/inboxReader.go b/packages/arb-node-core/monitor/inboxReader.go index a6a9e6ed7d..732c111466 100644 --- a/packages/arb-node-core/monitor/inboxReader.go +++ b/packages/arb-node-core/monitor/inboxReader.go @@ -157,6 +157,11 @@ func (ir *InboxReader) GetSequencerInboxWatcher() *ethbridge.SequencerInboxWatch } func (ir *InboxReader) isValidSignature(ctx context.Context, message broadcaster.BroadcastFeedMessage) bool { + if message.FeedItem.BatchItem.SequencerMessage == nil { + // Nitro feed message, ignore + return false + } + accHash := hashing.SoliditySHA3WithPrefix(hashing.Bytes32(message.FeedItem.BatchItem.Accumulator)) sigPublicKey, err := crypto.SigToPub(accHash.Bytes(), message.Signature) if err != nil { From 348535435aeff4d8634ae50ca18e5cf9c7cbcfa6 Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Sat, 20 Aug 2022 21:23:27 -0700 Subject: [PATCH 120/128] Use accumulator instead of message as feed version test --- packages/arb-node-core/monitor/inboxReader.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/arb-node-core/monitor/inboxReader.go b/packages/arb-node-core/monitor/inboxReader.go index 732c111466..3b58265b8c 100644 --- a/packages/arb-node-core/monitor/inboxReader.go +++ b/packages/arb-node-core/monitor/inboxReader.go @@ -157,7 +157,7 @@ func (ir *InboxReader) GetSequencerInboxWatcher() *ethbridge.SequencerInboxWatch } func (ir *InboxReader) isValidSignature(ctx context.Context, message broadcaster.BroadcastFeedMessage) bool { - if message.FeedItem.BatchItem.SequencerMessage == nil { + if message.FeedItem.BatchItem.Accumulator.Equals(common.Hash{}) { // Nitro feed message, ignore return false } From f06605a39fdfaea4312743ae1b2d7cb110c8dd87 Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Sat, 20 Aug 2022 22:06:46 -0700 Subject: [PATCH 121/128] Update documentation for 1.4.3 --- docs/Running_Node.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/Running_Node.md b/docs/Running_Node.md index 9385aa8296..ad51e9a18b 100644 --- a/docs/Running_Node.md +++ b/docs/Running_Node.md @@ -10,7 +10,7 @@ Note: If you’re interested in accessing the Arbitrum network but you don’t w ### Required Artifacts -- Latest Docker Image: offchainlabs/arb-node:v1.4.1-h9180527 +- Latest Docker Image: offchainlabs/arb-node:v1.4.3-3485354 ### Required parameter @@ -28,11 +28,11 @@ Note: If you’re interested in accessing the Arbitrum network but you don’t w - When running docker image, an external volume should be mounted to persist the database across restarts. The mount point should be `/home/user/.arbitrum/mainnet` or `/home/user/.arbitrum/rinkeby` depending on what chain you are connecting to. - Here is an example of how to run arb-node for mainnet: ``` - docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.1-h9180527 --l1.url https://l1-node:8545 + docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.3-3485354 --l1.url https://l1-node:8545 ``` -- Here is an example of how to run arb-node for rinkeby, disabling feed to reduce log error messages (only good for archive requests on pre-Nitro blocks, so probably want to enable archive as well): +- Here is an example of how to run arb-node for rinkeby (only good for archive requests on pre-Nitro blocks, so probably want to enable archive as well): ``` - docker run --rm -it -v /some/local/dir/arbitrum-rinkeby/:/home/user/.arbitrum/rinkeby -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.1-h9180527 --l1.url https://l1-rinkeby-node:8545 --feed.input.url="" + docker run --rm -it -v /some/local/dir/arbitrum-rinkeby/:/home/user/.arbitrum/rinkeby -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.3-3485354 --l1.url https://l1-rinkeby-node:8545 ``` ### Note on permissions @@ -80,9 +80,9 @@ Note: If you’re interested in accessing the Arbitrum network but you don’t w - Note that rinkeby testnet has been upgraded to Nitro, so rinkeby feed messages cannot be parsed by the classic node and classic relay is not required. - Here is an example of how to run arb-relay for mainnet: ``` - docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:9642:9642 --entrypoint /home/user/go/bin/arb-relay offchainlabs/arb-node:v1.4.1-h9180527 --feed.input.url wss://arb1.arbitrum.io/feed + docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:9642:9642 --entrypoint /home/user/go/bin/arb-relay offchainlabs/arb-node:v1.4.3-3485354 --feed.input.url wss://arb1.arbitrum.io/feed ``` - Here is an example of how to run arb-node for mainnet with custom relay: ``` - docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.1-h9180527 --l1.url https://l1-node:8545 --feed.input.url ws://local-relay-address:9642 + docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.3-3485354 --l1.url https://l1-node:8545 --feed.input.url ws://local-relay-address:9642 ``` From e36a06d0184de50a3e5614a9c2e9aa1f0c6ffa67 Mon Sep 17 00:00:00 2001 From: gzeon <95478735+gzeoneth@users.noreply.github.com> Date: Tue, 23 Aug 2022 00:38:14 +0800 Subject: [PATCH 122/128] docs: one dashboard to rule them all (#2475) --- docs/Public_Chains.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Public_Chains.md b/docs/Public_Chains.md index a2f70957ef..1c800829aa 100644 --- a/docs/Public_Chains.md +++ b/docs/Public_Chains.md @@ -10,9 +10,9 @@ The following is a comprehensive list of all of the currently live Arbitrum chai | Name | RPC Url(s) | ID | Native Currency | Explorer(s) | Underlying L1 | Current Tech Stack | Sequencer Feed | Nitro Seed Database URLs | Retryable Dashboard | | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------ | --------------- | ----------------------------------------------------------------------- | ------------- | ------------------ | -------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------- | | Arbitrum One | `https://arb1.arbitrum.io/rpc`
`https://arbitrum-mainnet.infura.io/v3/YOUR-PROJECT-ID`
`https://arb-mainnet.g.alchemy.com/v2/-KEY` | 42161 | ETH | `https://arbiscan.io/`
`https://explorer.arbitrum.io/` | Ethereum | Classic Rollup | `wss://arb1.arbitrum.io/feed` | Not Available Yet | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | -| Arbitrum Nova | `https://nova.arbitrum.io/rpc` | 42170 | ETH | `https://nova-explorer.arbitrum.io/` | Ethereum | Nitro AnyTrust | `wss://nova.arbitrum.io/feed` | N/A | [retryable-tx-panel-nitro.arbitrum.io](https://retryable-tx-panel-nitro.arbitrum.io/) | -| RinkArby^ | `https://rinkeby.arbitrum.io/rpc` | 421611 | RinkebyETH | `https://testnet.arbiscan.io`
`https://rinkeby-explorer.arbitrum.io` | Rinkeby | Nitro Rollup | `wss://rinkeby.arbitrum.io/feed` | `snapshot.arbitrum.io/rinkeby/nitro.tar` | [retryable-tx-panel-nitro.arbitrum.io](https://retryable-tx-panel-nitro.arbitrum.io/) | -| Nitro Goerli Rollup Testnet^ | `https://goerli-rollup.arbitrum.io/rpc` | 421613 | GoerliETH | `https://goerli-rollup-explorer.arbitrum.io` | Goerli | Nitro Rollup | `wss://goerli-rollup.arbitrum.io/feed` | N/A | [retryable-tx-panel-nitro.arbitrum.io](https://retryable-tx-panel-nitro.arbitrum.io/) | +| Arbitrum Nova | `https://nova.arbitrum.io/rpc` | 42170 | ETH | `https://nova-explorer.arbitrum.io/` | Ethereum | Nitro AnyTrust | `wss://nova.arbitrum.io/feed` | N/A | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | +| RinkArby^ | `https://rinkeby.arbitrum.io/rpc` | 421611 | RinkebyETH | `https://testnet.arbiscan.io`
`https://rinkeby-explorer.arbitrum.io` | Rinkeby | Nitro Rollup | `wss://rinkeby.arbitrum.io/feed` | `snapshot.arbitrum.io/rinkeby/nitro.tar` | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | +| Nitro Goerli Rollup Testnet^ | `https://goerli-rollup.arbitrum.io/rpc` | 421613 | GoerliETH | `https://goerli-rollup-explorer.arbitrum.io` | Goerli | Nitro Rollup | `wss://goerli-rollup.arbitrum.io/feed` | N/A | [retryable-dashboard.arbitrum.io](https://retryable-dashboard.arbitrum.io/) | ^ Testnet From fe33b257d7f0cff270965bbea9723601841b72e0 Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Tue, 23 Aug 2022 08:29:57 -0700 Subject: [PATCH 123/128] Fix default feed URLs in doc --- docs/Running_Node.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Running_Node.md b/docs/Running_Node.md index ad51e9a18b..fa68fafa1f 100644 --- a/docs/Running_Node.md +++ b/docs/Running_Node.md @@ -50,7 +50,7 @@ Note: If you’re interested in accessing the Arbitrum network but you don’t w ### Optional parameters - `--feed.input.url=` - - Will default to `https://arb1.arbitrum.io/feed` or `https://rinkeby.arbitrum.io/feed` depending on chain ID reported by ethereum node provided. If running more than a couple nodes, you will want to provide one feed relay per datacenter, see further instructions below. + - Will default to `wss://arb1.arbitrum.io/feed` or `wss://rinkeby.arbitrum.io/feed` depending on chain ID reported by ethereum node provided. If running more than a couple nodes, you will want to provide one feed relay per datacenter, see further instructions below. - `--node.forwarder.target=` - Will default to `https://arb1.arbitrum.io/rpc` when chain ID reported by ethereum node is 1 (mainnet), but needs to be manually set to empty string (`""`) for Rinkeby testnet. - `--core.cache.timed-expire` From b8bd9bf28db88dec29c0913549fec8a5b517ea2f Mon Sep 17 00:00:00 2001 From: Rachel Franks Date: Mon, 25 Jul 2022 14:37:57 -0500 Subject: [PATCH 124/128] arbos pin & import fstream --- packages/arb-avm-cpp/app/main.cpp | 1 + packages/arb-avm-cpp/tests/arbcore.cpp | 2 ++ packages/arb-avm-cpp/tests/arbos.cpp | 2 ++ packages/arb-os | 2 +- 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/arb-avm-cpp/app/main.cpp b/packages/arb-avm-cpp/app/main.cpp index 5ae535b54e..0c0ed99b2a 100644 --- a/packages/arb-avm-cpp/app/main.cpp +++ b/packages/arb-avm-cpp/app/main.cpp @@ -21,6 +21,7 @@ #include +#include #include #include diff --git a/packages/arb-avm-cpp/tests/arbcore.cpp b/packages/arb-avm-cpp/tests/arbcore.cpp index 3d80eedb70..bdcec49756 100644 --- a/packages/arb-avm-cpp/tests/arbcore.cpp +++ b/packages/arb-avm-cpp/tests/arbcore.cpp @@ -17,6 +17,8 @@ #include "config.hpp" #include "helper.hpp" +#include + #include #include diff --git a/packages/arb-avm-cpp/tests/arbos.cpp b/packages/arb-avm-cpp/tests/arbos.cpp index 9a80409811..c504723b3f 100644 --- a/packages/arb-avm-cpp/tests/arbos.cpp +++ b/packages/arb-avm-cpp/tests/arbos.cpp @@ -17,6 +17,8 @@ #include "config.hpp" #include "helper.hpp" +#include + #include #include #include diff --git a/packages/arb-os b/packages/arb-os index 6d00b0b018..124792a3da 160000 --- a/packages/arb-os +++ b/packages/arb-os @@ -1 +1 @@ -Subproject commit 6d00b0b018af6c5e2e408cac52f0409f6c6a74f6 +Subproject commit 124792a3dabf146fe65a98a071ea96a85d874ca7 From 1af64449425ff98f07376ae3f10786e454fc6cd5 Mon Sep 17 00:00:00 2001 From: Rachel Franks Date: Wed, 27 Jul 2022 09:55:06 -0500 Subject: [PATCH 125/128] update arbos --- packages/arb-bridge-eth/test/challenges/TestChallengeToOSP.json | 2 +- .../test/challenges/TestChallengeToOSPWithMessage.json | 2 +- .../test/challenges/TestChallengeToUnreachable.json | 2 +- .../test/challenges/TestChallengeToUnreachableSmall.json | 2 +- packages/arb-os | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/arb-bridge-eth/test/challenges/TestChallengeToOSP.json b/packages/arb-bridge-eth/test/challenges/TestChallengeToOSP.json index f28c2c17b3..1dfe59c40e 100755 --- a/packages/arb-bridge-eth/test/challenges/TestChallengeToOSP.json +++ b/packages/arb-bridge-eth/test/challenges/TestChallengeToOSP.json @@ -1 +1 @@ -{"ChallengedAssertion":{"beforeState":{"machineHash":[49,151,249,85,187,214,113,213,7,78,166,222,46,43,33,114,121,139,86,251,58,192,161,221,185,161,63,68,106,239,20,183],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":0,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"afterState":{"machineHash":[222,173,190,239,253,235,134,236,102,205,100,255,24,183,234,224,117,129,243,79,61,90,215,58,19,135,241,64,163,129,200,99],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":802,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},"Messages":[{"Kind":11,"Sender":"0x9be6b9f6b0ec4ad126c429961f3951773f7381b7","InboxSeqNum":0,"GasPrice":589250589,"Data":"0xece83efd40ff2c9c69c406a49cbd4e7019fc5807db782ea78e3ee698923a412c000000000000000000000000000000000000000000000000000000000000000344edde536e3f4df60ef7ec43bc928f7438fa9804cb64ef42045ab4781bbc0bb300000000000000000000000000000000000000000000000000000000000000001567aa7175e04611d194275bb504cc64e920959dd01df9d86ab047367aa4c53400000000000000000000000035248943dcb4b8e5dbbb67d1f7d3ab1bc36ce9a8","ChainTime":{"BlockNum":4,"Timestamp":40}}],"Moves":[{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":0,"Length":802},"Cuts":[[170,112,49,200,57,127,167,216,108,147,112,86,218,215,35,63,98,222,19,96,66,77,239,180,210,27,246,172,104,174,117,110],[169,227,160,101,249,28,255,176,200,149,85,49,218,87,53,213,90,81,81,208,153,92,159,146,198,205,112,3,229,76,173,216]]},"StartState":{"machineHash":[49,151,249,85,187,214,113,213,7,78,166,222,46,43,33,114,121,139,86,251,58,192,161,221,185,161,63,68,106,239,20,183],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":0,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"SegmentToChallenge":0,"InconsistentSegment":{"Start":0,"Length":802},"SubCuts":[[170,112,49,200,57,127,167,216,108,147,112,86,218,215,35,63,98,222,19,96,66,77,239,180,210,27,246,172,104,174,117,110],[13,191,247,166,102,132,66,198,4,179,30,55,76,158,75,158,220,222,130,84,9,80,251,98,181,78,234,206,36,107,198,48],[74,67,210,242,80,75,164,167,26,163,244,212,191,33,229,40,181,154,157,122,131,82,45,169,148,155,87,165,51,137,5,130],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[122,25,43,33,123,16,246,154,55,20,168,249,104,225,109,177,51,132,45,78,139,63,244,173,125,48,113,182,123,41,97,175],[165,179,154,135,84,214,207,181,229,141,210,111,87,78,155,96,211,121,20,4,254,28,57,221,49,214,192,245,130,227,188,247],[98,204,59,77,2,148,104,145,53,244,1,193,159,155,188,205,238,106,60,209,170,83,24,14,32,254,239,96,182,167,243,219],[46,214,45,33,154,34,213,209,188,192,135,9,90,166,37,141,110,50,241,124,125,142,89,194,129,184,25,82,25,99,199,210],[46,214,45,33,154,34,213,209,188,192,135,9,90,166,37,141,110,50,241,124,125,142,89,194,129,184,25,82,25,99,199,210],[177,60,218,30,220,247,175,116,203,200,126,100,46,210,52,24,119,123,88,22,74,33,62,14,53,218,181,21,95,162,43,230],[90,193,208,238,94,70,181,240,206,198,205,230,160,55,144,182,237,22,64,228,39,55,228,117,163,82,197,38,22,182,199,150],[20,139,160,9,216,238,212,202,29,198,231,99,172,139,237,119,79,205,65,162,79,203,5,245,32,9,88,52,217,225,251,212],[180,3,67,144,222,46,111,194,77,64,68,163,156,159,38,147,10,75,51,171,249,199,207,174,12,18,24,19,45,226,187,250],[232,16,36,101,111,145,29,46,107,172,94,33,202,192,94,117,91,250,124,165,25,50,18,30,188,145,186,80,31,136,40,144],[232,16,36,101,111,145,29,46,107,172,94,33,202,192,94,117,91,250,124,165,25,50,18,30,188,145,186,80,31,136,40,144],[140,173,10,223,84,138,221,20,12,29,194,201,80,122,15,234,67,13,221,204,80,147,46,164,53,134,139,166,228,127,18,169],[92,150,121,89,180,131,220,169,35,189,28,96,1,125,87,118,174,166,116,36,244,39,100,2,29,149,131,159,84,246,188,223],[73,138,3,225,237,115,252,154,40,60,97,246,18,122,132,141,107,33,217,79,112,248,223,206,5,134,152,151,162,34,107,12],[110,43,116,200,11,53,211,152,147,73,20,183,204,4,60,249,37,141,217,77,138,210,77,183,110,165,80,222,153,231,207,173],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[94,10,151,239,155,159,15,150,121,16,28,235,127,99,181,154,61,13,140,77,189,255,3,47,129,68,199,89,45,29,113,148],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[224,136,248,82,40,143,193,214,58,124,17,214,76,94,51,164,217,132,50,107,69,165,93,197,227,83,85,72,209,170,152,126],[82,124,145,73,66,133,253,49,14,28,194,195,164,121,9,227,225,131,63,153,179,18,34,43,70,27,180,5,170,117,65,240],[235,189,14,194,253,28,190,51,176,122,219,4,10,4,160,98,86,120,145,41,61,88,123,67,247,129,125,66,39,118,156,96],[235,189,14,194,253,28,190,51,176,122,219,4,10,4,160,98,86,120,145,41,61,88,123,67,247,129,125,66,39,118,156,96],[128,135,85,86,171,207,28,140,230,64,141,2,199,167,9,216,9,136,203,72,85,87,3,16,84,44,89,142,184,206,88,189],[53,65,198,2,171,27,112,206,11,190,92,133,100,221,110,209,230,112,100,215,80,130,248,108,147,45,186,200,60,224,122,65],[53,65,198,2,171,27,112,206,11,190,92,133,100,221,110,209,230,112,100,215,80,130,248,108,147,45,186,200,60,224,122,65],[195,190,102,95,192,131,35,88,71,231,177,218,82,173,18,115,91,227,151,128,194,1,109,201,224,40,178,125,255,63,18,5],[5,6,126,70,121,94,1,100,147,126,57,83,235,160,64,48,249,17,243,189,61,56,246,4,150,95,70,196,118,50,33,51],[204,144,38,79,120,49,131,91,83,117,90,105,112,42,75,220,46,113,234,62,29,52,27,64,37,252,217,223,202,139,100,73],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[78,144,217,42,56,193,157,151,245,63,7,187,105,212,179,220,170,181,65,250,41,68,18,134,100,154,214,191,165,103,92,119],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[227,106,35,27,164,44,81,59,155,69,16,96,237,42,76,45,234,109,32,242,76,135,192,188,140,83,96,219,160,235,189,57],[63,241,23,128,110,251,64,246,172,237,103,50,97,247,155,158,238,74,25,82,90,91,56,129,133,59,141,15,135,249,20,2],[93,131,154,55,35,216,147,57,140,149,190,150,105,178,99,191,249,212,235,207,65,223,6,191,208,179,188,172,77,98,51,210],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[143,162,100,182,153,242,161,237,255,223,162,17,223,39,161,211,156,89,156,4,102,82,98,215,248,101,46,109,7,83,153,42],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[225,234,193,228,9,69,195,80,97,151,22,234,15,214,37,242,202,90,60,45,127,111,95,168,31,255,165,169,92,194,172,222],[228,194,1,255,228,151,229,186,150,116,113,165,69,156,54,11,197,107,130,11,246,169,185,97,158,201,22,225,244,218,146,194],[199,121,187,100,248,95,195,182,10,115,160,106,116,46,78,54,150,16,32,7,122,195,65,69,189,157,196,197,87,237,88,160],[199,121,187,100,248,95,195,182,10,115,160,106,116,46,78,54,150,16,32,7,122,195,65,69,189,157,196,197,87,237,88,160],[106,195,236,28,247,218,137,230,132,44,84,31,234,48,213,72,116,220,189,237,108,175,238,86,41,56,115,244,24,20,234,102],[53,11,49,66,183,55,46,75,198,111,243,179,120,19,178,147,133,151,250,119,31,233,209,15,196,255,60,198,44,69,27,222],[53,11,49,66,183,55,46,75,198,111,243,179,120,19,178,147,133,151,250,119,31,233,209,15,196,255,60,198,44,69,27,222],[58,184,9,139,187,195,187,177,148,255,165,132,167,207,249,197,206,5,254,240,210,254,145,28,19,132,200,102,78,206,151,193],[104,10,123,133,92,65,97,26,132,232,215,240,33,244,57,107,99,4,126,9,226,162,151,146,240,214,92,152,37,93,22,211],[212,17,37,118,14,205,223,47,226,44,176,8,222,83,73,113,161,184,240,58,41,252,23,248,79,133,10,170,142,217,251,195],[49,182,56,126,222,209,252,9,192,239,109,232,152,211,175,67,189,16,89,181,48,200,72,77,203,89,6,127,211,107,216,254],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[180,212,185,232,88,190,19,82,229,38,28,204,186,121,85,133,217,19,171,135,178,33,128,183,40,80,210,166,22,149,218,121],[89,20,215,144,126,193,210,118,88,206,146,54,81,78,122,239,41,169,53,26,239,242,240,206,3,82,242,200,109,207,159,179],[105,249,210,23,10,96,152,42,0,196,42,98,250,116,207,47,92,228,26,219,79,200,87,96,143,100,110,194,62,68,55,105],[237,33,27,161,18,24,19,195,149,72,85,224,246,50,43,253,123,48,105,55,19,79,211,213,93,59,238,8,135,104,200,133],[237,33,27,161,18,24,19,195,149,72,85,224,246,50,43,253,123,48,105,55,19,79,211,213,93,59,238,8,135,104,200,133],[235,157,13,94,66,231,40,180,33,72,233,229,42,27,216,0,168,24,236,157,108,21,78,29,85,39,27,138,114,43,221,131],[249,249,13,81,27,254,196,182,149,171,223,95,74,161,31,69,159,36,124,109,160,72,142,154,210,209,111,241,59,242,92,125],[249,249,13,81,27,254,196,182,149,171,223,95,74,161,31,69,159,36,124,109,160,72,142,154,210,209,111,241,59,242,92,125],[175,250,29,195,5,135,127,221,154,50,73,155,59,190,241,112,181,59,60,193,227,238,0,223,253,139,212,175,176,78,72,200],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[221,173,240,172,88,62,46,97,215,52,39,213,94,127,56,222,243,226,212,174,39,153,189,241,121,221,88,182,226,25,245,40],[221,173,240,172,88,62,46,97,215,52,39,213,94,127,56,222,243,226,212,174,39,153,189,241,121,221,88,182,226,25,245,40],[199,84,174,235,41,37,58,38,201,238,75,42,167,216,244,210,17,62,26,63,55,112,229,37,147,192,65,196,221,39,199,30],[102,240,192,21,50,36,223,101,150,204,111,16,124,150,11,29,82,71,57,11,32,176,241,135,140,239,173,249,72,207,106,102],[241,151,124,116,162,211,218,74,191,196,135,172,170,192,61,86,91,88,214,168,146,95,251,78,135,127,2,108,137,169,214,180],[241,151,124,116,162,211,218,74,191,196,135,172,170,192,61,86,91,88,214,168,146,95,251,78,135,127,2,108,137,169,214,180],[170,179,96,225,222,100,252,188,131,54,182,159,93,165,108,239,25,178,213,27,167,129,170,172,109,84,215,208,98,232,186,213],[170,179,96,225,222,100,252,188,131,54,182,159,93,165,108,239,25,178,213,27,167,129,170,172,109,84,215,208,98,232,186,213],[134,229,120,185,170,197,241,230,221,12,240,169,245,74,154,222,38,10,145,237,114,7,59,179,45,182,70,134,1,185,254,35],[52,33,53,88,151,79,79,174,108,114,66,78,175,113,224,149,61,132,202,243,216,92,100,240,30,63,13,103,87,109,221,84],[34,241,158,222,158,73,230,139,56,148,240,209,212,82,40,36,60,243,38,99,99,170,61,162,110,4,215,241,133,186,81,151],[34,241,158,222,158,73,230,139,56,148,240,209,212,82,40,36,60,243,38,99,99,170,61,162,110,4,215,241,133,186,81,151],[187,144,26,168,131,102,186,25,215,236,35,165,130,88,217,31,89,19,94,110,148,240,243,209,41,195,137,200,252,215,50,247],[155,138,20,186,20,163,100,88,35,2,210,108,120,150,215,155,93,15,113,154,201,166,222,44,109,27,138,64,192,148,98,131],[49,104,251,182,8,225,182,187,230,77,172,173,96,250,127,5,62,99,94,83,101,3,69,19,249,220,50,91,251,48,97,56],[127,67,151,255,216,169,142,98,58,225,40,151,78,41,97,239,255,119,49,117,177,122,209,232,227,58,68,76,30,166,178,45],[46,83,18,243,138,78,127,223,195,59,36,60,235,235,56,162,218,240,20,181,29,255,164,190,3,242,186,121,137,83,24,31],[46,83,18,243,138,78,127,223,195,59,36,60,235,235,56,162,218,240,20,181,29,255,164,190,3,242,186,121,137,83,24,31],[224,54,1,150,0,43,38,243,167,194,156,167,112,125,111,40,11,10,234,208,212,200,134,230,188,221,59,102,168,105,202,152],[224,54,1,150,0,43,38,243,167,194,156,167,112,125,111,40,11,10,234,208,212,200,134,230,188,221,59,102,168,105,202,152],[44,177,99,116,196,18,75,249,192,215,93,144,195,204,61,51,199,255,37,78,8,162,184,84,124,61,9,192,96,255,28,238],[3,163,124,232,10,172,23,209,40,88,227,126,108,44,207,78,46,142,18,221,84,142,25,109,161,236,234,133,225,38,21,1],[3,163,124,232,10,172,23,209,40,88,227,126,108,44,207,78,46,142,18,221,84,142,25,109,161,236,234,133,225,38,21,1],[122,14,37,141,187,172,169,240,52,188,99,75,32,122,189,51,145,103,40,231,55,116,93,247,185,232,169,96,18,243,230,187],[122,14,37,141,187,172,169,240,52,188,99,75,32,122,189,51,145,103,40,231,55,116,93,247,185,232,169,96,18,243,230,187],[57,22,60,220,12,209,65,27,35,79,8,120,208,177,162,232,57,91,178,141,165,243,129,174,66,39,74,39,207,247,4,72],[99,50,53,114,191,139,137,114,28,250,136,249,58,155,105,45,246,151,32,59,16,182,215,40,240,107,172,251,163,121,137,143],[99,50,53,114,191,139,137,114,28,250,136,249,58,155,105,45,246,151,32,59,16,182,215,40,240,107,172,251,163,121,137,143],[88,111,6,216,78,194,215,128,56,140,190,201,135,126,242,41,123,92,75,79,87,15,167,101,174,46,143,138,63,171,5,240],[88,111,6,216,78,194,215,128,56,140,190,201,135,126,242,41,123,92,75,79,87,15,167,101,174,46,143,138,63,171,5,240],[97,225,235,158,126,250,187,237,44,105,70,111,156,243,72,80,121,21,67,241,190,171,201,160,253,204,93,35,174,2,82,85],[5,198,185,96,157,183,255,241,118,43,89,211,52,72,173,173,227,241,79,129,234,226,111,6,119,2,114,8,33,199,38,106],[5,198,185,96,157,183,255,241,118,43,89,211,52,72,173,173,227,241,79,129,234,226,111,6,119,2,114,8,33,199,38,106],[26,90,57,98,142,135,65,235,180,30,108,98,60,187,77,165,212,17,61,132,16,177,17,227,23,153,205,133,107,177,127,64],[26,90,57,98,142,135,65,235,180,30,108,98,60,187,77,165,212,17,61,132,16,177,17,227,23,153,205,133,107,177,127,64],[109,204,242,196,37,93,209,154,207,42,87,188,179,144,152,205,8,24,87,183,120,198,20,181,248,27,66,84,36,201,78,114],[44,8,194,10,185,158,41,120,98,145,52,19,226,214,173,30,154,99,37,30,167,231,246,170,77,93,80,148,183,85,217,227],[44,8,194,10,185,158,41,120,98,145,52,19,226,214,173,30,154,99,37,30,167,231,246,170,77,93,80,148,183,85,217,227],[107,152,5,219,150,106,136,96,187,226,139,120,236,58,69,29,44,214,234,105,24,180,218,211,1,64,12,47,150,222,232,114],[107,152,5,219,150,106,136,96,187,226,139,120,236,58,69,29,44,214,234,105,24,180,218,211,1,64,12,47,150,222,232,114],[195,94,47,252,136,63,234,11,18,91,21,103,254,48,83,171,185,185,138,118,49,46,72,11,188,15,31,147,111,234,145,218],[224,21,249,190,126,95,225,185,34,6,163,76,106,118,216,198,98,98,248,8,192,42,30,27,79,144,60,135,183,20,64,235],[224,21,249,190,126,95,225,185,34,6,163,76,106,118,216,198,98,98,248,8,192,42,30,27,79,144,60,135,183,20,64,235],[166,170,52,66,123,7,102,36,109,199,169,213,126,132,37,193,109,23,225,119,168,32,73,235,46,113,226,172,183,19,217,132],[166,170,52,66,123,7,102,36,109,199,169,213,126,132,37,193,109,23,225,119,168,32,73,235,46,113,226,172,183,19,217,132],[178,46,89,51,254,45,88,217,196,168,192,107,75,116,124,229,184,255,179,184,80,133,179,32,47,234,77,151,97,148,28,169],[210,99,181,184,61,223,165,69,191,171,186,43,20,73,228,157,190,228,147,74,175,69,214,46,244,156,98,77,219,247,200,141],[210,99,181,184,61,223,165,69,191,171,186,43,20,73,228,157,190,228,147,74,175,69,214,46,244,156,98,77,219,247,200,141],[19,195,92,204,218,185,188,47,124,236,70,133,177,235,13,180,18,249,149,240,187,236,95,81,90,139,142,10,227,179,58,189],[19,195,92,204,218,185,188,47,124,236,70,133,177,235,13,180,18,249,149,240,187,236,95,81,90,139,142,10,227,179,58,189],[48,91,87,13,32,98,214,25,123,212,174,98,132,51,214,221,226,59,63,85,34,239,152,218,218,18,156,113,116,253,122,68],[146,112,165,165,182,25,66,34,169,108,252,129,80,34,157,190,178,82,217,212,76,191,29,242,70,97,200,127,247,119,209,224],[146,112,165,165,182,25,66,34,169,108,252,129,80,34,157,190,178,82,217,212,76,191,29,242,70,97,200,127,247,119,209,224],[181,99,142,83,65,230,32,234,207,246,64,99,55,159,44,37,15,215,4,222,251,4,165,5,136,21,35,204,245,192,38,2],[17,197,227,159,97,122,241,202,13,152,203,188,225,85,129,239,145,152,164,209,72,68,3,164,22,129,13,168,222,195,60,64],[146,7,141,23,141,237,7,12,51,71,250,73,253,222,162,137,150,207,255,138,193,44,202,179,146,191,178,222,107,127,159,110],[146,7,141,23,141,237,7,12,51,71,250,73,253,222,162,137,150,207,255,138,193,44,202,179,146,191,178,222,107,127,159,110],[136,233,41,210,94,9,86,161,42,13,128,9,168,50,239,93,17,201,85,180,65,141,48,38,130,193,112,28,86,247,105,192],[136,233,41,210,94,9,86,161,42,13,128,9,168,50,239,93,17,201,85,180,65,141,48,38,130,193,112,28,86,247,105,192],[64,184,23,246,155,27,203,187,142,151,63,234,158,204,12,24,83,48,232,31,129,197,134,61,76,242,68,160,143,234,39,237],[43,203,238,119,188,2,19,51,27,27,169,14,42,167,40,43,152,188,242,155,35,9,22,109,10,138,168,173,170,185,188,183],[168,172,140,203,68,201,255,29,7,113,217,73,200,114,120,152,236,66,32,13,15,133,95,158,19,69,163,97,32,172,191,221],[168,172,140,203,68,201,255,29,7,113,217,73,200,114,120,152,236,66,32,13,15,133,95,158,19,69,163,97,32,172,191,221],[101,51,147,211,175,166,224,14,235,180,117,70,37,120,107,209,134,64,172,178,2,18,144,45,172,110,209,99,26,186,129,9],[101,51,147,211,175,166,224,14,235,180,117,70,37,120,107,209,134,64,172,178,2,18,144,45,172,110,209,99,26,186,129,9]]},{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":0,"Length":802},"Cuts":[[170,112,49,200,57,127,167,216,108,147,112,86,218,215,35,63,98,222,19,96,66,77,239,180,210,27,246,172,104,174,117,110],[13,191,247,166,102,132,66,198,4,179,30,55,76,158,75,158,220,222,130,84,9,80,251,98,181,78,234,206,36,107,198,48],[74,67,210,242,80,75,164,167,26,163,244,212,191,33,229,40,181,154,157,122,131,82,45,169,148,155,87,165,51,137,5,130],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[4,60,85,157,116,146,18,108,47,111,75,91,137,107,243,32,247,172,146,219,156,65,27,18,183,13,37,24,162,29,209,110],[122,25,43,33,123,16,246,154,55,20,168,249,104,225,109,177,51,132,45,78,139,63,244,173,125,48,113,182,123,41,97,175],[165,179,154,135,84,214,207,181,229,141,210,111,87,78,155,96,211,121,20,4,254,28,57,221,49,214,192,245,130,227,188,247],[98,204,59,77,2,148,104,145,53,244,1,193,159,155,188,205,238,106,60,209,170,83,24,14,32,254,239,96,182,167,243,219],[46,214,45,33,154,34,213,209,188,192,135,9,90,166,37,141,110,50,241,124,125,142,89,194,129,184,25,82,25,99,199,210],[46,214,45,33,154,34,213,209,188,192,135,9,90,166,37,141,110,50,241,124,125,142,89,194,129,184,25,82,25,99,199,210],[177,60,218,30,220,247,175,116,203,200,126,100,46,210,52,24,119,123,88,22,74,33,62,14,53,218,181,21,95,162,43,230],[90,193,208,238,94,70,181,240,206,198,205,230,160,55,144,182,237,22,64,228,39,55,228,117,163,82,197,38,22,182,199,150],[20,139,160,9,216,238,212,202,29,198,231,99,172,139,237,119,79,205,65,162,79,203,5,245,32,9,88,52,217,225,251,212],[180,3,67,144,222,46,111,194,77,64,68,163,156,159,38,147,10,75,51,171,249,199,207,174,12,18,24,19,45,226,187,250],[232,16,36,101,111,145,29,46,107,172,94,33,202,192,94,117,91,250,124,165,25,50,18,30,188,145,186,80,31,136,40,144],[232,16,36,101,111,145,29,46,107,172,94,33,202,192,94,117,91,250,124,165,25,50,18,30,188,145,186,80,31,136,40,144],[140,173,10,223,84,138,221,20,12,29,194,201,80,122,15,234,67,13,221,204,80,147,46,164,53,134,139,166,228,127,18,169],[92,150,121,89,180,131,220,169,35,189,28,96,1,125,87,118,174,166,116,36,244,39,100,2,29,149,131,159,84,246,188,223],[73,138,3,225,237,115,252,154,40,60,97,246,18,122,132,141,107,33,217,79,112,248,223,206,5,134,152,151,162,34,107,12],[110,43,116,200,11,53,211,152,147,73,20,183,204,4,60,249,37,141,217,77,138,210,77,183,110,165,80,222,153,231,207,173],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[77,202,208,5,119,63,58,155,183,175,251,232,187,111,15,250,18,197,65,251,118,41,235,172,145,163,124,226,118,78,206,189],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[119,242,93,187,157,63,78,150,170,94,252,5,112,54,230,54,204,114,205,137,248,224,231,175,19,142,173,247,102,56,73,172],[94,10,151,239,155,159,15,150,121,16,28,235,127,99,181,154,61,13,140,77,189,255,3,47,129,68,199,89,45,29,113,148],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[215,243,65,230,195,108,189,8,46,142,162,140,108,81,79,199,209,157,42,51,19,84,250,216,58,76,197,6,75,205,16,251],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[200,246,189,65,151,20,228,126,115,12,29,86,21,101,246,235,113,195,212,108,138,109,245,195,181,118,246,49,60,254,62,47],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[130,87,233,194,116,252,187,43,213,243,22,70,192,73,200,146,83,127,42,220,43,118,116,188,105,203,34,132,85,222,216,17],[224,136,248,82,40,143,193,214,58,124,17,214,76,94,51,164,217,132,50,107,69,165,93,197,227,83,85,72,209,170,152,126],[82,124,145,73,66,133,253,49,14,28,194,195,164,121,9,227,225,131,63,153,179,18,34,43,70,27,180,5,170,117,65,240],[235,189,14,194,253,28,190,51,176,122,219,4,10,4,160,98,86,120,145,41,61,88,123,67,247,129,125,66,39,118,156,96],[235,189,14,194,253,28,190,51,176,122,219,4,10,4,160,98,86,120,145,41,61,88,123,67,247,129,125,66,39,118,156,96],[128,135,85,86,171,207,28,140,230,64,141,2,199,167,9,216,9,136,203,72,85,87,3,16,84,44,89,142,184,206,88,189],[53,65,198,2,171,27,112,206,11,190,92,133,100,221,110,209,230,112,100,215,80,130,248,108,147,45,186,200,60,224,122,65],[53,65,198,2,171,27,112,206,11,190,92,133,100,221,110,209,230,112,100,215,80,130,248,108,147,45,186,200,60,224,122,65],[195,190,102,95,192,131,35,88,71,231,177,218,82,173,18,115,91,227,151,128,194,1,109,201,224,40,178,125,255,63,18,5],[5,6,126,70,121,94,1,100,147,126,57,83,235,160,64,48,249,17,243,189,61,56,246,4,150,95,70,196,118,50,33,51],[204,144,38,79,120,49,131,91,83,117,90,105,112,42,75,220,46,113,234,62,29,52,27,64,37,252,217,223,202,139,100,73],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[103,220,89,16,130,27,175,196,1,87,213,132,232,74,108,9,27,88,48,116,55,118,180,198,211,119,114,1,161,124,144,19],[78,144,217,42,56,193,157,151,245,63,7,187,105,212,179,220,170,181,65,250,41,68,18,134,100,154,214,191,165,103,92,119],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[24,235,125,90,66,128,230,120,66,201,205,228,57,126,104,119,179,37,108,16,210,38,239,74,169,107,202,209,233,243,29,10],[227,106,35,27,164,44,81,59,155,69,16,96,237,42,76,45,234,109,32,242,76,135,192,188,140,83,96,219,160,235,189,57],[63,241,23,128,110,251,64,246,172,237,103,50,97,247,155,158,238,74,25,82,90,91,56,129,133,59,141,15,135,249,20,2],[93,131,154,55,35,216,147,57,140,149,190,150,105,178,99,191,249,212,235,207,65,223,6,191,208,179,188,172,77,98,51,210],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[222,15,151,155,238,219,205,77,162,6,188,153,250,33,160,74,131,166,105,146,99,166,187,35,251,246,155,186,245,2,182,66],[143,162,100,182,153,242,161,237,255,223,162,17,223,39,161,211,156,89,156,4,102,82,98,215,248,101,46,109,7,83,153,42],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[202,15,172,109,53,31,158,55,51,98,49,88,187,194,226,171,2,248,170,140,204,64,68,123,105,86,140,229,189,122,202,98],[225,234,193,228,9,69,195,80,97,151,22,234,15,214,37,242,202,90,60,45,127,111,95,168,31,255,165,169,92,194,172,222],[228,194,1,255,228,151,229,186,150,116,113,165,69,156,54,11,197,107,130,11,246,169,185,97,158,201,22,225,244,218,146,194],[199,121,187,100,248,95,195,182,10,115,160,106,116,46,78,54,150,16,32,7,122,195,65,69,189,157,196,197,87,237,88,160],[199,121,187,100,248,95,195,182,10,115,160,106,116,46,78,54,150,16,32,7,122,195,65,69,189,157,196,197,87,237,88,160],[106,195,236,28,247,218,137,230,132,44,84,31,234,48,213,72,116,220,189,237,108,175,238,86,41,56,115,244,24,20,234,102],[53,11,49,66,183,55,46,75,198,111,243,179,120,19,178,147,133,151,250,119,31,233,209,15,196,255,60,198,44,69,27,222],[53,11,49,66,183,55,46,75,198,111,243,179,120,19,178,147,133,151,250,119,31,233,209,15,196,255,60,198,44,69,27,222],[58,184,9,139,187,195,187,177,148,255,165,132,167,207,249,197,206,5,254,240,210,254,145,28,19,132,200,102,78,206,151,193],[104,10,123,133,92,65,97,26,132,232,215,240,33,244,57,107,99,4,126,9,226,162,151,146,240,214,92,152,37,93,22,211],[212,17,37,118,14,205,223,47,226,44,176,8,222,83,73,113,161,184,240,58,41,252,23,248,79,133,10,170,142,217,251,195],[49,182,56,126,222,209,252,9,192,239,109,232,152,211,175,67,189,16,89,181,48,200,72,77,203,89,6,127,211,107,216,254],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[158,222,247,184,218,133,222,137,105,5,120,127,111,12,131,3,204,90,197,72,227,240,232,76,62,115,246,11,167,251,39,251],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[124,255,68,196,255,23,97,181,85,123,197,250,207,81,147,14,85,237,220,225,33,219,245,18,89,208,68,19,28,255,225,42],[180,212,185,232,88,190,19,82,229,38,28,204,186,121,85,133,217,19,171,135,178,33,128,183,40,80,210,166,22,149,218,121],[89,20,215,144,126,193,210,118,88,206,146,54,81,78,122,239,41,169,53,26,239,242,240,206,3,82,242,200,109,207,159,179],[105,249,210,23,10,96,152,42,0,196,42,98,250,116,207,47,92,228,26,219,79,200,87,96,143,100,110,194,62,68,55,105],[237,33,27,161,18,24,19,195,149,72,85,224,246,50,43,253,123,48,105,55,19,79,211,213,93,59,238,8,135,104,200,133],[237,33,27,161,18,24,19,195,149,72,85,224,246,50,43,253,123,48,105,55,19,79,211,213,93,59,238,8,135,104,200,133],[235,157,13,94,66,231,40,180,33,72,233,229,42,27,216,0,168,24,236,157,108,21,78,29,85,39,27,138,114,43,221,131],[249,249,13,81,27,254,196,182,149,171,223,95,74,161,31,69,159,36,124,109,160,72,142,154,210,209,111,241,59,242,92,125],[249,249,13,81,27,254,196,182,149,171,223,95,74,161,31,69,159,36,124,109,160,72,142,154,210,209,111,241,59,242,92,125],[175,250,29,195,5,135,127,221,154,50,73,155,59,190,241,112,181,59,60,193,227,238,0,223,253,139,212,175,176,78,72,200],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[37,192,211,72,141,4,55,150,52,78,85,84,196,211,250,86,197,198,152,106,26,165,185,213,75,4,140,215,203,40,66,192],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[234,87,191,153,155,241,229,92,9,98,11,178,151,184,109,118,137,208,218,219,0,35,253,0,233,98,114,102,35,156,30,87],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[210,149,47,88,104,250,51,191,197,141,49,18,253,4,50,112,223,160,149,185,70,253,236,74,116,30,13,123,24,170,242,243],[221,173,240,172,88,62,46,97,215,52,39,213,94,127,56,222,243,226,212,174,39,153,189,241,121,221,88,182,226,25,245,40],[221,173,240,172,88,62,46,97,215,52,39,213,94,127,56,222,243,226,212,174,39,153,189,241,121,221,88,182,226,25,245,40],[199,84,174,235,41,37,58,38,201,238,75,42,167,216,244,210,17,62,26,63,55,112,229,37,147,192,65,196,221,39,199,30],[102,240,192,21,50,36,223,101,150,204,111,16,124,150,11,29,82,71,57,11,32,176,241,135,140,239,173,249,72,207,106,102],[241,151,124,116,162,211,218,74,191,196,135,172,170,192,61,86,91,88,214,168,146,95,251,78,135,127,2,108,137,169,214,180],[241,151,124,116,162,211,218,74,191,196,135,172,170,192,61,86,91,88,214,168,146,95,251,78,135,127,2,108,137,169,214,180],[170,179,96,225,222,100,252,188,131,54,182,159,93,165,108,239,25,178,213,27,167,129,170,172,109,84,215,208,98,232,186,213],[170,179,96,225,222,100,252,188,131,54,182,159,93,165,108,239,25,178,213,27,167,129,170,172,109,84,215,208,98,232,186,213],[134,229,120,185,170,197,241,230,221,12,240,169,245,74,154,222,38,10,145,237,114,7,59,179,45,182,70,134,1,185,254,35],[52,33,53,88,151,79,79,174,108,114,66,78,175,113,224,149,61,132,202,243,216,92,100,240,30,63,13,103,87,109,221,84],[34,241,158,222,158,73,230,139,56,148,240,209,212,82,40,36,60,243,38,99,99,170,61,162,110,4,215,241,133,186,81,151],[34,241,158,222,158,73,230,139,56,148,240,209,212,82,40,36,60,243,38,99,99,170,61,162,110,4,215,241,133,186,81,151],[187,144,26,168,131,102,186,25,215,236,35,165,130,88,217,31,89,19,94,110,148,240,243,209,41,195,137,200,252,215,50,247],[155,138,20,186,20,163,100,88,35,2,210,108,120,150,215,155,93,15,113,154,201,166,222,44,109,27,138,64,192,148,98,131],[49,104,251,182,8,225,182,187,230,77,172,173,96,250,127,5,62,99,94,83,101,3,69,19,249,220,50,91,251,48,97,56],[127,67,151,255,216,169,142,98,58,225,40,151,78,41,97,239,255,119,49,117,177,122,209,232,227,58,68,76,30,166,178,45],[46,83,18,243,138,78,127,223,195,59,36,60,235,235,56,162,218,240,20,181,29,255,164,190,3,242,186,121,137,83,24,31],[46,83,18,243,138,78,127,223,195,59,36,60,235,235,56,162,218,240,20,181,29,255,164,190,3,242,186,121,137,83,24,31],[224,54,1,150,0,43,38,243,167,194,156,167,112,125,111,40,11,10,234,208,212,200,134,230,188,221,59,102,168,105,202,152],[224,54,1,150,0,43,38,243,167,194,156,167,112,125,111,40,11,10,234,208,212,200,134,230,188,221,59,102,168,105,202,152],[44,177,99,116,196,18,75,249,192,215,93,144,195,204,61,51,199,255,37,78,8,162,184,84,124,61,9,192,96,255,28,238],[3,163,124,232,10,172,23,209,40,88,227,126,108,44,207,78,46,142,18,221,84,142,25,109,161,236,234,133,225,38,21,1],[3,163,124,232,10,172,23,209,40,88,227,126,108,44,207,78,46,142,18,221,84,142,25,109,161,236,234,133,225,38,21,1],[122,14,37,141,187,172,169,240,52,188,99,75,32,122,189,51,145,103,40,231,55,116,93,247,185,232,169,96,18,243,230,187],[122,14,37,141,187,172,169,240,52,188,99,75,32,122,189,51,145,103,40,231,55,116,93,247,185,232,169,96,18,243,230,187],[57,22,60,220,12,209,65,27,35,79,8,120,208,177,162,232,57,91,178,141,165,243,129,174,66,39,74,39,207,247,4,72],[99,50,53,114,191,139,137,114,28,250,136,249,58,155,105,45,246,151,32,59,16,182,215,40,240,107,172,251,163,121,137,143],[99,50,53,114,191,139,137,114,28,250,136,249,58,155,105,45,246,151,32,59,16,182,215,40,240,107,172,251,163,121,137,143],[88,111,6,216,78,194,215,128,56,140,190,201,135,126,242,41,123,92,75,79,87,15,167,101,174,46,143,138,63,171,5,240],[88,111,6,216,78,194,215,128,56,140,190,201,135,126,242,41,123,92,75,79,87,15,167,101,174,46,143,138,63,171,5,240],[97,225,235,158,126,250,187,237,44,105,70,111,156,243,72,80,121,21,67,241,190,171,201,160,253,204,93,35,174,2,82,85],[5,198,185,96,157,183,255,241,118,43,89,211,52,72,173,173,227,241,79,129,234,226,111,6,119,2,114,8,33,199,38,106],[5,198,185,96,157,183,255,241,118,43,89,211,52,72,173,173,227,241,79,129,234,226,111,6,119,2,114,8,33,199,38,106],[26,90,57,98,142,135,65,235,180,30,108,98,60,187,77,165,212,17,61,132,16,177,17,227,23,153,205,133,107,177,127,64],[26,90,57,98,142,135,65,235,180,30,108,98,60,187,77,165,212,17,61,132,16,177,17,227,23,153,205,133,107,177,127,64],[109,204,242,196,37,93,209,154,207,42,87,188,179,144,152,205,8,24,87,183,120,198,20,181,248,27,66,84,36,201,78,114],[44,8,194,10,185,158,41,120,98,145,52,19,226,214,173,30,154,99,37,30,167,231,246,170,77,93,80,148,183,85,217,227],[44,8,194,10,185,158,41,120,98,145,52,19,226,214,173,30,154,99,37,30,167,231,246,170,77,93,80,148,183,85,217,227],[107,152,5,219,150,106,136,96,187,226,139,120,236,58,69,29,44,214,234,105,24,180,218,211,1,64,12,47,150,222,232,114],[107,152,5,219,150,106,136,96,187,226,139,120,236,58,69,29,44,214,234,105,24,180,218,211,1,64,12,47,150,222,232,114],[195,94,47,252,136,63,234,11,18,91,21,103,254,48,83,171,185,185,138,118,49,46,72,11,188,15,31,147,111,234,145,218],[224,21,249,190,126,95,225,185,34,6,163,76,106,118,216,198,98,98,248,8,192,42,30,27,79,144,60,135,183,20,64,235],[224,21,249,190,126,95,225,185,34,6,163,76,106,118,216,198,98,98,248,8,192,42,30,27,79,144,60,135,183,20,64,235],[166,170,52,66,123,7,102,36,109,199,169,213,126,132,37,193,109,23,225,119,168,32,73,235,46,113,226,172,183,19,217,132],[166,170,52,66,123,7,102,36,109,199,169,213,126,132,37,193,109,23,225,119,168,32,73,235,46,113,226,172,183,19,217,132],[178,46,89,51,254,45,88,217,196,168,192,107,75,116,124,229,184,255,179,184,80,133,179,32,47,234,77,151,97,148,28,169],[210,99,181,184,61,223,165,69,191,171,186,43,20,73,228,157,190,228,147,74,175,69,214,46,244,156,98,77,219,247,200,141],[210,99,181,184,61,223,165,69,191,171,186,43,20,73,228,157,190,228,147,74,175,69,214,46,244,156,98,77,219,247,200,141],[19,195,92,204,218,185,188,47,124,236,70,133,177,235,13,180,18,249,149,240,187,236,95,81,90,139,142,10,227,179,58,189],[19,195,92,204,218,185,188,47,124,236,70,133,177,235,13,180,18,249,149,240,187,236,95,81,90,139,142,10,227,179,58,189],[48,91,87,13,32,98,214,25,123,212,174,98,132,51,214,221,226,59,63,85,34,239,152,218,218,18,156,113,116,253,122,68],[146,112,165,165,182,25,66,34,169,108,252,129,80,34,157,190,178,82,217,212,76,191,29,242,70,97,200,127,247,119,209,224],[146,112,165,165,182,25,66,34,169,108,252,129,80,34,157,190,178,82,217,212,76,191,29,242,70,97,200,127,247,119,209,224],[181,99,142,83,65,230,32,234,207,246,64,99,55,159,44,37,15,215,4,222,251,4,165,5,136,21,35,204,245,192,38,2],[17,197,227,159,97,122,241,202,13,152,203,188,225,85,129,239,145,152,164,209,72,68,3,164,22,129,13,168,222,195,60,64],[146,7,141,23,141,237,7,12,51,71,250,73,253,222,162,137,150,207,255,138,193,44,202,179,146,191,178,222,107,127,159,110],[146,7,141,23,141,237,7,12,51,71,250,73,253,222,162,137,150,207,255,138,193,44,202,179,146,191,178,222,107,127,159,110],[136,233,41,210,94,9,86,161,42,13,128,9,168,50,239,93,17,201,85,180,65,141,48,38,130,193,112,28,86,247,105,192],[136,233,41,210,94,9,86,161,42,13,128,9,168,50,239,93,17,201,85,180,65,141,48,38,130,193,112,28,86,247,105,192],[64,184,23,246,155,27,203,187,142,151,63,234,158,204,12,24,83,48,232,31,129,197,134,61,76,242,68,160,143,234,39,237],[43,203,238,119,188,2,19,51,27,27,169,14,42,167,40,43,152,188,242,155,35,9,22,109,10,138,168,173,170,185,188,183],[168,172,140,203,68,201,255,29,7,113,217,73,200,114,120,152,236,66,32,13,15,133,95,158,19,69,163,97,32,172,191,221],[168,172,140,203,68,201,255,29,7,113,217,73,200,114,120,152,236,66,32,13,15,133,95,158,19,69,163,97,32,172,191,221],[101,51,147,211,175,166,224,14,235,180,117,70,37,120,107,209,134,64,172,178,2,18,144,45,172,110,209,99,26,186,129,9],[101,51,147,211,175,166,224,14,235,180,117,70,37,120,107,209,134,64,172,178,2,18,144,45,172,110,209,99,26,186,129,9]]},"StartState":{"machineHash":[49,151,249,85,187,214,113,213,7,78,166,222,46,43,33,114,121,139,86,251,58,192,161,221,185,161,63,68,106,239,20,183],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":0,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"SegmentToChallenge":0,"InconsistentSegment":{"Start":0,"Length":4},"SubCuts":[[170,112,49,200,57,127,167,216,108,147,112,86,218,215,35,63,98,222,19,96,66,77,239,180,210,27,246,172,104,174,117,110],[208,235,73,225,165,24,107,159,6,37,232,31,234,192,83,151,150,143,120,114,201,123,33,205,65,219,164,70,190,121,138,146],[182,27,5,182,218,215,89,100,83,111,33,193,211,223,202,252,127,3,187,43,54,55,235,120,128,53,203,52,69,10,181,63],[210,0,221,117,208,204,230,92,34,218,122,49,92,218,247,113,34,97,230,94,129,48,146,96,72,119,79,16,178,96,136,35],[210,0,221,117,208,204,230,92,34,218,122,49,92,218,247,113,34,97,230,94,129,48,146,96,72,119,79,16,178,96,136,35]]},{"Kind":"OneStepProof","Assertion":{"beforeState":{"machineHash":[49,151,249,85,187,214,113,213,7,78,166,222,46,43,33,114,121,139,86,251,58,192,161,221,185,161,63,68,106,239,20,183],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":0,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"afterState":{"machineHash":[222,173,190,239,253,235,134,236,102,205,100,255,24,183,234,224,117,129,243,79,61,90,215,58,19,135,241,64,163,129,200,99],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":802,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},"PrevBisection":{"ChallengedSegment":{"Start":0,"Length":4},"Cuts":[[170,112,49,200,57,127,167,216,108,147,112,86,218,215,35,63,98,222,19,96,66,77,239,180,210,27,246,172,104,174,117,110],[208,235,73,225,165,24,107,159,6,37,232,31,234,192,83,151,150,143,120,114,201,123,33,205,65,219,164,70,190,121,138,146],[182,27,5,182,218,215,89,100,83,111,33,193,211,223,202,252,127,3,187,43,54,55,235,120,128,53,203,52,69,10,181,63],[210,0,221,117,208,204,230,92,34,218,122,49,92,218,247,113,34,97,230,94,129,48,146,96,72,119,79,16,178,96,136,35],[210,0,221,117,208,204,230,92,34,218,122,49,92,218,247,113,34,97,230,94,129,48,146,96,72,119,79,16,178,96,136,35]]},"SegmentToChallenge":0,"ChallengedSegment":{"Start":0,"Length":1},"PreviousCut":{"machineHash":[49,151,249,85,187,214,113,213,7,78,166,222,46,43,33,114,121,139,86,251,58,192,161,221,185,161,63,68,106,239,20,183],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":0,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"ProofData":"0x320000c1591a65188fa5083a9b32b570b4d008d7ade23f0b96f87b023c690757117709bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a0000000000000000000000000000000000000000000000000000000000000001bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a000000000000000000000000000000000000000000000000000000000000000102bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a000000000000000000000000000000000000000000000000000000000000000102bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a0000000000000000000000000000000000000000000000000000000000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb4c00615f95dc249934075fcc669947596baf6e070ac80a59f79dae98aa932f000","BufferProofData":"0x"},null,null,null,null,null,null,null,null,null,null,{"Kind":"Timeout"}],"AsserterError":null} \ No newline at end of file +{"ChallengedAssertion":{"beforeState":{"machineHash":[30,156,203,57,12,21,160,132,214,149,173,47,232,59,39,188,98,18,202,18,2,19,242,118,159,227,159,107,163,137,154,23],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":0,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"afterState":{"machineHash":[222,173,190,239,166,222,9,150,22,37,169,101,177,62,15,155,152,97,192,255,208,179,119,9,58,237,211,208,150,138,15,103],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":802,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},"Messages":[{"Kind":11,"Sender":"0x9be6b9f6b0ec4ad126c429961f3951773f7381b7","InboxSeqNum":0,"GasPrice":589250589,"Data":"0xece83efd40ff2c9c69c406a49cbd4e7019fc5807db782ea78e3ee698923a412c000000000000000000000000000000000000000000000000000000000000000344edde536e3f4df60ef7ec43bc928f7438fa9804cb64ef42045ab4781bbc0bb300000000000000000000000000000000000000000000000000000000000000001567aa7175e04611d194275bb504cc64e920959dd01df9d86ab047367aa4c53400000000000000000000000035248943dcb4b8e5dbbb67d1f7d3ab1bc36ce9a8","ChainTime":{"BlockNum":4,"Timestamp":40}}],"Moves":[{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":0,"Length":802},"Cuts":[[148,180,126,2,64,159,142,0,161,90,93,27,132,221,174,15,169,112,78,221,239,187,223,173,7,217,120,18,14,130,134,142],[214,137,104,108,190,247,121,225,152,166,189,202,151,150,244,155,57,224,166,185,51,141,17,83,56,60,0,149,142,115,131,134]]},"StartState":{"machineHash":[30,156,203,57,12,21,160,132,214,149,173,47,232,59,39,188,98,18,202,18,2,19,242,118,159,227,159,107,163,137,154,23],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":0,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"SegmentToChallenge":0,"InconsistentSegment":{"Start":0,"Length":802},"SubCuts":[[148,180,126,2,64,159,142,0,161,90,93,27,132,221,174,15,169,112,78,221,239,187,223,173,7,217,120,18,14,130,134,142],[28,193,252,11,215,77,170,104,117,90,220,213,66,138,82,213,210,95,240,76,15,147,125,198,110,243,112,117,152,12,126,116],[111,16,247,84,100,229,166,216,29,203,101,36,149,199,133,209,109,117,71,8,192,93,201,220,136,43,241,193,205,50,44,107],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[105,77,181,254,49,89,72,145,88,209,69,31,46,135,136,44,155,138,72,33,27,221,150,181,215,246,217,161,139,201,175,34],[127,26,93,71,21,141,193,189,37,243,123,232,246,51,98,111,249,31,251,242,150,223,228,234,163,174,20,150,61,196,41,122],[113,96,128,195,248,93,175,142,142,98,0,209,2,144,24,57,51,187,3,95,69,96,107,74,81,127,106,215,151,33,117,62],[137,213,17,234,43,254,7,130,45,225,199,51,90,189,83,23,252,253,199,159,145,176,129,199,124,231,84,142,223,32,249,69],[137,213,17,234,43,254,7,130,45,225,199,51,90,189,83,23,252,253,199,159,145,176,129,199,124,231,84,142,223,32,249,69],[182,46,247,152,104,75,179,72,85,141,250,163,204,58,6,248,199,211,202,220,70,234,254,91,102,166,120,249,105,11,70,221],[47,236,24,53,92,127,28,218,244,175,52,243,230,186,144,234,89,85,29,141,234,100,218,157,161,141,26,3,166,181,98,88],[30,171,217,173,191,171,197,147,47,12,38,56,30,26,228,3,206,132,154,19,170,243,224,135,247,211,215,34,209,30,240,189],[33,172,219,78,204,50,135,37,79,221,255,213,90,47,117,252,42,160,124,106,204,19,80,134,135,166,7,48,113,181,247,236],[193,12,123,72,11,62,112,89,190,57,231,119,223,34,244,179,13,213,253,49,241,8,130,166,167,149,135,167,192,60,50,33],[193,12,123,72,11,62,112,89,190,57,231,119,223,34,244,179,13,213,253,49,241,8,130,166,167,149,135,167,192,60,50,33],[150,147,177,65,187,59,37,140,15,192,128,195,182,122,60,75,11,123,5,101,246,248,30,213,176,71,253,253,252,30,219,196],[226,186,193,183,139,212,200,35,164,151,224,81,164,22,53,240,59,47,254,192,107,179,236,244,224,11,79,134,235,45,209,183],[149,26,89,208,142,241,234,150,206,18,48,8,5,193,140,44,134,192,230,106,161,249,95,14,133,221,12,233,111,197,133,250],[240,119,131,148,220,143,193,134,145,215,232,246,225,183,5,163,108,90,24,48,124,1,251,82,192,94,59,2,198,206,76,167],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[200,65,39,95,255,253,212,16,121,78,213,21,253,25,113,194,124,206,98,125,130,16,19,13,121,28,158,183,253,211,115,175],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[232,101,170,79,181,6,163,95,250,190,146,254,254,250,70,228,34,15,194,248,222,78,223,200,88,103,72,91,197,65,81,118],[129,82,0,84,111,244,109,221,126,53,208,57,11,103,247,35,52,167,158,33,139,159,135,180,79,48,211,60,163,177,220,131],[46,38,53,246,66,103,75,151,215,80,30,185,23,230,117,68,103,225,55,25,121,211,4,234,254,141,33,191,180,81,118,108],[46,38,53,246,66,103,75,151,215,80,30,185,23,230,117,68,103,225,55,25,121,211,4,234,254,141,33,191,180,81,118,108],[98,212,111,109,141,213,23,240,169,34,76,103,131,137,27,163,95,58,87,149,164,233,39,118,123,214,58,131,243,108,232,103],[148,119,78,30,238,88,159,166,69,213,149,18,35,75,137,210,222,172,1,87,192,64,2,252,134,105,142,179,190,209,220,106],[148,119,78,30,238,88,159,166,69,213,149,18,35,75,137,210,222,172,1,87,192,64,2,252,134,105,142,179,190,209,220,106],[172,15,75,158,79,66,67,183,76,37,64,87,202,17,227,134,109,211,101,18,54,11,169,239,235,62,53,195,135,157,130,49],[83,123,174,201,105,60,158,100,142,157,56,106,221,112,202,103,230,148,94,166,101,237,29,225,85,50,32,92,47,38,200,88],[195,60,8,57,250,178,84,210,63,231,1,215,112,141,166,95,173,163,83,38,39,251,16,179,59,140,4,39,230,84,104,180],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[216,241,126,224,29,83,252,56,225,190,130,109,227,216,232,2,76,142,80,7,28,16,131,102,41,219,82,211,81,154,72,144],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[49,173,170,144,242,183,88,1,103,247,60,201,224,184,134,255,249,217,227,252,23,61,219,244,42,242,164,144,245,198,63,163],[243,155,35,24,181,145,92,29,107,122,29,22,218,211,171,112,50,146,190,67,226,50,160,207,79,160,172,144,219,165,126,253],[168,40,178,215,29,135,226,253,195,4,155,182,75,53,95,255,237,49,249,215,230,95,70,212,111,225,81,117,255,129,53,159],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[27,112,87,11,39,69,245,8,231,191,161,154,233,187,180,1,57,251,35,31,245,181,146,157,116,238,57,193,127,251,21,173],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[77,71,174,161,157,25,205,109,19,99,254,40,234,32,119,93,46,180,129,29,50,21,60,116,125,120,205,234,155,205,195,230],[150,138,3,133,81,76,250,6,228,185,11,16,248,109,22,60,45,59,22,247,164,102,195,147,102,87,206,16,14,10,99,180],[112,153,11,117,15,32,33,109,198,251,40,54,134,38,133,89,240,50,180,117,128,67,229,219,194,191,199,78,26,188,110,115],[112,153,11,117,15,32,33,109,198,251,40,54,134,38,133,89,240,50,180,117,128,67,229,219,194,191,199,78,26,188,110,115],[155,156,161,171,237,117,96,114,41,61,98,229,190,96,39,164,233,7,27,230,123,76,193,121,73,104,211,101,162,24,243,12],[103,242,0,239,104,112,174,113,123,96,225,138,135,157,181,75,199,25,123,245,138,94,38,121,143,223,227,40,200,252,2,6],[103,242,0,239,104,112,174,113,123,96,225,138,135,157,181,75,199,25,123,245,138,94,38,121,143,223,227,40,200,252,2,6],[218,78,113,167,25,99,80,107,9,10,65,165,237,184,243,218,238,15,39,208,156,201,144,84,112,80,36,239,226,230,52,80],[54,234,127,66,30,63,11,228,159,88,174,137,26,250,184,87,129,36,93,124,176,22,38,104,77,112,194,52,207,254,104,99],[83,158,46,62,243,29,177,49,250,212,64,167,233,249,84,233,121,110,220,202,42,101,93,14,128,90,190,85,78,29,112,76],[5,29,39,196,137,114,59,32,23,247,222,83,87,232,206,109,51,104,58,216,170,230,196,202,147,59,204,140,178,133,71,201],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[125,194,75,166,118,53,142,126,75,221,27,27,113,192,25,155,126,24,251,247,223,218,145,91,101,215,54,68,91,120,74,54],[200,219,45,113,83,137,155,21,221,223,15,35,142,97,184,132,196,136,75,142,61,102,21,68,72,48,186,176,153,242,154,244],[234,82,11,225,57,185,184,11,245,104,241,25,19,29,210,136,158,123,199,109,215,148,33,228,8,228,165,122,68,247,245,193],[191,201,44,197,143,141,148,76,94,131,255,21,125,164,239,17,126,242,16,77,54,28,187,25,11,110,240,253,210,65,241,86],[191,201,44,197,143,141,148,76,94,131,255,21,125,164,239,17,126,242,16,77,54,28,187,25,11,110,240,253,210,65,241,86],[20,225,221,101,244,93,229,49,223,250,8,244,99,246,221,193,4,116,245,26,185,201,215,101,140,2,59,173,80,171,99,147],[146,57,146,63,6,96,75,111,113,35,204,123,114,171,249,142,12,194,191,180,94,13,164,209,229,240,187,79,240,200,47,220],[146,57,146,63,6,96,75,111,113,35,204,123,114,171,249,142,12,194,191,180,94,13,164,209,229,240,187,79,240,200,47,220],[174,15,171,210,96,176,35,78,58,82,175,97,96,233,210,139,110,16,199,228,141,187,151,234,89,177,146,242,186,6,144,181],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[99,70,204,18,91,154,17,133,74,168,31,33,103,2,18,234,55,93,69,24,105,250,189,125,28,113,121,163,48,11,52,71],[99,70,204,18,91,154,17,133,74,168,31,33,103,2,18,234,55,93,69,24,105,250,189,125,28,113,121,163,48,11,52,71],[123,18,63,230,202,188,203,38,11,206,75,25,159,62,212,161,86,104,18,39,20,161,130,204,146,23,109,79,139,208,88,144],[95,80,157,45,84,136,78,16,58,223,230,36,55,255,188,149,231,114,228,244,28,229,250,2,37,211,189,224,41,213,237,157],[214,56,75,111,170,111,131,154,24,38,42,54,96,234,116,175,167,112,255,245,32,79,195,62,185,105,52,2,159,91,5,172],[214,56,75,111,170,111,131,154,24,38,42,54,96,234,116,175,167,112,255,245,32,79,195,62,185,105,52,2,159,91,5,172],[226,50,101,244,10,36,8,231,34,52,86,192,18,248,223,65,88,96,177,113,163,228,174,120,1,59,107,123,168,128,97,255],[226,50,101,244,10,36,8,231,34,52,86,192,18,248,223,65,88,96,177,113,163,228,174,120,1,59,107,123,168,128,97,255],[10,102,102,78,157,225,111,209,6,111,37,41,201,77,161,4,44,194,192,175,178,27,253,26,161,140,172,53,43,43,15,251],[108,52,164,15,140,199,69,243,53,120,36,237,94,105,96,198,7,98,200,247,248,62,161,88,160,70,34,4,115,84,209,171],[141,190,221,114,129,107,29,106,26,129,47,185,17,169,98,122,135,131,250,154,170,111,230,239,147,166,143,143,53,16,193,201],[141,190,221,114,129,107,29,106,26,129,47,185,17,169,98,122,135,131,250,154,170,111,230,239,147,166,143,143,53,16,193,201],[24,40,28,103,13,36,144,79,186,146,21,2,95,121,131,48,103,152,107,70,155,156,110,230,136,176,105,31,97,250,225,23],[26,43,175,140,61,169,211,161,145,161,50,44,115,34,25,122,174,151,46,166,25,74,8,205,29,135,210,61,211,163,38,222],[53,57,18,128,109,47,99,106,158,3,208,165,139,14,139,239,46,64,237,112,100,165,81,245,15,221,38,253,236,152,105,170],[170,248,214,145,165,35,102,48,100,83,76,179,232,63,40,44,119,91,166,93,67,27,178,221,82,166,239,144,62,235,188,210],[62,149,231,85,215,53,222,32,119,214,152,247,62,222,243,136,51,52,110,243,157,105,32,0,170,149,83,63,121,3,76,147],[62,149,231,85,215,53,222,32,119,214,152,247,62,222,243,136,51,52,110,243,157,105,32,0,170,149,83,63,121,3,76,147],[128,59,160,239,129,247,52,87,33,225,236,164,183,163,7,1,199,248,1,151,195,17,251,101,223,139,144,230,96,200,195,2],[128,59,160,239,129,247,52,87,33,225,236,164,183,163,7,1,199,248,1,151,195,17,251,101,223,139,144,230,96,200,195,2],[218,15,102,142,21,224,172,54,154,207,118,154,12,10,32,124,31,1,194,4,230,132,120,120,137,246,239,81,129,191,103,50],[162,200,215,170,101,74,239,117,178,226,101,17,102,88,145,50,88,83,200,99,191,145,221,21,55,70,13,89,146,85,147,33],[162,200,215,170,101,74,239,117,178,226,101,17,102,88,145,50,88,83,200,99,191,145,221,21,55,70,13,89,146,85,147,33],[35,203,93,215,101,18,81,129,153,160,137,163,102,74,230,142,75,113,55,206,95,241,146,82,47,124,39,72,130,214,236,111],[35,203,93,215,101,18,81,129,153,160,137,163,102,74,230,142,75,113,55,206,95,241,146,82,47,124,39,72,130,214,236,111],[32,85,214,123,165,236,254,232,245,125,181,224,226,54,87,72,77,24,235,239,157,106,21,20,54,166,214,174,130,194,150,158],[57,235,192,24,150,83,225,146,162,170,207,55,41,59,215,206,88,255,56,71,87,138,101,154,71,110,71,212,98,57,51,241],[57,235,192,24,150,83,225,146,162,170,207,55,41,59,215,206,88,255,56,71,87,138,101,154,71,110,71,212,98,57,51,241],[146,71,39,128,238,254,227,237,69,105,217,30,96,244,200,69,85,208,83,55,244,46,221,214,93,123,58,72,70,95,227,5],[146,71,39,128,238,254,227,237,69,105,217,30,96,244,200,69,85,208,83,55,244,46,221,214,93,123,58,72,70,95,227,5],[55,147,37,227,49,102,45,80,239,85,100,78,115,233,199,177,205,114,12,217,189,35,95,138,24,148,58,96,187,238,126,24],[180,221,198,254,112,88,4,23,231,213,205,209,113,167,189,3,242,242,42,52,213,241,68,54,119,155,1,119,9,102,163,229],[180,221,198,254,112,88,4,23,231,213,205,209,113,167,189,3,242,242,42,52,213,241,68,54,119,155,1,119,9,102,163,229],[73,25,46,212,43,191,0,53,229,203,110,236,15,22,247,66,110,22,21,246,37,15,95,15,197,48,147,232,165,98,240,202],[73,25,46,212,43,191,0,53,229,203,110,236,15,22,247,66,110,22,21,246,37,15,95,15,197,48,147,232,165,98,240,202],[156,181,240,111,76,97,203,76,61,150,5,63,32,184,101,202,189,214,134,199,215,171,127,197,26,227,238,207,188,133,68,104],[47,78,249,52,113,18,35,3,133,46,134,64,22,176,93,184,133,205,55,90,155,226,125,247,66,224,92,132,250,140,253,189],[47,78,249,52,113,18,35,3,133,46,134,64,22,176,93,184,133,205,55,90,155,226,125,247,66,224,92,132,250,140,253,189],[167,149,1,76,199,216,167,18,63,161,14,237,49,4,86,215,108,212,39,192,27,107,44,198,159,15,255,73,106,21,75,10],[167,149,1,76,199,216,167,18,63,161,14,237,49,4,86,215,108,212,39,192,27,107,44,198,159,15,255,73,106,21,75,10],[194,74,168,55,166,187,72,124,58,248,199,177,9,235,114,28,179,132,207,76,36,249,229,185,48,21,15,96,185,3,145,155],[78,223,198,139,7,27,69,189,45,10,28,238,131,61,60,125,4,243,192,142,48,152,132,21,101,133,237,158,183,59,194,120],[78,223,198,139,7,27,69,189,45,10,28,238,131,61,60,125,4,243,192,142,48,152,132,21,101,133,237,158,183,59,194,120],[22,176,64,66,249,1,151,88,36,185,96,226,3,224,167,5,137,193,14,155,56,53,66,71,151,112,51,131,128,128,78,230],[22,176,64,66,249,1,151,88,36,185,96,226,3,224,167,5,137,193,14,155,56,53,66,71,151,112,51,131,128,128,78,230],[189,249,198,163,37,123,247,34,30,108,185,103,65,42,215,204,25,101,167,75,190,186,250,18,166,243,220,119,132,95,217,35],[174,18,51,231,43,140,217,218,219,252,228,159,40,89,163,45,252,185,152,249,189,118,231,136,12,103,55,8,182,127,11,188],[174,18,51,231,43,140,217,218,219,252,228,159,40,89,163,45,252,185,152,249,189,118,231,136,12,103,55,8,182,127,11,188],[230,32,72,140,68,82,211,5,74,194,115,173,18,176,246,31,122,51,79,121,45,168,9,85,42,70,10,106,28,94,140,194],[230,32,72,140,68,82,211,5,74,194,115,173,18,176,246,31,122,51,79,121,45,168,9,85,42,70,10,106,28,94,140,194],[220,123,125,151,83,154,62,174,249,175,240,25,52,88,80,205,206,244,233,97,71,140,248,47,40,178,52,180,119,54,217,9],[35,119,126,209,128,87,12,195,212,133,159,74,4,161,161,146,140,51,19,79,158,107,231,169,75,204,128,64,105,39,97,21],[35,119,126,209,128,87,12,195,212,133,159,74,4,161,161,146,140,51,19,79,158,107,231,169,75,204,128,64,105,39,97,21],[50,238,34,199,72,75,126,140,239,232,99,113,181,79,223,13,107,237,141,119,16,150,232,87,84,13,15,70,39,215,213,177],[221,124,69,171,192,154,211,46,93,18,187,192,224,113,48,240,150,30,211,34,149,24,181,139,189,211,103,205,222,146,234,56],[11,64,226,143,123,68,6,71,174,214,106,25,120,216,211,186,75,86,153,110,214,152,170,204,170,224,198,182,108,176,6,204],[11,64,226,143,123,68,6,71,174,214,106,25,120,216,211,186,75,86,153,110,214,152,170,204,170,224,198,182,108,176,6,204],[111,239,127,162,248,129,137,158,159,126,218,234,85,164,230,87,38,130,217,199,99,51,16,237,50,215,11,64,171,129,100,97],[111,239,127,162,248,129,137,158,159,126,218,234,85,164,230,87,38,130,217,199,99,51,16,237,50,215,11,64,171,129,100,97],[53,193,78,124,215,85,211,217,191,20,237,34,175,15,25,143,77,149,183,178,89,7,212,81,202,82,212,186,212,134,26,2],[205,21,70,167,73,58,224,39,108,142,73,204,253,195,13,191,68,194,41,75,1,85,112,213,217,48,104,61,118,252,39,41],[250,145,34,60,171,90,7,167,246,24,198,131,175,53,80,53,69,14,80,46,185,100,92,161,146,222,101,113,244,217,179,204],[250,145,34,60,171,90,7,167,246,24,198,131,175,53,80,53,69,14,80,46,185,100,92,161,146,222,101,113,244,217,179,204],[205,58,154,227,101,142,23,158,140,22,132,113,149,207,41,125,65,211,75,113,8,247,137,58,107,127,166,220,163,232,96,222],[205,58,154,227,101,142,23,158,140,22,132,113,149,207,41,125,65,211,75,113,8,247,137,58,107,127,166,220,163,232,96,222]]},{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":0,"Length":802},"Cuts":[[148,180,126,2,64,159,142,0,161,90,93,27,132,221,174,15,169,112,78,221,239,187,223,173,7,217,120,18,14,130,134,142],[28,193,252,11,215,77,170,104,117,90,220,213,66,138,82,213,210,95,240,76,15,147,125,198,110,243,112,117,152,12,126,116],[111,16,247,84,100,229,166,216,29,203,101,36,149,199,133,209,109,117,71,8,192,93,201,220,136,43,241,193,205,50,44,107],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[125,148,119,103,203,90,78,100,174,179,63,78,251,244,147,118,223,236,165,43,109,171,240,143,247,20,100,47,161,4,96,209],[105,77,181,254,49,89,72,145,88,209,69,31,46,135,136,44,155,138,72,33,27,221,150,181,215,246,217,161,139,201,175,34],[127,26,93,71,21,141,193,189,37,243,123,232,246,51,98,111,249,31,251,242,150,223,228,234,163,174,20,150,61,196,41,122],[113,96,128,195,248,93,175,142,142,98,0,209,2,144,24,57,51,187,3,95,69,96,107,74,81,127,106,215,151,33,117,62],[137,213,17,234,43,254,7,130,45,225,199,51,90,189,83,23,252,253,199,159,145,176,129,199,124,231,84,142,223,32,249,69],[137,213,17,234,43,254,7,130,45,225,199,51,90,189,83,23,252,253,199,159,145,176,129,199,124,231,84,142,223,32,249,69],[182,46,247,152,104,75,179,72,85,141,250,163,204,58,6,248,199,211,202,220,70,234,254,91,102,166,120,249,105,11,70,221],[47,236,24,53,92,127,28,218,244,175,52,243,230,186,144,234,89,85,29,141,234,100,218,157,161,141,26,3,166,181,98,88],[30,171,217,173,191,171,197,147,47,12,38,56,30,26,228,3,206,132,154,19,170,243,224,135,247,211,215,34,209,30,240,189],[33,172,219,78,204,50,135,37,79,221,255,213,90,47,117,252,42,160,124,106,204,19,80,134,135,166,7,48,113,181,247,236],[193,12,123,72,11,62,112,89,190,57,231,119,223,34,244,179,13,213,253,49,241,8,130,166,167,149,135,167,192,60,50,33],[193,12,123,72,11,62,112,89,190,57,231,119,223,34,244,179,13,213,253,49,241,8,130,166,167,149,135,167,192,60,50,33],[150,147,177,65,187,59,37,140,15,192,128,195,182,122,60,75,11,123,5,101,246,248,30,213,176,71,253,253,252,30,219,196],[226,186,193,183,139,212,200,35,164,151,224,81,164,22,53,240,59,47,254,192,107,179,236,244,224,11,79,134,235,45,209,183],[149,26,89,208,142,241,234,150,206,18,48,8,5,193,140,44,134,192,230,106,161,249,95,14,133,221,12,233,111,197,133,250],[240,119,131,148,220,143,193,134,145,215,232,246,225,183,5,163,108,90,24,48,124,1,251,82,192,94,59,2,198,206,76,167],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[121,19,101,22,239,176,120,96,88,24,181,217,60,53,253,187,45,0,253,203,195,238,167,34,234,137,32,83,68,233,69,95],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[220,49,174,199,64,192,30,39,155,249,63,116,51,33,40,215,241,229,183,30,95,229,86,147,77,190,57,240,205,171,122,246],[200,65,39,95,255,253,212,16,121,78,213,21,253,25,113,194,124,206,98,125,130,16,19,13,121,28,158,183,253,211,115,175],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[52,66,167,223,149,210,107,153,27,224,162,179,1,52,19,223,247,229,25,74,19,140,69,177,193,247,250,81,87,248,220,232],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[236,160,75,77,176,29,136,103,216,156,182,84,154,64,130,39,216,168,71,147,7,96,226,76,198,49,66,94,159,137,226,225],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[207,19,20,254,135,93,39,85,106,175,24,241,82,42,30,183,11,180,173,248,214,102,208,27,48,16,57,41,227,40,125,191],[232,101,170,79,181,6,163,95,250,190,146,254,254,250,70,228,34,15,194,248,222,78,223,200,88,103,72,91,197,65,81,118],[129,82,0,84,111,244,109,221,126,53,208,57,11,103,247,35,52,167,158,33,139,159,135,180,79,48,211,60,163,177,220,131],[46,38,53,246,66,103,75,151,215,80,30,185,23,230,117,68,103,225,55,25,121,211,4,234,254,141,33,191,180,81,118,108],[46,38,53,246,66,103,75,151,215,80,30,185,23,230,117,68,103,225,55,25,121,211,4,234,254,141,33,191,180,81,118,108],[98,212,111,109,141,213,23,240,169,34,76,103,131,137,27,163,95,58,87,149,164,233,39,118,123,214,58,131,243,108,232,103],[148,119,78,30,238,88,159,166,69,213,149,18,35,75,137,210,222,172,1,87,192,64,2,252,134,105,142,179,190,209,220,106],[148,119,78,30,238,88,159,166,69,213,149,18,35,75,137,210,222,172,1,87,192,64,2,252,134,105,142,179,190,209,220,106],[172,15,75,158,79,66,67,183,76,37,64,87,202,17,227,134,109,211,101,18,54,11,169,239,235,62,53,195,135,157,130,49],[83,123,174,201,105,60,158,100,142,157,56,106,221,112,202,103,230,148,94,166,101,237,29,225,85,50,32,92,47,38,200,88],[195,60,8,57,250,178,84,210,63,231,1,215,112,141,166,95,173,163,83,38,39,251,16,179,59,140,4,39,230,84,104,180],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[58,211,159,99,180,68,117,61,200,0,45,111,86,171,121,223,143,134,46,8,142,183,230,40,131,224,213,226,33,214,11,244],[216,241,126,224,29,83,252,56,225,190,130,109,227,216,232,2,76,142,80,7,28,16,131,102,41,219,82,211,81,154,72,144],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[91,22,203,142,181,227,252,76,114,137,58,156,193,237,82,12,191,209,200,217,108,9,9,162,126,189,210,128,203,215,69,185],[49,173,170,144,242,183,88,1,103,247,60,201,224,184,134,255,249,217,227,252,23,61,219,244,42,242,164,144,245,198,63,163],[243,155,35,24,181,145,92,29,107,122,29,22,218,211,171,112,50,146,190,67,226,50,160,207,79,160,172,144,219,165,126,253],[168,40,178,215,29,135,226,253,195,4,155,182,75,53,95,255,237,49,249,215,230,95,70,212,111,225,81,117,255,129,53,159],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[156,193,24,242,102,67,230,52,40,102,55,174,255,236,140,226,12,81,57,94,43,15,95,33,252,178,116,236,247,109,150,162],[27,112,87,11,39,69,245,8,231,191,161,154,233,187,180,1,57,251,35,31,245,181,146,157,116,238,57,193,127,251,21,173],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[170,247,21,164,175,22,204,215,23,250,100,72,137,149,220,63,45,99,137,158,124,4,102,107,76,161,165,165,18,85,88,62],[77,71,174,161,157,25,205,109,19,99,254,40,234,32,119,93,46,180,129,29,50,21,60,116,125,120,205,234,155,205,195,230],[150,138,3,133,81,76,250,6,228,185,11,16,248,109,22,60,45,59,22,247,164,102,195,147,102,87,206,16,14,10,99,180],[112,153,11,117,15,32,33,109,198,251,40,54,134,38,133,89,240,50,180,117,128,67,229,219,194,191,199,78,26,188,110,115],[112,153,11,117,15,32,33,109,198,251,40,54,134,38,133,89,240,50,180,117,128,67,229,219,194,191,199,78,26,188,110,115],[155,156,161,171,237,117,96,114,41,61,98,229,190,96,39,164,233,7,27,230,123,76,193,121,73,104,211,101,162,24,243,12],[103,242,0,239,104,112,174,113,123,96,225,138,135,157,181,75,199,25,123,245,138,94,38,121,143,223,227,40,200,252,2,6],[103,242,0,239,104,112,174,113,123,96,225,138,135,157,181,75,199,25,123,245,138,94,38,121,143,223,227,40,200,252,2,6],[218,78,113,167,25,99,80,107,9,10,65,165,237,184,243,218,238,15,39,208,156,201,144,84,112,80,36,239,226,230,52,80],[54,234,127,66,30,63,11,228,159,88,174,137,26,250,184,87,129,36,93,124,176,22,38,104,77,112,194,52,207,254,104,99],[83,158,46,62,243,29,177,49,250,212,64,167,233,249,84,233,121,110,220,202,42,101,93,14,128,90,190,85,78,29,112,76],[5,29,39,196,137,114,59,32,23,247,222,83,87,232,206,109,51,104,58,216,170,230,196,202,147,59,204,140,178,133,71,201],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[12,78,48,178,123,20,97,7,224,95,127,126,179,239,81,120,191,242,187,191,150,184,98,194,70,213,236,37,203,241,139,239],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[155,121,52,192,62,129,238,78,57,218,93,47,219,140,71,99,124,150,17,78,2,49,100,11,186,110,113,121,99,221,157,63],[125,194,75,166,118,53,142,126,75,221,27,27,113,192,25,155,126,24,251,247,223,218,145,91,101,215,54,68,91,120,74,54],[200,219,45,113,83,137,155,21,221,223,15,35,142,97,184,132,196,136,75,142,61,102,21,68,72,48,186,176,153,242,154,244],[234,82,11,225,57,185,184,11,245,104,241,25,19,29,210,136,158,123,199,109,215,148,33,228,8,228,165,122,68,247,245,193],[191,201,44,197,143,141,148,76,94,131,255,21,125,164,239,17,126,242,16,77,54,28,187,25,11,110,240,253,210,65,241,86],[191,201,44,197,143,141,148,76,94,131,255,21,125,164,239,17,126,242,16,77,54,28,187,25,11,110,240,253,210,65,241,86],[20,225,221,101,244,93,229,49,223,250,8,244,99,246,221,193,4,116,245,26,185,201,215,101,140,2,59,173,80,171,99,147],[146,57,146,63,6,96,75,111,113,35,204,123,114,171,249,142,12,194,191,180,94,13,164,209,229,240,187,79,240,200,47,220],[146,57,146,63,6,96,75,111,113,35,204,123,114,171,249,142,12,194,191,180,94,13,164,209,229,240,187,79,240,200,47,220],[174,15,171,210,96,176,35,78,58,82,175,97,96,233,210,139,110,16,199,228,141,187,151,234,89,177,146,242,186,6,144,181],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[242,217,237,120,6,233,222,114,23,53,103,167,12,25,16,24,67,196,236,87,92,12,61,69,244,40,242,143,100,1,31,140],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[1,70,234,118,101,15,110,90,214,72,132,211,50,36,251,237,225,206,44,242,83,41,29,172,23,166,9,250,58,42,167,79],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[97,91,32,134,122,255,233,235,50,56,100,80,239,88,227,80,163,101,95,202,40,196,3,173,122,233,77,241,188,180,117,186],[99,70,204,18,91,154,17,133,74,168,31,33,103,2,18,234,55,93,69,24,105,250,189,125,28,113,121,163,48,11,52,71],[99,70,204,18,91,154,17,133,74,168,31,33,103,2,18,234,55,93,69,24,105,250,189,125,28,113,121,163,48,11,52,71],[123,18,63,230,202,188,203,38,11,206,75,25,159,62,212,161,86,104,18,39,20,161,130,204,146,23,109,79,139,208,88,144],[95,80,157,45,84,136,78,16,58,223,230,36,55,255,188,149,231,114,228,244,28,229,250,2,37,211,189,224,41,213,237,157],[214,56,75,111,170,111,131,154,24,38,42,54,96,234,116,175,167,112,255,245,32,79,195,62,185,105,52,2,159,91,5,172],[214,56,75,111,170,111,131,154,24,38,42,54,96,234,116,175,167,112,255,245,32,79,195,62,185,105,52,2,159,91,5,172],[226,50,101,244,10,36,8,231,34,52,86,192,18,248,223,65,88,96,177,113,163,228,174,120,1,59,107,123,168,128,97,255],[226,50,101,244,10,36,8,231,34,52,86,192,18,248,223,65,88,96,177,113,163,228,174,120,1,59,107,123,168,128,97,255],[10,102,102,78,157,225,111,209,6,111,37,41,201,77,161,4,44,194,192,175,178,27,253,26,161,140,172,53,43,43,15,251],[108,52,164,15,140,199,69,243,53,120,36,237,94,105,96,198,7,98,200,247,248,62,161,88,160,70,34,4,115,84,209,171],[141,190,221,114,129,107,29,106,26,129,47,185,17,169,98,122,135,131,250,154,170,111,230,239,147,166,143,143,53,16,193,201],[141,190,221,114,129,107,29,106,26,129,47,185,17,169,98,122,135,131,250,154,170,111,230,239,147,166,143,143,53,16,193,201],[24,40,28,103,13,36,144,79,186,146,21,2,95,121,131,48,103,152,107,70,155,156,110,230,136,176,105,31,97,250,225,23],[26,43,175,140,61,169,211,161,145,161,50,44,115,34,25,122,174,151,46,166,25,74,8,205,29,135,210,61,211,163,38,222],[53,57,18,128,109,47,99,106,158,3,208,165,139,14,139,239,46,64,237,112,100,165,81,245,15,221,38,253,236,152,105,170],[170,248,214,145,165,35,102,48,100,83,76,179,232,63,40,44,119,91,166,93,67,27,178,221,82,166,239,144,62,235,188,210],[62,149,231,85,215,53,222,32,119,214,152,247,62,222,243,136,51,52,110,243,157,105,32,0,170,149,83,63,121,3,76,147],[62,149,231,85,215,53,222,32,119,214,152,247,62,222,243,136,51,52,110,243,157,105,32,0,170,149,83,63,121,3,76,147],[128,59,160,239,129,247,52,87,33,225,236,164,183,163,7,1,199,248,1,151,195,17,251,101,223,139,144,230,96,200,195,2],[128,59,160,239,129,247,52,87,33,225,236,164,183,163,7,1,199,248,1,151,195,17,251,101,223,139,144,230,96,200,195,2],[218,15,102,142,21,224,172,54,154,207,118,154,12,10,32,124,31,1,194,4,230,132,120,120,137,246,239,81,129,191,103,50],[162,200,215,170,101,74,239,117,178,226,101,17,102,88,145,50,88,83,200,99,191,145,221,21,55,70,13,89,146,85,147,33],[162,200,215,170,101,74,239,117,178,226,101,17,102,88,145,50,88,83,200,99,191,145,221,21,55,70,13,89,146,85,147,33],[35,203,93,215,101,18,81,129,153,160,137,163,102,74,230,142,75,113,55,206,95,241,146,82,47,124,39,72,130,214,236,111],[35,203,93,215,101,18,81,129,153,160,137,163,102,74,230,142,75,113,55,206,95,241,146,82,47,124,39,72,130,214,236,111],[32,85,214,123,165,236,254,232,245,125,181,224,226,54,87,72,77,24,235,239,157,106,21,20,54,166,214,174,130,194,150,158],[57,235,192,24,150,83,225,146,162,170,207,55,41,59,215,206,88,255,56,71,87,138,101,154,71,110,71,212,98,57,51,241],[57,235,192,24,150,83,225,146,162,170,207,55,41,59,215,206,88,255,56,71,87,138,101,154,71,110,71,212,98,57,51,241],[146,71,39,128,238,254,227,237,69,105,217,30,96,244,200,69,85,208,83,55,244,46,221,214,93,123,58,72,70,95,227,5],[146,71,39,128,238,254,227,237,69,105,217,30,96,244,200,69,85,208,83,55,244,46,221,214,93,123,58,72,70,95,227,5],[55,147,37,227,49,102,45,80,239,85,100,78,115,233,199,177,205,114,12,217,189,35,95,138,24,148,58,96,187,238,126,24],[180,221,198,254,112,88,4,23,231,213,205,209,113,167,189,3,242,242,42,52,213,241,68,54,119,155,1,119,9,102,163,229],[180,221,198,254,112,88,4,23,231,213,205,209,113,167,189,3,242,242,42,52,213,241,68,54,119,155,1,119,9,102,163,229],[73,25,46,212,43,191,0,53,229,203,110,236,15,22,247,66,110,22,21,246,37,15,95,15,197,48,147,232,165,98,240,202],[73,25,46,212,43,191,0,53,229,203,110,236,15,22,247,66,110,22,21,246,37,15,95,15,197,48,147,232,165,98,240,202],[156,181,240,111,76,97,203,76,61,150,5,63,32,184,101,202,189,214,134,199,215,171,127,197,26,227,238,207,188,133,68,104],[47,78,249,52,113,18,35,3,133,46,134,64,22,176,93,184,133,205,55,90,155,226,125,247,66,224,92,132,250,140,253,189],[47,78,249,52,113,18,35,3,133,46,134,64,22,176,93,184,133,205,55,90,155,226,125,247,66,224,92,132,250,140,253,189],[167,149,1,76,199,216,167,18,63,161,14,237,49,4,86,215,108,212,39,192,27,107,44,198,159,15,255,73,106,21,75,10],[167,149,1,76,199,216,167,18,63,161,14,237,49,4,86,215,108,212,39,192,27,107,44,198,159,15,255,73,106,21,75,10],[194,74,168,55,166,187,72,124,58,248,199,177,9,235,114,28,179,132,207,76,36,249,229,185,48,21,15,96,185,3,145,155],[78,223,198,139,7,27,69,189,45,10,28,238,131,61,60,125,4,243,192,142,48,152,132,21,101,133,237,158,183,59,194,120],[78,223,198,139,7,27,69,189,45,10,28,238,131,61,60,125,4,243,192,142,48,152,132,21,101,133,237,158,183,59,194,120],[22,176,64,66,249,1,151,88,36,185,96,226,3,224,167,5,137,193,14,155,56,53,66,71,151,112,51,131,128,128,78,230],[22,176,64,66,249,1,151,88,36,185,96,226,3,224,167,5,137,193,14,155,56,53,66,71,151,112,51,131,128,128,78,230],[189,249,198,163,37,123,247,34,30,108,185,103,65,42,215,204,25,101,167,75,190,186,250,18,166,243,220,119,132,95,217,35],[174,18,51,231,43,140,217,218,219,252,228,159,40,89,163,45,252,185,152,249,189,118,231,136,12,103,55,8,182,127,11,188],[174,18,51,231,43,140,217,218,219,252,228,159,40,89,163,45,252,185,152,249,189,118,231,136,12,103,55,8,182,127,11,188],[230,32,72,140,68,82,211,5,74,194,115,173,18,176,246,31,122,51,79,121,45,168,9,85,42,70,10,106,28,94,140,194],[230,32,72,140,68,82,211,5,74,194,115,173,18,176,246,31,122,51,79,121,45,168,9,85,42,70,10,106,28,94,140,194],[220,123,125,151,83,154,62,174,249,175,240,25,52,88,80,205,206,244,233,97,71,140,248,47,40,178,52,180,119,54,217,9],[35,119,126,209,128,87,12,195,212,133,159,74,4,161,161,146,140,51,19,79,158,107,231,169,75,204,128,64,105,39,97,21],[35,119,126,209,128,87,12,195,212,133,159,74,4,161,161,146,140,51,19,79,158,107,231,169,75,204,128,64,105,39,97,21],[50,238,34,199,72,75,126,140,239,232,99,113,181,79,223,13,107,237,141,119,16,150,232,87,84,13,15,70,39,215,213,177],[221,124,69,171,192,154,211,46,93,18,187,192,224,113,48,240,150,30,211,34,149,24,181,139,189,211,103,205,222,146,234,56],[11,64,226,143,123,68,6,71,174,214,106,25,120,216,211,186,75,86,153,110,214,152,170,204,170,224,198,182,108,176,6,204],[11,64,226,143,123,68,6,71,174,214,106,25,120,216,211,186,75,86,153,110,214,152,170,204,170,224,198,182,108,176,6,204],[111,239,127,162,248,129,137,158,159,126,218,234,85,164,230,87,38,130,217,199,99,51,16,237,50,215,11,64,171,129,100,97],[111,239,127,162,248,129,137,158,159,126,218,234,85,164,230,87,38,130,217,199,99,51,16,237,50,215,11,64,171,129,100,97],[53,193,78,124,215,85,211,217,191,20,237,34,175,15,25,143,77,149,183,178,89,7,212,81,202,82,212,186,212,134,26,2],[205,21,70,167,73,58,224,39,108,142,73,204,253,195,13,191,68,194,41,75,1,85,112,213,217,48,104,61,118,252,39,41],[250,145,34,60,171,90,7,167,246,24,198,131,175,53,80,53,69,14,80,46,185,100,92,161,146,222,101,113,244,217,179,204],[250,145,34,60,171,90,7,167,246,24,198,131,175,53,80,53,69,14,80,46,185,100,92,161,146,222,101,113,244,217,179,204],[205,58,154,227,101,142,23,158,140,22,132,113,149,207,41,125,65,211,75,113,8,247,137,58,107,127,166,220,163,232,96,222],[205,58,154,227,101,142,23,158,140,22,132,113,149,207,41,125,65,211,75,113,8,247,137,58,107,127,166,220,163,232,96,222]]},"StartState":{"machineHash":[30,156,203,57,12,21,160,132,214,149,173,47,232,59,39,188,98,18,202,18,2,19,242,118,159,227,159,107,163,137,154,23],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":0,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"SegmentToChallenge":0,"InconsistentSegment":{"Start":0,"Length":4},"SubCuts":[[148,180,126,2,64,159,142,0,161,90,93,27,132,221,174,15,169,112,78,221,239,187,223,173,7,217,120,18,14,130,134,142],[223,60,26,1,235,1,55,55,252,219,90,48,22,250,64,231,75,14,158,183,189,195,159,219,38,52,254,209,238,199,138,146],[77,242,182,220,63,6,103,174,16,3,166,217,66,117,234,3,102,138,64,156,89,49,16,79,207,184,30,34,25,18,61,132],[251,200,246,63,249,23,132,122,136,18,5,132,75,53,156,100,97,181,43,41,95,188,29,47,240,238,208,163,2,194,248,233],[251,200,246,63,249,23,132,122,136,18,5,132,75,53,156,100,97,181,43,41,95,188,29,47,240,238,208,163,2,194,248,233]]},{"Kind":"OneStepProof","Assertion":{"beforeState":{"machineHash":[30,156,203,57,12,21,160,132,214,149,173,47,232,59,39,188,98,18,202,18,2,19,242,118,159,227,159,107,163,137,154,23],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":0,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"afterState":{"machineHash":[222,173,190,239,166,222,9,150,22,37,169,101,177,62,15,155,152,97,192,255,208,179,119,9,58,237,211,208,150,138,15,103],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":802,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},"PrevBisection":{"ChallengedSegment":{"Start":0,"Length":4},"Cuts":[[148,180,126,2,64,159,142,0,161,90,93,27,132,221,174,15,169,112,78,221,239,187,223,173,7,217,120,18,14,130,134,142],[223,60,26,1,235,1,55,55,252,219,90,48,22,250,64,231,75,14,158,183,189,195,159,219,38,52,254,209,238,199,138,146],[77,242,182,220,63,6,103,174,16,3,166,217,66,117,234,3,102,138,64,156,89,49,16,79,207,184,30,34,25,18,61,132],[251,200,246,63,249,23,132,122,136,18,5,132,75,53,156,100,97,181,43,41,95,188,29,47,240,238,208,163,2,194,248,233],[251,200,246,63,249,23,132,122,136,18,5,132,75,53,156,100,97,181,43,41,95,188,29,47,240,238,208,163,2,194,248,233]]},"SegmentToChallenge":0,"ChallengedSegment":{"Start":0,"Length":1},"PreviousCut":{"machineHash":[30,156,203,57,12,21,160,132,214,149,173,47,232,59,39,188,98,18,202,18,2,19,242,118,159,227,159,107,163,137,154,23],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":0,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"ProofData":"0x3200003fa4cbbe38c37891797d10d59d003d85ea1abe9e79a4099cfacd6192338508a3bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a0000000000000000000000000000000000000000000000000000000000000001bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a000000000000000000000000000000000000000000000000000000000000000102bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a000000000000000000000000000000000000000000000000000000000000000102bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a0000000000000000000000000000000000000000000000000000000000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb4c00615f95dc249934075fcc669947596baf6e070ac80a59f79dae98aa932f000","BufferProofData":"0x"},null,null,null,null,null,null,null,null,null,null,{"Kind":"Timeout"}],"AsserterError":null} \ No newline at end of file diff --git a/packages/arb-bridge-eth/test/challenges/TestChallengeToOSPWithMessage.json b/packages/arb-bridge-eth/test/challenges/TestChallengeToOSPWithMessage.json index a5367a7291..1f010452e6 100755 --- a/packages/arb-bridge-eth/test/challenges/TestChallengeToOSPWithMessage.json +++ b/packages/arb-bridge-eth/test/challenges/TestChallengeToOSPWithMessage.json @@ -1 +1 @@ -{"ChallengedAssertion":{"beforeState":{"machineHash":[240,192,227,118,84,230,156,203,61,223,23,132,232,48,159,241,229,133,210,100,96,157,71,163,141,174,30,29,197,65,193,214],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":766873,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"afterState":{"machineHash":[222,173,190,239,26,158,255,82,238,77,82,93,135,94,59,41,57,223,67,92,158,68,231,247,8,33,172,61,160,6,57,103],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":835637,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]}},"Messages":[{"Kind":11,"Sender":"0x9be6b9f6b0ec4ad126c429961f3951773f7381b7","InboxSeqNum":0,"GasPrice":589250589,"Data":"0xece83efd40ff2c9c69c406a49cbd4e7019fc5807db782ea78e3ee698923a412c000000000000000000000000000000000000000000000000000000000000000344edde536e3f4df60ef7ec43bc928f7438fa9804cb64ef42045ab4781bbc0bb300000000000000000000000000000000000000000000000000000000000000001567aa7175e04611d194275bb504cc64e920959dd01df9d86ab047367aa4c53400000000000000000000000035248943dcb4b8e5dbbb67d1f7d3ab1bc36ce9a8","ChainTime":{"BlockNum":4,"Timestamp":40}}],"Moves":[{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":766873,"Length":68764},"Cuts":[[96,0,95,40,141,16,235,22,130,222,209,47,56,193,177,5,33,39,241,90,21,244,104,117,98,142,41,140,30,72,195,149],[7,66,129,137,192,172,243,77,32,64,172,41,58,41,212,31,232,39,164,183,246,93,202,74,87,173,38,161,132,233,204,198]]},"StartState":{"machineHash":[240,192,227,118,84,230,156,203,61,223,23,132,232,48,159,241,229,133,210,100,96,157,71,163,141,174,30,29,197,65,193,214],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":766873,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"SegmentToChallenge":0,"InconsistentSegment":{"Start":766873,"Length":68764},"SubCuts":[[96,0,95,40,141,16,235,22,130,222,209,47,56,193,177,5,33,39,241,90,21,244,104,117,98,142,41,140,30,72,195,149],[65,103,65,37,116,27,60,47,143,173,137,115,54,114,39,148,133,18,25,68,107,141,29,223,131,131,64,149,236,231,66,226],[54,162,42,138,45,141,237,157,184,150,218,29,109,82,19,48,32,238,248,131,238,101,197,121,158,123,109,103,110,45,158,107],[159,232,79,68,64,109,189,237,151,253,89,51,49,3,144,24,172,32,240,19,63,155,75,47,230,130,62,250,27,72,210,69],[134,164,118,69,139,234,74,74,69,38,196,172,80,173,190,151,170,33,181,122,146,107,167,230,203,224,102,251,5,131,89,145],[24,87,91,185,61,235,143,236,211,65,103,81,159,206,33,171,88,37,183,153,212,69,152,135,17,225,70,223,46,4,102,124],[183,215,35,118,133,171,228,45,130,130,79,82,127,20,64,207,157,255,84,126,149,181,109,250,92,243,23,21,119,59,125,99],[226,164,102,58,162,71,170,217,153,200,188,153,233,121,135,53,70,137,10,195,223,72,206,166,90,230,125,177,189,51,249,248],[161,239,112,21,227,243,85,199,99,90,144,71,153,122,188,127,255,69,181,239,160,180,58,178,23,145,97,16,46,124,106,163],[225,191,33,160,30,174,165,154,39,169,72,120,7,150,57,2,28,147,239,192,0,128,228,32,131,241,176,216,85,245,15,131],[59,225,75,253,151,224,190,17,209,176,232,212,111,121,128,122,8,117,108,50,240,72,210,209,52,252,110,33,184,159,145,130],[103,117,194,243,84,254,93,159,118,42,163,81,170,6,200,104,132,241,38,71,2,180,121,47,18,139,43,151,57,199,29,246],[132,19,140,246,129,51,236,219,35,164,40,238,34,78,235,23,240,241,72,190,101,151,87,38,149,202,140,222,170,64,169,153],[38,123,232,169,73,118,153,185,117,193,53,254,71,66,231,196,113,28,84,166,136,165,104,85,200,164,79,23,64,150,15,112],[230,71,178,88,135,241,93,238,33,120,175,120,221,125,42,27,178,46,240,81,237,113,134,97,218,142,43,106,181,44,8,1],[60,110,175,124,207,173,60,168,25,7,146,183,206,129,158,168,30,101,30,206,170,52,141,205,176,97,211,216,185,156,95,237],[252,37,234,31,65,30,65,146,226,21,103,128,102,163,185,130,192,64,26,83,216,41,190,83,184,58,123,164,83,151,243,51],[115,3,232,225,41,160,248,174,15,91,182,148,104,69,46,28,27,133,15,4,95,220,75,110,173,136,72,2,165,54,46,64],[182,105,62,36,28,15,199,206,254,28,205,122,24,14,227,153,117,92,19,23,30,225,62,217,151,4,124,241,199,225,37,1],[165,63,28,78,233,194,12,160,34,122,19,47,130,175,194,172,110,104,152,223,106,149,122,252,4,95,143,92,129,131,49,56],[54,168,159,106,44,121,88,61,184,197,203,198,40,22,59,90,95,10,6,226,139,47,119,176,118,74,41,64,57,41,34,44],[4,241,150,53,246,207,131,75,101,1,234,67,227,107,102,167,1,81,186,146,58,238,187,187,92,25,222,187,28,163,168,189],[227,140,168,9,254,93,155,94,88,181,202,208,177,213,0,113,154,133,100,1,250,214,111,59,217,13,40,147,71,151,10,139],[108,4,42,15,40,124,21,137,119,16,116,11,16,59,245,72,94,127,14,255,199,140,103,60,79,192,0,35,93,137,132,42],[159,188,66,165,94,195,45,206,98,162,142,60,73,205,5,75,34,106,196,10,242,24,209,189,25,238,22,250,215,110,131,195],[66,218,16,62,118,3,109,130,130,51,104,114,88,248,228,232,154,7,90,52,101,143,60,52,246,190,11,49,107,188,186,214],[85,197,56,239,59,140,38,241,168,102,19,45,194,136,170,208,124,242,199,78,193,146,61,157,245,12,239,190,176,58,13,114],[46,154,163,180,201,15,119,74,134,65,17,87,71,222,86,243,93,126,153,8,97,252,204,18,159,157,133,168,81,155,171,75],[37,105,235,55,67,172,188,169,107,4,173,11,20,32,117,33,104,142,99,52,15,19,132,210,128,241,43,248,87,252,27,168],[0,138,210,6,205,222,142,53,188,109,211,50,137,74,252,170,224,212,127,143,97,40,36,52,248,219,234,20,243,219,189,172],[37,96,221,109,31,135,105,214,242,234,167,255,67,232,59,126,4,170,114,97,245,203,98,246,200,142,194,29,229,78,35,142],[181,233,233,190,33,172,148,227,140,19,33,236,38,247,212,43,187,5,239,184,163,35,208,37,81,160,156,129,67,174,24,230],[180,153,248,48,248,189,70,68,103,30,133,28,79,8,174,72,223,239,48,21,159,62,98,219,165,136,139,62,59,83,55,211],[219,159,52,58,12,72,41,237,209,17,111,210,183,142,250,183,139,77,22,245,4,243,26,238,95,185,103,219,226,13,112,229],[122,208,82,197,179,194,108,63,85,71,10,11,134,46,148,48,219,148,156,111,5,177,225,166,22,168,25,167,47,231,13,136],[142,185,177,43,66,114,188,176,208,116,26,74,171,154,225,76,190,22,116,140,1,189,246,198,72,247,138,165,107,136,32,25],[39,158,18,189,75,214,17,132,118,52,200,54,255,111,109,8,174,186,55,154,87,163,222,57,141,245,32,66,138,83,89,135],[212,217,217,26,7,193,107,157,182,191,72,232,213,203,161,95,120,191,28,116,36,222,89,220,104,128,45,115,112,44,196,223],[101,28,246,9,5,137,176,78,129,184,30,111,97,252,84,215,59,131,201,137,150,184,49,192,10,87,150,15,131,245,82,20],[35,218,14,240,146,155,244,85,231,124,9,141,225,136,195,208,191,27,67,208,29,239,101,70,168,87,81,99,115,133,189,216],[33,126,130,252,81,135,199,195,58,68,109,234,253,18,167,147,232,116,245,77,153,174,2,5,252,79,0,157,148,210,23,116],[157,24,222,166,41,90,104,179,3,185,112,93,38,52,153,206,19,58,108,169,2,246,121,113,57,64,129,171,162,133,73,34],[24,16,216,12,64,197,191,132,240,125,208,186,147,43,1,84,109,185,223,101,129,19,231,5,159,11,239,254,211,237,233,106],[45,77,204,73,210,209,21,88,169,99,31,141,189,150,156,234,230,3,206,37,76,111,85,20,125,111,128,227,210,1,222,63],[39,64,35,158,37,192,62,227,36,4,164,219,112,164,155,219,3,212,134,51,5,165,153,20,93,69,236,146,158,38,224,103],[107,216,206,26,188,218,18,83,2,189,210,160,2,130,231,75,42,95,57,75,39,131,96,168,24,112,79,249,38,224,197,23],[24,7,106,85,88,9,65,202,10,159,109,15,59,143,12,244,126,217,1,89,202,157,40,150,1,222,169,252,73,239,50,112],[13,116,15,244,112,176,113,74,230,1,95,101,78,5,238,148,85,11,81,129,157,86,90,214,249,132,44,111,209,76,203,133],[221,157,249,95,234,223,76,62,147,159,184,197,57,127,161,176,182,89,42,168,83,47,81,109,173,124,194,244,57,37,213,196],[86,13,118,164,194,57,240,125,177,81,101,129,40,52,140,106,43,207,233,172,111,112,67,180,127,43,64,184,14,218,2,211],[73,235,156,38,3,91,182,67,82,147,114,238,113,36,122,201,13,244,238,60,224,67,80,79,212,182,57,128,185,240,38,166],[46,3,115,64,13,182,132,187,141,49,110,37,249,191,153,152,70,34,225,132,83,54,57,21,13,211,227,157,115,194,62,3],[56,99,110,173,250,158,115,63,211,215,225,20,102,131,69,115,111,37,40,116,178,136,107,239,187,56,213,107,208,40,207,211],[78,177,249,112,205,196,28,209,171,194,115,108,142,101,21,187,2,99,49,28,213,140,182,101,103,222,188,68,79,191,217,175],[134,194,5,248,248,5,77,202,173,241,191,27,153,48,22,12,127,88,48,205,160,198,202,58,62,43,73,93,64,130,254,224],[117,177,152,212,177,148,183,161,203,65,174,19,37,206,233,202,39,236,82,188,232,238,212,173,244,208,130,148,32,32,122,224],[75,68,46,13,206,25,139,5,73,98,13,89,122,207,82,85,123,124,65,64,19,140,104,238,43,241,187,188,79,129,244,141],[241,30,225,22,101,184,73,121,121,112,112,31,255,81,140,16,28,154,148,29,148,146,163,44,12,151,177,4,110,27,32,6],[22,97,157,63,29,203,163,41,26,33,127,147,45,135,187,102,37,221,191,114,244,222,156,42,154,28,47,218,228,52,202,59],[49,212,66,41,219,83,26,174,15,182,191,172,254,40,194,213,9,48,14,6,234,33,148,95,201,234,200,169,56,24,74,48],[235,101,114,188,9,168,199,18,147,75,21,132,202,87,166,230,213,63,110,206,66,172,62,156,159,105,8,18,194,119,171,64],[102,2,117,160,117,49,202,71,214,15,47,14,150,152,85,4,11,62,163,186,129,72,60,62,145,67,110,130,21,177,143,3],[11,31,167,175,127,50,94,62,133,152,149,223,193,39,77,210,235,46,24,200,17,200,91,220,106,217,45,112,45,98,248,134],[117,33,250,213,188,98,86,11,134,244,252,12,87,250,42,203,1,9,241,240,249,222,5,16,110,88,226,14,35,179,163,55],[117,161,127,199,14,41,44,212,175,99,87,37,113,114,199,164,55,111,28,51,249,150,43,137,248,136,218,27,180,133,77,244],[121,83,41,35,8,144,157,151,58,91,223,170,243,60,28,209,207,85,22,147,236,3,227,163,138,73,17,245,219,166,61,121],[182,192,82,175,0,237,58,21,106,41,121,115,11,133,152,198,96,206,107,19,32,216,32,143,194,41,178,115,18,69,104,117],[130,96,62,17,11,203,105,134,60,208,216,206,11,51,141,209,109,38,122,49,230,3,132,58,202,188,247,254,241,172,69,114],[141,108,21,96,31,87,244,197,218,207,174,1,214,40,61,29,152,104,108,0,180,149,198,25,234,195,179,157,110,140,74,17],[186,153,141,113,1,79,200,24,103,160,99,26,174,101,201,216,162,119,1,158,12,92,226,26,82,122,20,255,159,88,208,115],[104,85,21,134,21,32,226,250,193,221,237,100,146,81,178,64,169,117,231,131,241,178,192,123,5,8,247,149,210,206,46,187],[9,144,210,143,108,196,228,206,243,164,5,55,239,37,175,246,107,34,3,25,245,73,61,42,72,86,75,110,80,188,214,85],[193,177,210,118,54,155,166,173,184,3,201,242,196,243,51,246,255,107,248,197,152,195,213,158,136,149,92,252,103,245,151,31],[125,187,89,240,89,48,111,178,15,45,221,6,143,5,218,46,44,25,119,191,110,72,253,192,1,24,236,29,181,7,102,93],[216,159,50,145,246,137,189,40,154,69,57,22,89,246,222,29,48,3,57,29,170,156,36,126,183,158,123,149,172,171,38,123],[87,242,148,227,107,65,36,6,210,38,62,237,230,109,41,226,100,200,175,140,98,22,213,23,132,125,116,16,78,133,180,236],[205,111,4,182,108,27,224,61,36,23,186,113,189,98,145,213,91,94,237,94,126,163,184,143,232,251,120,238,226,190,213,166],[143,82,249,9,49,240,85,121,141,197,93,76,25,179,146,142,53,31,16,47,246,35,38,40,82,151,23,168,121,195,241,154],[166,18,250,170,78,255,203,85,178,48,25,76,43,207,159,210,191,61,244,209,137,13,199,12,162,199,196,172,78,222,0,71],[222,120,118,179,24,59,32,226,91,205,130,15,215,174,188,231,101,132,72,150,220,111,127,64,138,109,72,41,10,181,230,132],[32,67,46,1,82,111,123,220,124,181,244,191,142,21,53,193,154,40,157,105,240,32,112,104,115,62,248,137,111,118,136,115],[247,174,190,137,148,140,154,102,108,122,38,12,21,138,153,178,36,229,214,198,243,230,39,234,175,95,157,53,236,250,81,22],[183,210,57,181,250,124,23,203,97,155,227,11,128,125,149,186,102,77,151,185,8,57,37,134,41,182,8,106,136,209,241,52],[83,51,38,159,38,233,111,74,212,150,147,244,152,79,235,85,109,245,219,156,247,3,146,125,38,197,8,137,98,253,42,80],[12,135,100,194,19,230,166,244,82,69,73,149,180,24,203,206,154,120,16,116,198,180,243,172,231,235,80,57,7,68,187,224],[92,102,240,250,243,194,137,104,20,229,143,123,9,163,201,83,191,152,141,130,234,178,84,233,110,40,119,172,170,214,2,217],[22,188,43,165,230,91,62,123,72,100,210,83,94,121,184,215,211,196,186,72,13,153,52,208,78,137,133,118,79,178,224,57],[173,59,232,5,138,255,11,72,76,67,82,94,92,15,244,222,111,6,227,135,77,210,218,36,65,128,218,148,224,236,19,199],[101,83,164,70,180,107,106,185,204,24,81,144,202,208,169,120,26,120,229,162,113,101,142,146,42,17,220,147,81,217,228,170],[137,239,222,90,198,68,215,47,48,27,251,57,36,36,93,0,236,254,240,217,119,59,249,150,224,58,130,20,137,207,38,121],[117,40,101,177,114,83,193,232,193,30,124,123,182,239,140,47,189,139,107,28,17,138,213,221,119,169,234,212,29,217,157,100],[4,245,85,83,183,194,189,192,193,161,239,83,154,146,176,87,8,144,230,143,57,142,202,156,5,127,43,165,46,69,164,32],[109,43,86,172,228,4,206,236,102,51,56,215,142,108,22,62,87,229,165,39,167,61,207,96,89,100,192,165,115,68,184,166],[197,245,5,214,36,42,227,194,68,161,102,60,176,231,217,220,5,140,121,66,198,231,4,215,156,9,123,124,43,240,173,55],[245,96,184,173,80,78,197,164,190,1,152,193,243,111,27,248,9,116,215,78,229,226,53,57,30,145,120,253,118,207,67,54],[14,111,99,141,135,174,211,80,24,69,224,93,248,41,34,67,141,96,201,94,98,98,209,219,49,36,44,121,210,239,155,248],[86,18,245,82,222,98,145,254,210,3,154,91,132,188,247,96,95,161,88,229,82,32,209,223,13,41,242,120,243,221,19,68],[108,220,209,234,152,32,99,49,190,242,33,61,195,228,32,73,122,218,50,6,196,73,41,169,168,242,124,2,186,246,200,116],[94,166,106,15,93,70,93,35,188,250,71,65,226,145,219,181,231,173,87,102,215,151,87,36,12,168,106,59,16,184,43,91],[170,59,59,72,123,92,210,122,203,239,131,181,135,232,103,167,128,124,66,145,145,49,184,236,145,170,218,176,129,49,254,67],[0,108,99,163,48,93,218,30,188,161,214,110,140,67,32,81,63,207,9,249,253,223,193,195,33,232,137,53,196,248,73,29],[231,237,78,209,55,208,45,217,44,68,105,59,245,253,20,113,124,10,90,112,1,118,129,229,94,4,48,252,65,33,65,240],[72,101,233,28,27,29,9,236,196,126,187,4,223,62,225,226,236,64,70,232,123,123,154,71,200,27,167,228,206,52,177,79],[16,2,14,152,231,231,219,28,22,128,77,215,181,47,205,133,164,18,66,133,55,53,182,198,150,241,247,207,244,77,142,155],[153,49,88,50,47,55,171,185,130,11,10,145,160,167,44,132,114,163,46,149,60,166,192,164,37,148,1,0,81,51,176,169],[182,158,12,154,47,191,143,34,253,224,173,207,102,88,34,136,23,69,76,115,2,217,42,20,80,217,207,69,100,2,248,85],[13,96,65,153,53,202,12,242,218,62,239,86,138,196,240,220,233,210,165,229,81,185,238,63,182,19,55,35,20,213,67,219],[216,229,217,251,240,19,226,111,209,160,32,17,64,25,217,241,187,234,132,148,77,190,209,249,52,237,255,95,138,140,83,41],[253,166,35,185,121,166,52,228,79,65,235,124,69,13,3,130,126,55,31,175,70,136,25,37,196,103,43,144,146,226,176,174],[111,144,165,251,212,159,213,45,38,174,96,59,172,255,34,146,249,186,152,205,255,9,86,231,120,214,185,101,182,42,46,108],[101,13,79,206,232,70,133,253,115,49,188,114,41,110,43,61,232,238,152,225,195,214,174,150,7,137,162,33,18,97,238,72],[152,62,53,17,207,21,222,125,137,49,253,90,56,202,5,7,26,52,73,211,46,103,138,224,178,123,224,153,155,116,35,2],[155,36,105,217,60,130,249,13,30,197,91,210,26,171,19,6,6,85,48,36,159,154,35,73,202,33,192,121,58,88,83,34],[170,129,154,56,109,253,176,103,40,15,101,199,224,132,158,65,242,20,126,128,194,163,173,185,29,90,79,162,8,117,27,50],[104,28,152,193,53,84,158,137,141,209,15,145,27,21,127,220,115,127,132,161,216,31,180,95,215,245,186,49,146,9,30,28],[10,78,89,21,117,165,26,4,110,202,226,190,140,251,126,107,149,68,90,44,82,96,4,32,15,149,221,42,247,200,218,12],[105,104,7,223,230,196,63,52,197,216,244,23,215,40,75,6,99,80,224,80,75,70,175,86,100,123,76,140,214,208,251,74],[141,227,14,103,241,176,138,22,144,103,177,182,165,79,228,168,136,221,186,104,101,44,81,96,209,196,212,30,62,170,193,101],[132,68,32,218,187,193,235,158,51,167,157,157,96,79,58,95,37,159,239,40,176,32,148,39,65,7,42,88,200,208,101,15],[88,183,249,149,246,106,126,200,170,241,246,92,131,236,144,140,10,148,233,212,10,60,80,139,142,171,51,4,94,65,154,188],[232,44,163,1,249,67,11,167,236,89,180,124,171,13,93,236,120,84,200,94,244,215,120,154,165,12,198,248,100,15,80,24],[76,184,198,182,26,146,159,175,21,53,199,173,150,104,40,221,126,149,255,153,188,254,5,225,233,18,25,84,153,149,216,54],[110,96,50,229,211,110,249,246,71,161,6,9,17,6,146,17,248,136,102,234,127,32,252,181,75,158,12,111,68,213,243,94],[220,72,109,147,222,111,158,122,139,104,123,127,49,127,175,222,169,34,179,141,137,168,149,225,133,166,42,208,77,125,251,120],[159,205,159,118,237,217,100,68,94,221,92,226,118,175,22,53,26,212,221,81,47,65,105,252,88,207,142,62,12,133,220,87],[45,220,114,65,195,192,131,218,157,87,126,86,170,211,82,149,196,219,62,100,46,237,182,184,181,181,193,241,3,125,40,196],[47,186,58,231,212,212,227,60,165,47,49,182,154,122,145,127,32,226,188,209,253,1,212,73,236,159,188,201,31,214,6,62],[239,229,249,151,250,237,231,222,253,27,157,221,135,92,247,138,60,92,205,242,156,253,177,156,236,12,118,250,72,70,164,92],[149,99,244,89,169,167,228,217,105,178,91,217,175,141,18,67,79,8,16,201,132,192,247,226,202,250,186,92,30,57,24,223],[236,39,129,146,241,57,146,250,173,146,187,228,232,203,42,147,29,205,157,64,17,75,88,10,136,158,63,40,71,69,129,63],[222,242,149,87,126,74,40,31,63,28,49,95,112,233,205,248,197,49,116,253,166,191,173,109,185,65,234,44,253,42,144,244],[119,37,210,68,202,28,171,7,50,118,15,242,255,53,237,52,8,238,3,205,137,118,187,7,143,148,2,65,205,118,117,10],[225,147,115,253,189,215,245,51,133,123,232,201,222,155,29,80,231,83,21,161,96,129,115,129,160,137,33,69,218,76,129,127],[77,200,51,152,123,122,176,174,64,248,30,148,200,76,78,188,163,84,123,38,102,129,126,226,24,180,96,231,79,44,235,58],[229,223,29,35,139,180,186,243,191,78,70,246,145,239,250,207,160,139,91,151,95,112,219,254,26,113,82,209,49,170,94,167],[112,236,179,15,215,200,229,253,253,48,237,100,111,253,24,165,205,205,141,122,205,87,78,124,83,125,81,210,122,83,86,223],[40,90,131,121,93,152,49,221,222,115,124,44,98,229,107,251,16,42,7,7,3,67,9,91,132,104,96,101,22,9,202,57],[123,53,183,153,75,253,63,87,182,62,53,108,190,117,64,209,58,223,189,196,109,162,175,142,23,96,32,205,138,238,161,1],[114,122,75,238,145,70,233,71,217,54,118,210,67,180,135,187,103,185,173,181,16,164,44,187,109,32,146,251,130,175,8,221],[5,116,6,96,156,66,10,15,152,187,73,22,8,76,31,251,145,29,153,40,137,30,59,74,249,17,53,225,250,157,221,181],[217,173,155,0,122,54,177,218,192,163,169,183,180,51,172,223,33,210,92,127,144,212,153,11,224,91,111,217,18,211,15,110],[15,244,183,139,51,200,101,150,127,248,154,154,1,237,78,12,207,200,104,114,111,72,187,118,172,234,97,134,137,83,162,227],[158,30,44,208,182,96,207,166,209,27,164,224,247,100,225,14,94,206,194,54,205,138,44,177,203,92,139,173,183,188,120,151],[74,195,100,192,0,149,56,240,234,73,234,78,230,108,36,183,183,8,146,66,70,129,220,192,59,126,155,242,109,145,29,169],[22,183,88,83,199,24,6,172,92,255,213,237,137,127,124,99,160,52,82,28,104,220,87,65,57,252,203,213,117,102,96,203],[252,45,113,113,31,154,131,188,79,77,159,132,183,91,172,226,84,195,104,224,169,70,69,80,180,194,97,34,235,14,183,12],[121,177,84,182,57,235,79,228,117,174,95,99,1,187,194,31,25,27,20,86,18,106,85,57,31,153,12,239,171,39,203,157],[238,183,223,146,12,25,59,127,224,11,86,36,60,182,1,204,255,172,150,12,89,132,139,110,187,88,140,68,90,217,155,28],[92,242,19,24,34,127,97,217,20,3,32,106,113,43,203,222,111,166,242,59,253,195,231,18,255,209,7,19,163,59,86,183],[108,76,226,230,120,203,223,85,120,210,205,210,197,76,14,10,127,62,81,242,151,253,208,145,137,62,236,164,68,51,196,92],[26,30,167,247,26,136,17,139,183,80,4,121,58,209,18,135,133,155,163,177,218,179,247,13,71,216,195,138,213,36,25,218],[11,105,196,72,23,213,65,115,190,179,161,76,30,13,209,4,123,8,207,2,119,81,230,131,138,229,195,122,174,37,224,241],[189,138,114,67,187,220,174,150,226,213,126,81,151,21,89,34,168,183,231,75,138,234,57,164,206,214,4,49,204,211,223,110],[220,30,62,192,219,69,250,248,44,127,255,153,149,19,246,168,167,59,45,111,243,28,235,1,233,12,172,40,90,232,6,242],[179,81,118,204,194,254,155,0,252,128,104,188,169,88,182,244,39,39,121,163,102,45,85,104,18,255,132,255,101,123,183,73],[95,199,209,41,172,146,225,140,199,194,222,159,168,59,114,185,51,47,177,13,189,187,69,218,43,0,5,43,233,160,40,22],[129,52,45,193,33,120,242,24,138,228,171,152,26,38,218,35,69,55,224,215,41,100,202,244,188,41,234,54,180,83,21,217],[103,52,97,217,110,197,100,84,210,60,16,200,63,169,105,155,168,14,128,213,50,28,207,40,199,204,37,174,127,182,91,130],[63,134,138,34,57,54,48,113,135,183,30,98,164,123,82,85,175,177,197,75,199,11,41,149,196,246,220,212,28,193,140,103],[126,208,29,143,119,75,147,55,82,3,11,157,65,85,222,247,118,122,137,56,133,4,165,42,7,125,253,150,125,105,245,29],[73,65,58,127,203,46,221,255,244,152,60,186,144,252,202,213,72,4,237,127,214,3,204,244,160,92,2,181,137,72,47,140],[248,104,148,43,166,93,240,24,171,211,154,245,82,1,220,35,52,177,172,164,227,139,81,140,113,177,72,98,233,239,124,76],[238,139,73,250,152,73,207,135,187,201,30,8,206,85,103,89,209,227,53,220,57,189,63,3,102,140,117,96,135,255,67,41],[218,20,209,153,16,166,235,181,41,235,101,243,21,141,40,70,191,139,13,143,217,52,118,209,90,185,117,127,4,68,38,79],[42,39,214,74,20,0,154,4,223,223,63,235,30,156,195,223,83,74,91,247,200,28,101,68,147,196,44,4,146,61,99,108],[184,230,43,184,207,170,190,178,8,1,213,139,247,42,49,66,231,102,110,178,240,175,90,174,230,168,76,116,106,234,132,85],[251,230,194,196,179,119,125,240,31,227,185,166,134,185,111,105,111,71,106,70,179,250,110,24,191,4,114,188,174,9,1,247],[173,249,157,164,2,4,86,244,186,33,10,166,174,84,1,128,21,140,107,177,224,3,3,213,37,36,122,47,32,227,62,253],[55,181,47,209,248,136,163,27,103,149,37,150,162,209,126,114,162,217,17,137,203,133,46,163,219,80,123,11,120,141,125,66],[65,42,172,46,15,244,221,182,87,198,56,88,4,120,51,48,5,49,131,68,206,122,21,130,181,128,214,249,46,118,158,14],[200,151,185,51,136,102,221,213,158,40,100,118,147,83,208,142,118,235,232,182,60,0,33,1,135,230,80,29,222,169,209,185],[156,77,179,37,26,23,38,106,20,21,82,38,177,62,36,18,145,150,40,251,178,245,51,36,238,123,36,255,163,10,74,79],[183,101,164,11,243,214,210,232,212,138,238,233,37,106,32,58,94,104,120,124,51,214,235,7,111,195,227,91,77,107,17,150],[246,235,133,252,219,111,129,27,241,177,178,33,162,254,76,91,145,158,155,163,47,226,30,251,90,155,82,49,83,218,238,4],[169,200,140,192,35,42,228,205,243,234,176,4,107,232,16,136,37,29,54,32,113,217,137,165,157,187,186,235,117,96,150,181],[169,94,157,86,251,45,132,82,0,115,192,138,120,139,216,238,12,218,155,135,126,47,190,127,26,12,1,107,152,101,253,115],[154,137,94,150,79,123,187,28,199,186,14,10,68,145,151,225,244,211,142,90,198,190,52,57,246,119,13,6,50,195,98,58],[84,241,33,133,16,253,45,45,53,245,219,163,36,12,65,65,160,212,190,73,38,94,1,251,82,185,122,44,134,161,255,232],[223,89,124,94,121,179,13,125,225,198,244,182,29,202,221,31,74,233,2,181,64,202,176,137,168,37,100,152,56,128,38,237],[157,7,143,87,204,123,8,85,119,29,208,62,237,121,91,218,46,74,108,17,40,4,220,204,142,214,181,10,205,33,25,167],[171,195,60,254,152,183,84,84,64,133,5,3,73,181,32,170,204,15,221,99,107,6,81,20,63,30,230,123,30,70,106,123],[141,82,30,77,247,42,217,99,60,29,141,80,240,84,82,1,106,165,152,35,54,255,198,10,25,193,130,119,19,240,87,248],[87,62,185,221,165,213,235,170,29,6,165,228,58,41,178,128,54,75,95,189,96,103,166,36,177,230,210,54,190,62,226,250],[24,49,134,192,185,127,250,148,93,184,234,162,47,10,6,36,13,202,18,229,74,220,32,255,231,175,115,43,39,71,73,184],[175,52,224,254,202,175,146,148,181,28,112,253,48,224,201,19,24,190,198,176,253,27,7,68,38,131,70,248,6,52,222,164],[218,42,56,145,251,90,34,171,116,27,247,84,169,222,205,225,160,191,81,133,12,86,12,80,34,242,164,190,46,177,179,10],[55,83,32,177,69,238,188,22,245,218,14,154,97,62,29,85,3,230,127,66,173,242,108,44,41,184,236,140,224,201,37,144],[163,6,245,248,19,68,208,159,69,59,4,243,123,50,210,81,8,233,1,85,185,34,97,169,197,232,228,204,148,202,210,66],[224,49,179,44,208,252,246,107,108,188,107,175,24,92,207,72,40,86,98,243,37,103,103,208,126,163,83,7,10,250,81,168],[116,211,32,122,136,196,92,233,189,142,184,170,10,166,173,193,19,219,107,214,238,186,66,245,63,156,90,232,127,189,48,106],[223,95,3,81,121,160,217,116,118,106,19,155,247,151,211,234,164,102,63,12,112,30,196,33,157,2,232,51,239,240,50,155],[123,233,128,144,136,190,183,252,25,219,195,179,130,140,111,204,136,252,61,53,100,8,36,188,197,165,34,181,95,118,125,154],[66,18,95,21,224,112,118,63,241,152,165,105,234,182,243,84,253,187,225,98,15,60,49,176,173,59,132,163,77,18,192,190],[43,187,23,207,86,203,224,193,44,28,148,255,211,68,95,199,224,171,197,68,104,173,154,185,133,32,229,122,213,126,149,189],[9,111,124,74,219,105,41,142,4,155,106,253,89,80,245,187,53,242,246,100,226,7,243,3,178,69,193,66,61,28,225,248],[217,226,56,35,180,239,185,165,173,170,238,37,46,195,41,14,153,146,160,193,78,106,129,53,198,111,129,111,216,224,104,132],[173,235,124,244,45,62,57,198,126,255,58,89,208,156,168,136,18,242,213,91,154,225,23,134,211,65,97,29,59,133,113,109],[99,71,227,238,238,65,62,169,239,35,45,253,8,26,105,83,160,36,84,12,9,138,92,100,44,104,203,14,155,190,99,6],[137,239,188,64,253,125,193,198,243,13,248,32,175,248,175,93,99,219,148,15,220,250,240,208,88,35,176,89,242,180,148,134],[108,209,162,192,178,85,190,214,180,158,189,146,50,91,96,116,71,223,24,106,98,157,71,165,112,143,114,90,103,144,193,181],[154,41,218,138,248,159,63,94,73,174,10,249,52,152,253,26,251,183,12,167,200,232,219,120,214,241,187,0,37,137,187,72],[222,63,202,152,113,203,168,223,247,125,193,132,186,218,186,9,10,182,27,105,46,177,217,249,176,163,114,212,250,112,96,87],[128,124,27,16,154,84,234,182,68,130,24,209,138,186,197,8,173,55,128,242,100,105,238,17,106,127,100,74,195,53,255,105],[241,27,142,72,246,61,184,174,55,14,250,255,61,81,190,239,70,245,93,38,137,104,167,156,224,84,36,93,100,188,68,164],[206,85,28,164,77,67,14,100,194,6,70,15,34,16,96,249,185,45,178,196,146,211,23,124,211,67,20,58,237,89,98,27],[116,243,106,157,203,135,214,223,88,142,126,29,147,198,72,71,152,56,59,167,243,62,84,118,200,255,68,114,9,196,184,108],[223,69,3,171,119,78,69,135,69,9,148,171,151,16,87,228,212,83,199,78,207,13,183,67,58,168,249,37,219,52,134,208],[212,49,127,101,168,149,71,45,233,152,205,12,9,28,231,69,196,121,180,182,5,80,183,241,16,7,15,125,62,148,77,173],[150,149,253,96,188,216,243,218,3,38,220,106,44,106,99,168,56,127,7,49,63,161,143,146,126,110,195,215,196,82,20,176],[250,234,183,221,199,132,91,155,216,82,194,199,198,225,200,234,198,182,25,239,189,140,213,96,29,45,86,154,206,82,247,114],[188,140,127,131,215,215,178,123,147,130,11,246,112,86,108,28,140,176,205,204,242,116,181,150,65,16,3,135,125,146,143,64],[125,106,32,15,8,53,116,83,49,156,91,166,251,210,25,72,128,253,191,252,188,15,176,87,28,57,97,50,202,6,169,51],[14,120,220,52,103,148,150,28,225,218,191,118,228,174,25,150,22,199,208,78,130,41,167,220,151,64,228,128,217,46,238,43],[46,39,74,44,144,91,150,199,89,253,238,145,228,164,226,232,121,128,15,87,49,19,136,167,42,76,159,22,127,74,65,158],[190,10,202,157,148,30,116,157,19,151,66,147,138,212,199,204,58,177,184,103,166,140,193,102,152,161,70,74,165,3,206,96],[251,202,238,71,94,224,233,181,66,129,70,117,143,35,66,225,111,154,75,131,205,12,173,64,85,154,93,184,19,245,113,0],[45,202,125,133,53,123,12,157,171,6,38,145,199,69,22,59,144,226,247,162,143,174,226,58,99,191,62,51,151,32,191,1],[216,178,133,160,40,127,89,247,62,188,66,118,43,125,238,82,168,71,130,142,234,35,92,139,181,24,34,221,142,44,123,129],[42,20,73,59,138,119,240,150,107,128,139,176,58,24,19,68,114,191,134,31,92,10,121,85,253,182,225,253,98,135,4,162],[246,40,80,189,112,72,207,216,252,43,133,44,198,168,118,254,142,159,194,172,40,215,23,70,192,216,84,96,112,211,30,177],[160,143,145,42,255,212,206,148,27,198,174,3,220,12,216,45,138,216,245,43,242,67,59,119,92,88,12,15,205,104,156,238],[237,173,236,163,43,250,4,109,133,247,100,217,113,163,146,30,178,248,243,162,213,123,200,227,108,176,137,100,214,187,51,23],[238,227,183,250,53,225,172,216,109,192,153,12,182,29,216,248,141,117,137,234,69,27,148,243,7,77,102,106,57,53,121,138],[74,46,197,90,243,6,57,30,192,224,39,58,104,203,253,254,217,163,192,92,180,46,235,2,46,19,115,159,49,91,253,6],[12,41,90,22,1,214,13,251,192,203,199,191,200,135,98,17,164,111,128,234,253,168,148,110,22,34,23,252,119,215,84,223],[105,136,46,11,124,201,165,27,96,30,203,26,236,127,230,19,205,35,83,97,12,112,79,140,0,42,86,200,0,223,126,15],[63,155,157,119,15,174,164,58,252,90,136,23,87,162,191,254,25,100,2,210,139,196,229,53,45,40,255,25,87,19,37,90],[144,99,85,207,3,12,147,214,170,106,234,60,14,94,14,159,216,48,242,126,100,253,15,97,60,15,12,253,192,8,173,43],[175,177,217,35,67,31,215,145,2,153,165,120,222,17,33,168,164,69,163,191,103,179,21,53,91,50,165,222,19,224,159,162],[236,166,203,96,149,164,151,116,13,4,237,209,223,231,110,169,122,168,149,227,240,36,46,63,217,84,142,220,34,51,195,42],[114,8,192,243,70,54,229,161,230,184,32,19,247,172,11,2,61,159,187,212,109,65,126,49,163,205,52,247,139,81,199,246],[175,55,254,240,225,18,75,197,251,128,188,118,40,233,236,233,110,144,104,22,64,106,246,2,159,220,125,49,78,80,40,43],[124,103,133,56,108,221,109,169,56,177,144,15,21,210,39,133,221,50,55,125,231,247,36,11,76,96,154,150,179,192,194,213],[25,137,1,48,138,200,76,182,69,191,39,221,132,55,233,148,115,150,238,217,159,201,152,205,150,71,174,111,90,51,7,114],[214,90,110,137,219,135,130,120,70,72,72,128,234,50,187,129,224,146,42,212,209,214,178,9,109,40,160,35,20,88,37,83],[152,138,90,164,112,223,156,34,233,115,230,155,115,67,32,116,46,141,148,250,162,221,122,136,159,42,48,99,133,58,199,229],[181,207,75,130,243,228,77,100,57,92,39,188,43,53,70,202,190,188,147,78,6,141,164,175,152,63,16,245,239,179,75,16],[66,181,227,231,175,83,108,23,0,106,132,119,17,103,239,196,148,81,5,33,216,126,252,170,202,155,116,91,130,116,150,144],[93,228,219,177,116,190,134,139,138,31,171,63,234,220,107,76,251,182,248,106,17,123,8,94,0,157,241,248,230,185,172,243],[205,170,3,172,197,188,24,41,138,46,52,39,33,3,180,189,243,67,225,160,160,112,81,184,251,217,108,66,69,244,170,138],[50,77,62,198,110,198,98,238,46,3,41,97,233,82,22,193,176,119,206,219,134,16,27,103,156,134,203,191,164,124,18,225],[144,106,8,233,10,32,63,229,180,238,238,104,6,50,14,220,98,210,75,55,157,205,228,74,202,17,83,232,239,184,239,204],[127,70,199,194,19,16,160,226,19,155,75,126,102,146,251,147,125,136,235,207,157,200,221,161,32,129,0,6,244,187,233,140],[26,211,252,193,79,39,248,225,168,5,183,242,92,126,167,136,241,195,129,18,87,231,112,16,90,213,102,217,114,210,126,146],[199,114,97,128,122,136,19,154,66,199,122,187,66,62,193,209,77,197,23,122,92,227,158,92,165,217,235,121,179,104,48,190],[78,245,8,241,4,112,217,232,103,63,13,120,231,179,167,75,67,111,207,204,70,80,230,84,114,217,164,11,161,33,153,212],[139,73,52,67,189,146,194,97,6,52,51,223,228,72,163,165,219,112,104,110,223,194,57,186,76,160,162,90,61,118,128,84],[90,38,139,31,124,171,10,8,66,90,38,195,27,185,240,227,28,253,208,149,244,67,235,251,105,134,131,159,7,0,192,243],[74,9,43,189,37,8,31,205,244,159,173,108,103,58,124,99,209,27,239,91,121,226,237,74,250,249,31,203,170,175,129,62],[148,237,162,27,191,142,216,23,101,216,108,27,153,5,166,74,68,177,154,187,42,53,108,117,5,65,43,152,135,226,63,101],[0,246,3,123,245,51,219,145,223,84,203,230,235,97,254,100,41,151,123,224,241,248,15,24,127,237,123,28,98,48,98,23],[245,89,57,125,199,41,226,152,143,98,61,35,118,47,45,130,58,206,201,17,146,63,39,80,242,7,72,23,157,139,226,51],[175,176,16,140,38,227,23,222,212,157,17,75,240,104,4,116,159,193,84,215,210,151,142,130,154,114,194,73,191,196,107,231],[227,23,34,169,176,17,162,247,245,210,160,80,54,102,54,240,155,31,210,124,181,203,205,115,154,176,136,69,108,155,159,206],[199,236,69,125,182,200,78,25,35,228,110,208,19,198,176,221,251,30,244,189,147,143,115,138,93,164,173,46,187,149,238,168],[161,2,166,154,172,159,80,106,8,1,26,24,184,36,10,248,117,218,155,174,212,239,237,171,114,243,9,157,31,234,60,171],[145,169,34,179,237,122,156,233,86,156,169,12,182,86,155,29,145,183,94,13,4,53,80,196,10,168,165,254,236,43,199,138],[88,226,199,217,171,5,124,82,206,28,43,133,249,28,18,104,26,33,91,43,201,178,82,24,146,116,111,208,203,128,114,116],[41,139,193,103,144,52,135,55,128,214,162,100,79,8,224,39,131,233,172,38,178,81,5,120,26,135,9,72,71,114,221,101],[145,1,5,99,120,125,184,104,29,221,243,138,249,12,185,55,1,229,118,206,154,156,195,196,45,111,237,113,78,136,248,92],[45,223,43,155,229,161,247,116,74,82,105,253,89,126,59,19,162,60,87,67,231,18,154,217,78,137,39,176,180,105,56,51],[143,187,217,111,195,135,219,175,254,73,68,196,109,212,57,37,190,177,172,113,160,135,91,94,170,171,44,216,83,233,220,31],[152,73,242,79,57,137,4,74,227,121,249,220,210,92,234,71,238,75,74,189,184,99,229,177,93,136,129,139,248,200,241,41],[61,24,238,28,234,141,168,118,37,71,124,156,254,233,134,52,91,246,255,42,229,240,162,63,209,55,200,1,230,55,88,79],[145,97,140,45,0,110,46,121,79,74,133,175,210,138,0,63,54,22,81,71,142,34,254,18,46,239,104,57,187,238,11,1],[0,212,30,244,203,4,49,81,113,131,114,224,152,243,45,198,158,164,103,100,84,228,55,158,221,252,77,71,51,173,208,136],[170,12,230,246,120,248,168,158,58,198,115,243,84,10,235,52,228,201,93,254,177,176,197,223,101,12,49,104,197,247,53,77],[21,221,249,128,199,107,91,14,67,163,173,163,98,200,94,252,238,43,175,116,251,20,31,99,148,205,65,233,26,87,53,35],[25,48,133,120,179,109,109,180,69,73,239,145,86,11,64,242,178,177,54,91,226,25,43,241,58,59,6,110,145,240,163,74],[45,143,176,167,87,172,25,222,203,90,30,147,23,54,248,149,109,135,209,91,99,82,44,53,85,84,163,224,188,22,16,75],[238,9,106,156,216,245,45,144,143,192,217,161,123,173,63,174,54,21,29,18,29,239,36,91,91,70,243,187,118,220,70,171],[126,150,75,203,69,99,91,247,5,192,163,54,164,254,125,48,30,116,123,249,69,22,164,180,128,168,222,106,197,65,142,136],[27,121,31,71,55,35,217,224,188,229,210,78,102,6,213,129,139,243,77,225,133,21,163,72,42,127,193,255,38,59,97,91],[134,215,144,218,114,194,59,68,149,150,23,24,141,199,9,79,103,235,178,232,127,90,218,212,32,251,14,74,210,6,241,161],[79,96,224,70,162,8,184,235,179,175,171,93,211,34,133,208,98,125,153,218,194,183,204,47,214,144,130,244,117,98,198,117],[82,127,174,29,65,32,163,170,111,222,162,0,21,60,148,134,226,174,105,92,169,13,186,248,65,49,52,211,194,221,155,242],[0,173,73,108,65,134,158,159,230,111,182,138,248,93,85,134,253,100,236,181,204,32,189,18,211,95,171,224,56,131,79,36],[197,222,196,238,55,24,80,183,126,124,91,237,174,95,80,178,165,116,233,12,83,10,145,46,239,136,127,207,217,99,231,120],[193,27,228,178,141,146,149,40,113,90,229,48,148,67,34,198,103,143,216,156,14,57,184,122,136,6,129,123,195,12,211,41],[194,130,60,24,132,55,199,6,227,234,144,9,43,70,171,159,173,41,97,29,144,166,161,28,160,133,0,220,204,218,242,238],[231,50,103,228,56,204,190,38,204,20,186,131,112,9,121,19,28,2,19,100,46,232,70,223,58,76,167,161,128,62,94,147],[131,107,127,110,120,76,150,86,151,53,169,86,79,225,78,200,175,176,249,37,57,156,107,246,91,245,209,34,247,53,122,59],[144,12,184,76,170,196,4,27,229,221,238,60,71,232,158,193,201,23,193,78,61,156,211,198,228,194,62,250,157,220,96,174],[17,52,123,255,96,126,205,141,106,61,18,246,66,50,16,24,41,244,183,48,129,101,114,34,108,84,155,141,173,102,214,102],[195,156,155,183,171,90,39,9,49,19,164,130,137,71,132,98,3,77,128,247,77,147,24,107,90,192,171,104,9,137,65,23],[2,185,83,114,77,158,89,167,57,3,30,4,17,121,122,235,132,53,148,43,123,9,62,180,140,172,172,91,43,184,112,113],[180,4,142,105,7,0,0,121,25,139,211,238,255,125,125,159,219,97,6,43,251,176,64,139,97,250,58,118,80,142,23,137],[109,200,126,151,135,66,0,35,210,4,109,35,182,36,193,18,112,111,150,24,18,169,198,198,167,51,119,184,194,224,194,158],[170,250,216,6,122,2,219,220,160,101,3,203,177,126,118,165,221,255,241,104,182,208,242,224,174,182,154,105,159,101,59,245],[49,195,15,129,58,151,191,211,25,0,188,18,255,154,196,187,19,100,45,44,81,126,77,252,255,215,46,17,178,31,149,28],[190,161,139,202,164,74,166,50,6,36,108,230,137,4,31,127,116,123,68,180,140,180,226,119,227,66,181,4,99,56,54,131],[157,100,193,131,162,92,166,147,191,21,118,183,136,1,211,72,42,198,147,85,109,25,227,131,34,18,43,20,22,51,5,171],[87,88,143,215,127,204,10,110,41,207,16,175,246,211,199,157,216,244,253,192,77,245,240,103,1,70,51,109,107,37,63,127],[84,151,58,21,220,72,128,153,178,23,111,71,77,42,146,212,12,109,0,79,201,117,28,217,22,179,122,125,180,235,50,104],[34,192,160,186,91,125,241,14,82,230,135,227,85,131,85,46,105,108,219,189,158,178,67,122,177,239,138,245,184,62,41,233],[36,0,110,211,93,227,11,142,160,84,221,255,184,82,19,142,189,211,205,99,168,233,189,85,164,177,182,144,98,240,91,116],[181,62,215,204,47,164,23,36,214,210,68,31,129,60,242,83,12,18,111,21,196,134,71,111,137,169,121,131,159,23,60,95],[79,22,173,224,43,117,168,9,11,144,196,18,229,245,175,16,107,44,232,67,211,93,244,136,64,156,147,19,192,124,82,134],[77,8,55,182,77,103,125,5,193,48,243,244,116,234,66,2,44,231,152,140,205,47,141,2,108,214,211,68,114,166,165,249],[224,127,152,212,66,176,66,245,58,124,135,242,123,16,172,53,215,231,151,223,157,214,29,223,4,44,195,59,113,13,141,217],[97,227,125,1,235,246,72,123,90,173,251,116,202,203,123,197,116,51,126,201,218,68,87,31,10,225,239,228,4,205,68,74],[61,98,65,250,238,43,201,168,37,135,34,30,25,102,125,107,113,197,46,12,143,179,63,34,18,100,23,169,125,162,205,151],[147,222,151,184,84,91,227,64,44,45,5,19,74,157,38,234,140,186,3,177,84,186,169,218,157,84,130,118,21,125,131,131],[68,94,206,58,55,148,115,232,92,198,118,147,167,22,137,22,135,188,202,184,40,199,118,22,66,128,116,82,26,55,40,38],[222,44,100,47,253,23,224,109,244,102,93,229,55,164,147,95,112,59,22,235,117,34,39,59,71,69,86,179,244,163,188,73],[66,180,201,4,118,133,236,51,218,239,101,255,245,8,192,117,217,109,126,52,92,191,129,140,54,44,146,25,232,56,225,191],[193,181,33,126,176,179,51,51,218,151,26,198,57,96,128,198,56,60,94,110,56,215,29,11,188,235,166,10,64,87,212,86],[98,106,154,205,41,113,159,150,115,140,233,181,180,59,139,179,193,72,149,68,81,185,162,7,26,14,1,39,189,48,182,142],[14,126,34,176,130,222,99,112,131,26,239,70,2,209,129,71,123,19,235,129,137,150,249,145,88,66,235,179,8,134,125,34],[97,96,130,91,246,154,196,195,251,107,91,234,119,123,14,106,191,117,101,226,53,52,48,110,175,104,44,19,163,243,82,25],[218,60,137,57,199,8,207,62,174,248,220,134,75,34,13,24,109,144,1,67,28,6,164,10,56,195,114,169,156,43,171,41],[216,127,122,101,62,46,229,46,197,105,212,176,153,123,240,98,162,84,14,142,128,229,103,31,15,97,108,149,88,231,94,171],[20,191,221,24,1,108,120,224,26,4,133,194,11,220,162,107,204,206,242,151,214,251,179,19,253,249,95,120,24,141,40,171],[189,0,7,110,171,138,123,56,122,140,230,152,14,202,152,98,51,162,103,203,154,17,126,116,21,30,4,75,4,216,159,177],[200,169,229,211,211,154,35,46,78,104,131,60,7,6,132,150,72,132,201,57,167,70,220,235,122,145,148,124,250,229,142,76],[11,25,94,95,245,23,8,226,241,60,183,1,200,19,219,120,123,45,232,16,24,21,137,193,154,197,1,233,127,33,95,253],[185,56,135,97,227,70,83,249,172,196,178,120,209,78,170,54,10,236,39,230,25,87,79,48,106,35,46,84,60,84,107,100],[212,116,176,150,188,103,186,225,232,231,107,119,217,100,27,131,66,167,194,199,141,180,4,94,108,26,94,239,154,103,91,60],[193,38,233,119,167,143,162,209,248,223,200,67,117,7,133,53,14,191,182,159,74,30,23,29,26,224,63,34,222,183,216,205],[69,63,201,95,181,157,71,103,38,254,198,237,162,15,70,205,6,240,221,187,187,169,180,161,170,47,142,14,176,183,173,91],[248,136,164,192,142,177,9,222,71,103,64,39,243,40,165,196,185,248,132,179,28,192,14,116,124,51,253,195,152,141,91,57],[79,186,115,28,50,26,85,38,20,236,2,235,121,96,222,150,52,27,0,10,159,29,27,87,18,65,204,19,190,4,167,185],[56,194,195,238,243,147,123,137,2,16,15,25,137,110,181,174,158,46,44,20,0,239,39,43,142,207,234,107,63,187,184,57],[35,160,19,187,128,249,28,20,125,194,31,69,246,34,98,245,59,119,99,131,33,145,155,64,153,209,158,249,52,76,252,75],[38,24,197,100,136,151,15,127,116,78,80,65,44,245,221,106,180,234,177,43,72,32,62,154,56,22,144,74,188,86,168,79],[28,160,254,219,168,38,88,213,49,118,55,239,245,197,91,122,68,20,10,240,23,3,91,97,179,224,26,184,12,19,96,137],[103,154,237,196,38,122,149,253,93,191,237,154,58,107,111,128,76,157,136,30,97,140,198,111,25,80,246,131,193,4,147,190],[251,53,219,87,242,124,143,15,76,253,238,102,250,38,252,180,1,8,91,131,25,108,122,220,79,132,248,213,31,31,139,206],[251,53,219,87,242,124,143,15,76,253,238,102,250,38,252,180,1,8,91,131,25,108,122,220,79,132,248,213,31,31,139,206],[251,53,219,87,242,124,143,15,76,253,238,102,250,38,252,180,1,8,91,131,25,108,122,220,79,132,248,213,31,31,139,206],[251,53,219,87,242,124,143,15,76,253,238,102,250,38,252,180,1,8,91,131,25,108,122,220,79,132,248,213,31,31,139,206],[169,236,5,118,159,14,85,170,193,6,205,225,181,243,17,91,120,143,98,105,197,37,53,179,128,207,75,68,42,202,164,201],[69,207,125,34,72,38,43,40,37,107,108,178,69,237,204,38,100,150,85,76,108,231,177,172,8,145,203,83,102,142,222,85],[167,23,173,59,29,92,254,43,225,110,24,8,30,73,218,98,63,15,169,120,255,215,54,42,186,199,168,31,158,159,203,253],[119,250,146,239,107,123,219,159,254,122,33,193,133,110,230,85,189,12,44,42,194,9,13,31,72,2,65,165,183,131,70,223],[0,1,78,123,54,10,20,134,114,190,249,62,231,16,193,233,86,31,189,159,249,211,212,251,92,101,219,87,45,65,167,236],[33,30,113,85,2,21,37,251,17,208,221,16,151,25,28,30,255,175,58,126,237,165,137,28,43,242,115,87,40,5,52,133],[22,142,104,132,60,166,106,104,218,4,235,135,116,45,182,16,112,172,112,249,172,241,152,65,121,158,159,84,43,211,239,227],[141,128,155,194,19,184,227,195,21,65,253,198,166,47,224,251,186,78,234,194,156,179,46,251,201,168,250,248,143,251,8,138],[214,132,189,237,201,214,158,74,238,210,32,210,181,196,41,3,174,171,204,41,235,15,123,147,51,212,30,34,155,121,244,194],[12,79,202,141,83,167,182,232,90,30,174,209,8,36,91,153,23,83,46,61,163,198,56,220,88,36,179,154,176,89,34,180],[24,149,18,195,27,119,107,223,35,68,200,10,10,154,213,85,234,87,39,126,27,185,155,50,55,27,49,181,52,186,22,89],[105,45,236,209,209,8,255,244,35,218,70,170,89,9,81,107,111,52,31,21,128,16,31,178,75,105,21,181,169,145,246,121],[17,216,177,107,212,36,187,242,1,133,248,252,27,87,183,87,202,17,86,186,249,144,239,75,237,168,154,165,233,199,42,240],[65,108,177,206,44,207,153,57,18,76,140,155,201,21,5,63,119,127,39,67,109,54,38,196,95,247,199,199,105,186,4,126],[147,230,171,147,185,74,21,252,70,13,44,95,86,57,244,246,223,114,203,191,27,249,239,122,189,66,177,132,11,152,239,200],[253,85,99,176,247,252,234,243,183,66,54,67,146,176,67,59,147,116,153,253,39,71,38,110,27,239,217,205,211,50,209,141],[62,113,194,126,200,126,240,60,247,154,156,79,32,126,199,101,222,201,42,141,151,140,28,181,17,59,134,216,183,116,212,194],[66,183,252,187,24,152,233,152,111,69,186,144,79,188,40,123,170,12,49,184,85,72,77,215,250,236,231,184,238,4,44,122],[68,126,47,10,112,239,151,156,51,172,49,247,77,250,206,194,7,87,120,180,20,58,120,216,250,155,2,62,195,59,63,158],[135,192,81,201,65,114,125,36,117,84,139,136,39,159,43,78,216,89,153,207,223,187,104,245,95,64,25,74,12,2,140,211],[129,237,216,131,169,210,23,151,120,203,140,215,72,15,238,97,114,88,121,232,174,154,186,178,50,79,0,129,22,248,238,123],[144,170,245,129,254,238,246,218,22,229,125,17,172,176,109,103,52,252,216,72,193,92,1,156,161,243,102,13,156,115,232,109],[133,43,97,200,221,3,41,91,6,242,71,243,160,212,166,166,231,217,12,210,76,56,51,39,198,176,229,45,222,23,95,222],[206,233,114,25,104,71,63,128,173,80,217,110,108,186,102,38,101,47,13,29,87,211,22,3,55,17,253,155,105,123,218,182],[227,193,249,75,126,18,59,182,181,52,124,251,143,254,58,169,167,51,140,170,240,31,129,159,83,91,0,1,168,40,210,172],[177,242,70,166,36,202,82,104,2,40,35,16,106,118,244,164,54,225,228,8,135,182,142,193,122,177,55,198,115,160,220,83],[199,158,199,112,63,1,73,184,6,110,184,148,65,63,221,203,63,39,103,209,212,15,192,12,172,136,188,29,160,112,147,104],[252,193,197,32,1,202,212,244,24,239,72,250,60,188,20,227,56,220,103,82,236,96,168,10,72,109,121,124,232,111,106,49],[218,109,197,127,65,225,208,119,214,211,130,185,88,129,129,45,154,242,212,196,79,230,102,71,12,152,245,125,172,110,86,230],[47,195,71,19,92,241,24,112,205,195,71,76,190,192,236,1,29,54,158,40,72,221,155,57,103,150,40,117,92,64,22,184],[6,26,189,77,232,169,153,101,194,133,1,63,234,25,5,74,104,109,146,107,27,241,188,215,51,51,190,76,145,172,73,11],[167,113,76,207,188,76,101,18,85,38,135,203,104,125,74,143,86,112,117,4,177,152,167,190,153,70,223,156,124,20,205,253],[144,249,157,252,91,25,89,30,250,121,47,87,66,237,219,199,188,124,25,12,80,80,196,4,191,13,40,248,114,4,72,158],[77,32,3,73,124,190,5,106,95,250,49,91,28,185,46,211,87,172,231,8,61,40,193,249,28,118,30,126,228,92,200,196],[77,32,3,73,124,190,5,106,95,250,49,91,28,185,46,211,87,172,231,8,61,40,193,249,28,118,30,126,228,92,200,196],[77,32,3,73,124,190,5,106,95,250,49,91,28,185,46,211,87,172,231,8,61,40,193,249,28,118,30,126,228,92,200,196],[77,32,3,73,124,190,5,106,95,250,49,91,28,185,46,211,87,172,231,8,61,40,193,249,28,118,30,126,228,92,200,196],[99,38,242,173,182,52,91,230,156,154,119,132,148,148,64,8,58,131,237,112,196,172,228,5,66,40,13,76,17,101,139,160],[206,36,100,19,226,214,242,75,196,188,41,167,229,36,140,135,171,209,182,94,159,144,44,24,240,116,139,194,188,78,88,223],[160,77,31,200,198,77,44,119,42,33,197,100,155,172,133,160,178,122,65,191,135,147,81,197,159,219,143,28,226,240,230,28],[6,65,47,96,47,236,93,157,33,208,83,255,170,80,7,2,189,16,236,127,43,190,65,247,208,172,49,170,168,192,51,147],[10,27,118,166,191,220,17,189,192,76,169,104,236,86,66,136,143,50,21,160,30,130,79,76,244,176,82,166,222,29,68,63],[50,7,17,122,96,67,119,210,248,61,223,158,113,126,235,33,35,85,10,149,16,209,204,234,148,224,16,228,139,246,144,88],[23,95,24,219,170,40,23,72,169,113,186,174,152,129,87,47,126,185,41,100,233,161,192,150,168,115,73,76,57,103,35,155],[238,254,28,44,142,255,241,80,175,152,74,148,172,168,171,27,84,58,202,199,69,232,182,49,150,17,207,186,166,119,65,120],[176,14,167,236,18,213,119,104,71,94,74,242,95,91,246,119,114,249,8,190,12,126,215,130,214,88,222,192,40,181,10,10],[244,112,229,247,177,172,29,144,81,46,239,84,84,102,28,237,223,222,115,163,193,86,180,233,95,242,45,5,190,142,228,150],[48,115,123,92,6,237,143,62,84,187,189,248,224,253,229,197,83,107,223,114,38,171,76,58,59,227,24,9,163,98,129,239],[120,141,130,36,106,29,211,144,25,219,170,212,217,15,92,59,229,213,196,95,149,228,251,214,52,81,139,198,201,128,177,212],[116,5,198,178,134,116,123,57,145,249,38,128,181,171,241,217,98,245,108,227,158,141,13,182,190,1,208,60,60,177,180,116],[114,26,43,118,99,189,240,99,13,174,57,50,182,148,142,98,136,11,32,168,19,231,81,101,40,43,236,228,221,148,66,202],[189,180,206,232,220,53,193,69,94,102,190,209,52,59,88,152,5,37,95,101,172,149,122,175,20,208,31,125,198,252,249,179],[53,8,2,44,105,76,223,250,83,157,96,60,255,10,174,81,225,67,18,90,153,112,179,113,158,96,34,57,65,152,6,226],[110,132,205,95,44,133,25,4,153,84,211,162,211,25,35,175,173,12,121,245,192,35,223,176,85,111,89,89,241,180,210,154],[81,137,242,95,219,202,37,196,25,44,105,236,116,136,67,122,46,74,52,124,187,48,211,197,150,182,88,255,222,178,112,142],[139,74,254,137,95,132,88,236,202,105,210,172,9,182,162,213,213,166,166,45,153,115,231,113,149,22,162,247,203,81,151,134],[206,108,105,102,68,251,32,220,221,169,76,120,81,23,79,103,83,229,149,107,22,65,216,142,239,47,119,203,200,152,237,76],[71,145,5,34,96,195,154,11,26,42,192,145,252,27,127,234,230,198,24,163,113,80,101,203,25,193,171,33,95,154,211,0],[18,216,77,55,149,93,82,100,252,38,8,45,6,116,209,219,165,108,240,252,53,108,69,78,60,118,102,173,163,23,140,179],[176,224,185,71,44,68,190,227,135,103,193,147,42,239,189,171,101,140,180,182,9,5,130,209,142,210,22,27,131,86,23,179],[228,46,139,109,153,55,81,185,251,43,239,47,173,44,201,110,17,209,55,39,115,249,157,150,27,181,152,134,143,96,165,170],[78,217,144,210,188,96,31,144,42,95,155,186,90,199,143,104,48,192,120,234,134,125,228,66,168,212,122,49,180,208,223,69],[156,156,211,47,104,52,238,181,125,97,219,142,209,3,111,150,2,219,158,231,193,136,206,115,115,192,121,31,49,124,34,134],[55,234,224,125,96,54,63,89,22,55,200,196,202,100,224,118,206,175,186,193,206,176,204,244,168,230,122,38,44,129,195,226],[233,156,166,110,110,84,189,199,234,153,60,156,255,229,158,72,11,147,25,157,233,123,72,131,152,106,228,3,13,136,136,21],[208,199,172,44,132,73,70,1,13,46,24,149,109,143,19,131,80,161,180,43,33,126,100,163,65,242,247,36,154,204,104,124],[64,234,97,39,44,172,82,15,36,198,208,131,51,129,234,142,55,120,230,226,138,11,218,100,218,84,255,95,197,95,72,82],[113,140,195,20,196,76,37,134,97,59,4,42,13,67,18,25,12,152,103,211,204,77,66,62,179,77,237,130,245,199,206,145],[122,184,35,13,18,99,92,249,66,162,25,26,71,70,61,28,17,227,179,45,83,20,238,150,45,201,30,40,13,3,99,175],[238,193,154,28,117,159,229,251,0,32,131,232,107,108,217,219,144,38,37,226,141,77,214,212,203,137,71,28,132,65,89,151]]},{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":766873,"Length":68764},"Cuts":[[96,0,95,40,141,16,235,22,130,222,209,47,56,193,177,5,33,39,241,90,21,244,104,117,98,142,41,140,30,72,195,149],[65,103,65,37,116,27,60,47,143,173,137,115,54,114,39,148,133,18,25,68,107,141,29,223,131,131,64,149,236,231,66,226],[54,162,42,138,45,141,237,157,184,150,218,29,109,82,19,48,32,238,248,131,238,101,197,121,158,123,109,103,110,45,158,107],[159,232,79,68,64,109,189,237,151,253,89,51,49,3,144,24,172,32,240,19,63,155,75,47,230,130,62,250,27,72,210,69],[134,164,118,69,139,234,74,74,69,38,196,172,80,173,190,151,170,33,181,122,146,107,167,230,203,224,102,251,5,131,89,145],[24,87,91,185,61,235,143,236,211,65,103,81,159,206,33,171,88,37,183,153,212,69,152,135,17,225,70,223,46,4,102,124],[183,215,35,118,133,171,228,45,130,130,79,82,127,20,64,207,157,255,84,126,149,181,109,250,92,243,23,21,119,59,125,99],[226,164,102,58,162,71,170,217,153,200,188,153,233,121,135,53,70,137,10,195,223,72,206,166,90,230,125,177,189,51,249,248],[161,239,112,21,227,243,85,199,99,90,144,71,153,122,188,127,255,69,181,239,160,180,58,178,23,145,97,16,46,124,106,163],[225,191,33,160,30,174,165,154,39,169,72,120,7,150,57,2,28,147,239,192,0,128,228,32,131,241,176,216,85,245,15,131],[59,225,75,253,151,224,190,17,209,176,232,212,111,121,128,122,8,117,108,50,240,72,210,209,52,252,110,33,184,159,145,130],[103,117,194,243,84,254,93,159,118,42,163,81,170,6,200,104,132,241,38,71,2,180,121,47,18,139,43,151,57,199,29,246],[132,19,140,246,129,51,236,219,35,164,40,238,34,78,235,23,240,241,72,190,101,151,87,38,149,202,140,222,170,64,169,153],[38,123,232,169,73,118,153,185,117,193,53,254,71,66,231,196,113,28,84,166,136,165,104,85,200,164,79,23,64,150,15,112],[230,71,178,88,135,241,93,238,33,120,175,120,221,125,42,27,178,46,240,81,237,113,134,97,218,142,43,106,181,44,8,1],[60,110,175,124,207,173,60,168,25,7,146,183,206,129,158,168,30,101,30,206,170,52,141,205,176,97,211,216,185,156,95,237],[252,37,234,31,65,30,65,146,226,21,103,128,102,163,185,130,192,64,26,83,216,41,190,83,184,58,123,164,83,151,243,51],[115,3,232,225,41,160,248,174,15,91,182,148,104,69,46,28,27,133,15,4,95,220,75,110,173,136,72,2,165,54,46,64],[182,105,62,36,28,15,199,206,254,28,205,122,24,14,227,153,117,92,19,23,30,225,62,217,151,4,124,241,199,225,37,1],[165,63,28,78,233,194,12,160,34,122,19,47,130,175,194,172,110,104,152,223,106,149,122,252,4,95,143,92,129,131,49,56],[54,168,159,106,44,121,88,61,184,197,203,198,40,22,59,90,95,10,6,226,139,47,119,176,118,74,41,64,57,41,34,44],[4,241,150,53,246,207,131,75,101,1,234,67,227,107,102,167,1,81,186,146,58,238,187,187,92,25,222,187,28,163,168,189],[227,140,168,9,254,93,155,94,88,181,202,208,177,213,0,113,154,133,100,1,250,214,111,59,217,13,40,147,71,151,10,139],[108,4,42,15,40,124,21,137,119,16,116,11,16,59,245,72,94,127,14,255,199,140,103,60,79,192,0,35,93,137,132,42],[159,188,66,165,94,195,45,206,98,162,142,60,73,205,5,75,34,106,196,10,242,24,209,189,25,238,22,250,215,110,131,195],[66,218,16,62,118,3,109,130,130,51,104,114,88,248,228,232,154,7,90,52,101,143,60,52,246,190,11,49,107,188,186,214],[85,197,56,239,59,140,38,241,168,102,19,45,194,136,170,208,124,242,199,78,193,146,61,157,245,12,239,190,176,58,13,114],[46,154,163,180,201,15,119,74,134,65,17,87,71,222,86,243,93,126,153,8,97,252,204,18,159,157,133,168,81,155,171,75],[37,105,235,55,67,172,188,169,107,4,173,11,20,32,117,33,104,142,99,52,15,19,132,210,128,241,43,248,87,252,27,168],[0,138,210,6,205,222,142,53,188,109,211,50,137,74,252,170,224,212,127,143,97,40,36,52,248,219,234,20,243,219,189,172],[37,96,221,109,31,135,105,214,242,234,167,255,67,232,59,126,4,170,114,97,245,203,98,246,200,142,194,29,229,78,35,142],[181,233,233,190,33,172,148,227,140,19,33,236,38,247,212,43,187,5,239,184,163,35,208,37,81,160,156,129,67,174,24,230],[180,153,248,48,248,189,70,68,103,30,133,28,79,8,174,72,223,239,48,21,159,62,98,219,165,136,139,62,59,83,55,211],[219,159,52,58,12,72,41,237,209,17,111,210,183,142,250,183,139,77,22,245,4,243,26,238,95,185,103,219,226,13,112,229],[122,208,82,197,179,194,108,63,85,71,10,11,134,46,148,48,219,148,156,111,5,177,225,166,22,168,25,167,47,231,13,136],[142,185,177,43,66,114,188,176,208,116,26,74,171,154,225,76,190,22,116,140,1,189,246,198,72,247,138,165,107,136,32,25],[39,158,18,189,75,214,17,132,118,52,200,54,255,111,109,8,174,186,55,154,87,163,222,57,141,245,32,66,138,83,89,135],[212,217,217,26,7,193,107,157,182,191,72,232,213,203,161,95,120,191,28,116,36,222,89,220,104,128,45,115,112,44,196,223],[101,28,246,9,5,137,176,78,129,184,30,111,97,252,84,215,59,131,201,137,150,184,49,192,10,87,150,15,131,245,82,20],[35,218,14,240,146,155,244,85,231,124,9,141,225,136,195,208,191,27,67,208,29,239,101,70,168,87,81,99,115,133,189,216],[33,126,130,252,81,135,199,195,58,68,109,234,253,18,167,147,232,116,245,77,153,174,2,5,252,79,0,157,148,210,23,116],[157,24,222,166,41,90,104,179,3,185,112,93,38,52,153,206,19,58,108,169,2,246,121,113,57,64,129,171,162,133,73,34],[24,16,216,12,64,197,191,132,240,125,208,186,147,43,1,84,109,185,223,101,129,19,231,5,159,11,239,254,211,237,233,106],[45,77,204,73,210,209,21,88,169,99,31,141,189,150,156,234,230,3,206,37,76,111,85,20,125,111,128,227,210,1,222,63],[39,64,35,158,37,192,62,227,36,4,164,219,112,164,155,219,3,212,134,51,5,165,153,20,93,69,236,146,158,38,224,103],[107,216,206,26,188,218,18,83,2,189,210,160,2,130,231,75,42,95,57,75,39,131,96,168,24,112,79,249,38,224,197,23],[24,7,106,85,88,9,65,202,10,159,109,15,59,143,12,244,126,217,1,89,202,157,40,150,1,222,169,252,73,239,50,112],[13,116,15,244,112,176,113,74,230,1,95,101,78,5,238,148,85,11,81,129,157,86,90,214,249,132,44,111,209,76,203,133],[221,157,249,95,234,223,76,62,147,159,184,197,57,127,161,176,182,89,42,168,83,47,81,109,173,124,194,244,57,37,213,196],[86,13,118,164,194,57,240,125,177,81,101,129,40,52,140,106,43,207,233,172,111,112,67,180,127,43,64,184,14,218,2,211],[73,235,156,38,3,91,182,67,82,147,114,238,113,36,122,201,13,244,238,60,224,67,80,79,212,182,57,128,185,240,38,166],[46,3,115,64,13,182,132,187,141,49,110,37,249,191,153,152,70,34,225,132,83,54,57,21,13,211,227,157,115,194,62,3],[56,99,110,173,250,158,115,63,211,215,225,20,102,131,69,115,111,37,40,116,178,136,107,239,187,56,213,107,208,40,207,211],[78,177,249,112,205,196,28,209,171,194,115,108,142,101,21,187,2,99,49,28,213,140,182,101,103,222,188,68,79,191,217,175],[134,194,5,248,248,5,77,202,173,241,191,27,153,48,22,12,127,88,48,205,160,198,202,58,62,43,73,93,64,130,254,224],[117,177,152,212,177,148,183,161,203,65,174,19,37,206,233,202,39,236,82,188,232,238,212,173,244,208,130,148,32,32,122,224],[75,68,46,13,206,25,139,5,73,98,13,89,122,207,82,85,123,124,65,64,19,140,104,238,43,241,187,188,79,129,244,141],[241,30,225,22,101,184,73,121,121,112,112,31,255,81,140,16,28,154,148,29,148,146,163,44,12,151,177,4,110,27,32,6],[22,97,157,63,29,203,163,41,26,33,127,147,45,135,187,102,37,221,191,114,244,222,156,42,154,28,47,218,228,52,202,59],[49,212,66,41,219,83,26,174,15,182,191,172,254,40,194,213,9,48,14,6,234,33,148,95,201,234,200,169,56,24,74,48],[235,101,114,188,9,168,199,18,147,75,21,132,202,87,166,230,213,63,110,206,66,172,62,156,159,105,8,18,194,119,171,64],[102,2,117,160,117,49,202,71,214,15,47,14,150,152,85,4,11,62,163,186,129,72,60,62,145,67,110,130,21,177,143,3],[11,31,167,175,127,50,94,62,133,152,149,223,193,39,77,210,235,46,24,200,17,200,91,220,106,217,45,112,45,98,248,134],[117,33,250,213,188,98,86,11,134,244,252,12,87,250,42,203,1,9,241,240,249,222,5,16,110,88,226,14,35,179,163,55],[117,161,127,199,14,41,44,212,175,99,87,37,113,114,199,164,55,111,28,51,249,150,43,137,248,136,218,27,180,133,77,244],[121,83,41,35,8,144,157,151,58,91,223,170,243,60,28,209,207,85,22,147,236,3,227,163,138,73,17,245,219,166,61,121],[182,192,82,175,0,237,58,21,106,41,121,115,11,133,152,198,96,206,107,19,32,216,32,143,194,41,178,115,18,69,104,117],[130,96,62,17,11,203,105,134,60,208,216,206,11,51,141,209,109,38,122,49,230,3,132,58,202,188,247,254,241,172,69,114],[141,108,21,96,31,87,244,197,218,207,174,1,214,40,61,29,152,104,108,0,180,149,198,25,234,195,179,157,110,140,74,17],[186,153,141,113,1,79,200,24,103,160,99,26,174,101,201,216,162,119,1,158,12,92,226,26,82,122,20,255,159,88,208,115],[104,85,21,134,21,32,226,250,193,221,237,100,146,81,178,64,169,117,231,131,241,178,192,123,5,8,247,149,210,206,46,187],[9,144,210,143,108,196,228,206,243,164,5,55,239,37,175,246,107,34,3,25,245,73,61,42,72,86,75,110,80,188,214,85],[193,177,210,118,54,155,166,173,184,3,201,242,196,243,51,246,255,107,248,197,152,195,213,158,136,149,92,252,103,245,151,31],[125,187,89,240,89,48,111,178,15,45,221,6,143,5,218,46,44,25,119,191,110,72,253,192,1,24,236,29,181,7,102,93],[216,159,50,145,246,137,189,40,154,69,57,22,89,246,222,29,48,3,57,29,170,156,36,126,183,158,123,149,172,171,38,123],[87,242,148,227,107,65,36,6,210,38,62,237,230,109,41,226,100,200,175,140,98,22,213,23,132,125,116,16,78,133,180,236],[205,111,4,182,108,27,224,61,36,23,186,113,189,98,145,213,91,94,237,94,126,163,184,143,232,251,120,238,226,190,213,166],[143,82,249,9,49,240,85,121,141,197,93,76,25,179,146,142,53,31,16,47,246,35,38,40,82,151,23,168,121,195,241,154],[166,18,250,170,78,255,203,85,178,48,25,76,43,207,159,210,191,61,244,209,137,13,199,12,162,199,196,172,78,222,0,71],[222,120,118,179,24,59,32,226,91,205,130,15,215,174,188,231,101,132,72,150,220,111,127,64,138,109,72,41,10,181,230,132],[32,67,46,1,82,111,123,220,124,181,244,191,142,21,53,193,154,40,157,105,240,32,112,104,115,62,248,137,111,118,136,115],[247,174,190,137,148,140,154,102,108,122,38,12,21,138,153,178,36,229,214,198,243,230,39,234,175,95,157,53,236,250,81,22],[183,210,57,181,250,124,23,203,97,155,227,11,128,125,149,186,102,77,151,185,8,57,37,134,41,182,8,106,136,209,241,52],[83,51,38,159,38,233,111,74,212,150,147,244,152,79,235,85,109,245,219,156,247,3,146,125,38,197,8,137,98,253,42,80],[12,135,100,194,19,230,166,244,82,69,73,149,180,24,203,206,154,120,16,116,198,180,243,172,231,235,80,57,7,68,187,224],[92,102,240,250,243,194,137,104,20,229,143,123,9,163,201,83,191,152,141,130,234,178,84,233,110,40,119,172,170,214,2,217],[22,188,43,165,230,91,62,123,72,100,210,83,94,121,184,215,211,196,186,72,13,153,52,208,78,137,133,118,79,178,224,57],[173,59,232,5,138,255,11,72,76,67,82,94,92,15,244,222,111,6,227,135,77,210,218,36,65,128,218,148,224,236,19,199],[101,83,164,70,180,107,106,185,204,24,81,144,202,208,169,120,26,120,229,162,113,101,142,146,42,17,220,147,81,217,228,170],[137,239,222,90,198,68,215,47,48,27,251,57,36,36,93,0,236,254,240,217,119,59,249,150,224,58,130,20,137,207,38,121],[117,40,101,177,114,83,193,232,193,30,124,123,182,239,140,47,189,139,107,28,17,138,213,221,119,169,234,212,29,217,157,100],[4,245,85,83,183,194,189,192,193,161,239,83,154,146,176,87,8,144,230,143,57,142,202,156,5,127,43,165,46,69,164,32],[109,43,86,172,228,4,206,236,102,51,56,215,142,108,22,62,87,229,165,39,167,61,207,96,89,100,192,165,115,68,184,166],[197,245,5,214,36,42,227,194,68,161,102,60,176,231,217,220,5,140,121,66,198,231,4,215,156,9,123,124,43,240,173,55],[245,96,184,173,80,78,197,164,190,1,152,193,243,111,27,248,9,116,215,78,229,226,53,57,30,145,120,253,118,207,67,54],[14,111,99,141,135,174,211,80,24,69,224,93,248,41,34,67,141,96,201,94,98,98,209,219,49,36,44,121,210,239,155,248],[86,18,245,82,222,98,145,254,210,3,154,91,132,188,247,96,95,161,88,229,82,32,209,223,13,41,242,120,243,221,19,68],[108,220,209,234,152,32,99,49,190,242,33,61,195,228,32,73,122,218,50,6,196,73,41,169,168,242,124,2,186,246,200,116],[94,166,106,15,93,70,93,35,188,250,71,65,226,145,219,181,231,173,87,102,215,151,87,36,12,168,106,59,16,184,43,91],[170,59,59,72,123,92,210,122,203,239,131,181,135,232,103,167,128,124,66,145,145,49,184,236,145,170,218,176,129,49,254,67],[0,108,99,163,48,93,218,30,188,161,214,110,140,67,32,81,63,207,9,249,253,223,193,195,33,232,137,53,196,248,73,29],[231,237,78,209,55,208,45,217,44,68,105,59,245,253,20,113,124,10,90,112,1,118,129,229,94,4,48,252,65,33,65,240],[72,101,233,28,27,29,9,236,196,126,187,4,223,62,225,226,236,64,70,232,123,123,154,71,200,27,167,228,206,52,177,79],[16,2,14,152,231,231,219,28,22,128,77,215,181,47,205,133,164,18,66,133,55,53,182,198,150,241,247,207,244,77,142,155],[153,49,88,50,47,55,171,185,130,11,10,145,160,167,44,132,114,163,46,149,60,166,192,164,37,148,1,0,81,51,176,169],[182,158,12,154,47,191,143,34,253,224,173,207,102,88,34,136,23,69,76,115,2,217,42,20,80,217,207,69,100,2,248,85],[13,96,65,153,53,202,12,242,218,62,239,86,138,196,240,220,233,210,165,229,81,185,238,63,182,19,55,35,20,213,67,219],[216,229,217,251,240,19,226,111,209,160,32,17,64,25,217,241,187,234,132,148,77,190,209,249,52,237,255,95,138,140,83,41],[253,166,35,185,121,166,52,228,79,65,235,124,69,13,3,130,126,55,31,175,70,136,25,37,196,103,43,144,146,226,176,174],[111,144,165,251,212,159,213,45,38,174,96,59,172,255,34,146,249,186,152,205,255,9,86,231,120,214,185,101,182,42,46,108],[101,13,79,206,232,70,133,253,115,49,188,114,41,110,43,61,232,238,152,225,195,214,174,150,7,137,162,33,18,97,238,72],[152,62,53,17,207,21,222,125,137,49,253,90,56,202,5,7,26,52,73,211,46,103,138,224,178,123,224,153,155,116,35,2],[155,36,105,217,60,130,249,13,30,197,91,210,26,171,19,6,6,85,48,36,159,154,35,73,202,33,192,121,58,88,83,34],[170,129,154,56,109,253,176,103,40,15,101,199,224,132,158,65,242,20,126,128,194,163,173,185,29,90,79,162,8,117,27,50],[104,28,152,193,53,84,158,137,141,209,15,145,27,21,127,220,115,127,132,161,216,31,180,95,215,245,186,49,146,9,30,28],[10,78,89,21,117,165,26,4,110,202,226,190,140,251,126,107,149,68,90,44,82,96,4,32,15,149,221,42,247,200,218,12],[105,104,7,223,230,196,63,52,197,216,244,23,215,40,75,6,99,80,224,80,75,70,175,86,100,123,76,140,214,208,251,74],[141,227,14,103,241,176,138,22,144,103,177,182,165,79,228,168,136,221,186,104,101,44,81,96,209,196,212,30,62,170,193,101],[132,68,32,218,187,193,235,158,51,167,157,157,96,79,58,95,37,159,239,40,176,32,148,39,65,7,42,88,200,208,101,15],[88,183,249,149,246,106,126,200,170,241,246,92,131,236,144,140,10,148,233,212,10,60,80,139,142,171,51,4,94,65,154,188],[232,44,163,1,249,67,11,167,236,89,180,124,171,13,93,236,120,84,200,94,244,215,120,154,165,12,198,248,100,15,80,24],[76,184,198,182,26,146,159,175,21,53,199,173,150,104,40,221,126,149,255,153,188,254,5,225,233,18,25,84,153,149,216,54],[110,96,50,229,211,110,249,246,71,161,6,9,17,6,146,17,248,136,102,234,127,32,252,181,75,158,12,111,68,213,243,94],[220,72,109,147,222,111,158,122,139,104,123,127,49,127,175,222,169,34,179,141,137,168,149,225,133,166,42,208,77,125,251,120],[159,205,159,118,237,217,100,68,94,221,92,226,118,175,22,53,26,212,221,81,47,65,105,252,88,207,142,62,12,133,220,87],[45,220,114,65,195,192,131,218,157,87,126,86,170,211,82,149,196,219,62,100,46,237,182,184,181,181,193,241,3,125,40,196],[47,186,58,231,212,212,227,60,165,47,49,182,154,122,145,127,32,226,188,209,253,1,212,73,236,159,188,201,31,214,6,62],[239,229,249,151,250,237,231,222,253,27,157,221,135,92,247,138,60,92,205,242,156,253,177,156,236,12,118,250,72,70,164,92],[149,99,244,89,169,167,228,217,105,178,91,217,175,141,18,67,79,8,16,201,132,192,247,226,202,250,186,92,30,57,24,223],[236,39,129,146,241,57,146,250,173,146,187,228,232,203,42,147,29,205,157,64,17,75,88,10,136,158,63,40,71,69,129,63],[222,242,149,87,126,74,40,31,63,28,49,95,112,233,205,248,197,49,116,253,166,191,173,109,185,65,234,44,253,42,144,244],[119,37,210,68,202,28,171,7,50,118,15,242,255,53,237,52,8,238,3,205,137,118,187,7,143,148,2,65,205,118,117,10],[225,147,115,253,189,215,245,51,133,123,232,201,222,155,29,80,231,83,21,161,96,129,115,129,160,137,33,69,218,76,129,127],[77,200,51,152,123,122,176,174,64,248,30,148,200,76,78,188,163,84,123,38,102,129,126,226,24,180,96,231,79,44,235,58],[229,223,29,35,139,180,186,243,191,78,70,246,145,239,250,207,160,139,91,151,95,112,219,254,26,113,82,209,49,170,94,167],[112,236,179,15,215,200,229,253,253,48,237,100,111,253,24,165,205,205,141,122,205,87,78,124,83,125,81,210,122,83,86,223],[40,90,131,121,93,152,49,221,222,115,124,44,98,229,107,251,16,42,7,7,3,67,9,91,132,104,96,101,22,9,202,57],[123,53,183,153,75,253,63,87,182,62,53,108,190,117,64,209,58,223,189,196,109,162,175,142,23,96,32,205,138,238,161,1],[114,122,75,238,145,70,233,71,217,54,118,210,67,180,135,187,103,185,173,181,16,164,44,187,109,32,146,251,130,175,8,221],[5,116,6,96,156,66,10,15,152,187,73,22,8,76,31,251,145,29,153,40,137,30,59,74,249,17,53,225,250,157,221,181],[217,173,155,0,122,54,177,218,192,163,169,183,180,51,172,223,33,210,92,127,144,212,153,11,224,91,111,217,18,211,15,110],[15,244,183,139,51,200,101,150,127,248,154,154,1,237,78,12,207,200,104,114,111,72,187,118,172,234,97,134,137,83,162,227],[158,30,44,208,182,96,207,166,209,27,164,224,247,100,225,14,94,206,194,54,205,138,44,177,203,92,139,173,183,188,120,151],[74,195,100,192,0,149,56,240,234,73,234,78,230,108,36,183,183,8,146,66,70,129,220,192,59,126,155,242,109,145,29,169],[22,183,88,83,199,24,6,172,92,255,213,237,137,127,124,99,160,52,82,28,104,220,87,65,57,252,203,213,117,102,96,203],[252,45,113,113,31,154,131,188,79,77,159,132,183,91,172,226,84,195,104,224,169,70,69,80,180,194,97,34,235,14,183,12],[121,177,84,182,57,235,79,228,117,174,95,99,1,187,194,31,25,27,20,86,18,106,85,57,31,153,12,239,171,39,203,157],[238,183,223,146,12,25,59,127,224,11,86,36,60,182,1,204,255,172,150,12,89,132,139,110,187,88,140,68,90,217,155,28],[92,242,19,24,34,127,97,217,20,3,32,106,113,43,203,222,111,166,242,59,253,195,231,18,255,209,7,19,163,59,86,183],[108,76,226,230,120,203,223,85,120,210,205,210,197,76,14,10,127,62,81,242,151,253,208,145,137,62,236,164,68,51,196,92],[26,30,167,247,26,136,17,139,183,80,4,121,58,209,18,135,133,155,163,177,218,179,247,13,71,216,195,138,213,36,25,218],[11,105,196,72,23,213,65,115,190,179,161,76,30,13,209,4,123,8,207,2,119,81,230,131,138,229,195,122,174,37,224,241],[189,138,114,67,187,220,174,150,226,213,126,81,151,21,89,34,168,183,231,75,138,234,57,164,206,214,4,49,204,211,223,110],[220,30,62,192,219,69,250,248,44,127,255,153,149,19,246,168,167,59,45,111,243,28,235,1,233,12,172,40,90,232,6,242],[179,81,118,204,194,254,155,0,252,128,104,188,169,88,182,244,39,39,121,163,102,45,85,104,18,255,132,255,101,123,183,73],[95,199,209,41,172,146,225,140,199,194,222,159,168,59,114,185,51,47,177,13,189,187,69,218,43,0,5,43,233,160,40,22],[129,52,45,193,33,120,242,24,138,228,171,152,26,38,218,35,69,55,224,215,41,100,202,244,188,41,234,54,180,83,21,217],[103,52,97,217,110,197,100,84,210,60,16,200,63,169,105,155,168,14,128,213,50,28,207,40,199,204,37,174,127,182,91,130],[63,134,138,34,57,54,48,113,135,183,30,98,164,123,82,85,175,177,197,75,199,11,41,149,196,246,220,212,28,193,140,103],[126,208,29,143,119,75,147,55,82,3,11,157,65,85,222,247,118,122,137,56,133,4,165,42,7,125,253,150,125,105,245,29],[73,65,58,127,203,46,221,255,244,152,60,186,144,252,202,213,72,4,237,127,214,3,204,244,160,92,2,181,137,72,47,140],[248,104,148,43,166,93,240,24,171,211,154,245,82,1,220,35,52,177,172,164,227,139,81,140,113,177,72,98,233,239,124,76],[238,139,73,250,152,73,207,135,187,201,30,8,206,85,103,89,209,227,53,220,57,189,63,3,102,140,117,96,135,255,67,41],[218,20,209,153,16,166,235,181,41,235,101,243,21,141,40,70,191,139,13,143,217,52,118,209,90,185,117,127,4,68,38,79],[42,39,214,74,20,0,154,4,223,223,63,235,30,156,195,223,83,74,91,247,200,28,101,68,147,196,44,4,146,61,99,108],[184,230,43,184,207,170,190,178,8,1,213,139,247,42,49,66,231,102,110,178,240,175,90,174,230,168,76,116,106,234,132,85],[251,230,194,196,179,119,125,240,31,227,185,166,134,185,111,105,111,71,106,70,179,250,110,24,191,4,114,188,174,9,1,247],[173,249,157,164,2,4,86,244,186,33,10,166,174,84,1,128,21,140,107,177,224,3,3,213,37,36,122,47,32,227,62,253],[55,181,47,209,248,136,163,27,103,149,37,150,162,209,126,114,162,217,17,137,203,133,46,163,219,80,123,11,120,141,125,66],[65,42,172,46,15,244,221,182,87,198,56,88,4,120,51,48,5,49,131,68,206,122,21,130,181,128,214,249,46,118,158,14],[200,151,185,51,136,102,221,213,158,40,100,118,147,83,208,142,118,235,232,182,60,0,33,1,135,230,80,29,222,169,209,185],[156,77,179,37,26,23,38,106,20,21,82,38,177,62,36,18,145,150,40,251,178,245,51,36,238,123,36,255,163,10,74,79],[183,101,164,11,243,214,210,232,212,138,238,233,37,106,32,58,94,104,120,124,51,214,235,7,111,195,227,91,77,107,17,150],[246,235,133,252,219,111,129,27,241,177,178,33,162,254,76,91,145,158,155,163,47,226,30,251,90,155,82,49,83,218,238,4],[169,200,140,192,35,42,228,205,243,234,176,4,107,232,16,136,37,29,54,32,113,217,137,165,157,187,186,235,117,96,150,181],[169,94,157,86,251,45,132,82,0,115,192,138,120,139,216,238,12,218,155,135,126,47,190,127,26,12,1,107,152,101,253,115],[154,137,94,150,79,123,187,28,199,186,14,10,68,145,151,225,244,211,142,90,198,190,52,57,246,119,13,6,50,195,98,58],[84,241,33,133,16,253,45,45,53,245,219,163,36,12,65,65,160,212,190,73,38,94,1,251,82,185,122,44,134,161,255,232],[223,89,124,94,121,179,13,125,225,198,244,182,29,202,221,31,74,233,2,181,64,202,176,137,168,37,100,152,56,128,38,237],[157,7,143,87,204,123,8,85,119,29,208,62,237,121,91,218,46,74,108,17,40,4,220,204,142,214,181,10,205,33,25,167],[171,195,60,254,152,183,84,84,64,133,5,3,73,181,32,170,204,15,221,99,107,6,81,20,63,30,230,123,30,70,106,123],[141,82,30,77,247,42,217,99,60,29,141,80,240,84,82,1,106,165,152,35,54,255,198,10,25,193,130,119,19,240,87,248],[87,62,185,221,165,213,235,170,29,6,165,228,58,41,178,128,54,75,95,189,96,103,166,36,177,230,210,54,190,62,226,250],[24,49,134,192,185,127,250,148,93,184,234,162,47,10,6,36,13,202,18,229,74,220,32,255,231,175,115,43,39,71,73,184],[175,52,224,254,202,175,146,148,181,28,112,253,48,224,201,19,24,190,198,176,253,27,7,68,38,131,70,248,6,52,222,164],[218,42,56,145,251,90,34,171,116,27,247,84,169,222,205,225,160,191,81,133,12,86,12,80,34,242,164,190,46,177,179,10],[55,83,32,177,69,238,188,22,245,218,14,154,97,62,29,85,3,230,127,66,173,242,108,44,41,184,236,140,224,201,37,144],[163,6,245,248,19,68,208,159,69,59,4,243,123,50,210,81,8,233,1,85,185,34,97,169,197,232,228,204,148,202,210,66],[224,49,179,44,208,252,246,107,108,188,107,175,24,92,207,72,40,86,98,243,37,103,103,208,126,163,83,7,10,250,81,168],[116,211,32,122,136,196,92,233,189,142,184,170,10,166,173,193,19,219,107,214,238,186,66,245,63,156,90,232,127,189,48,106],[223,95,3,81,121,160,217,116,118,106,19,155,247,151,211,234,164,102,63,12,112,30,196,33,157,2,232,51,239,240,50,155],[123,233,128,144,136,190,183,252,25,219,195,179,130,140,111,204,136,252,61,53,100,8,36,188,197,165,34,181,95,118,125,154],[66,18,95,21,224,112,118,63,241,152,165,105,234,182,243,84,253,187,225,98,15,60,49,176,173,59,132,163,77,18,192,190],[43,187,23,207,86,203,224,193,44,28,148,255,211,68,95,199,224,171,197,68,104,173,154,185,133,32,229,122,213,126,149,189],[9,111,124,74,219,105,41,142,4,155,106,253,89,80,245,187,53,242,246,100,226,7,243,3,178,69,193,66,61,28,225,248],[217,226,56,35,180,239,185,165,173,170,238,37,46,195,41,14,153,146,160,193,78,106,129,53,198,111,129,111,216,224,104,132],[173,235,124,244,45,62,57,198,126,255,58,89,208,156,168,136,18,242,213,91,154,225,23,134,211,65,97,29,59,133,113,109],[99,71,227,238,238,65,62,169,239,35,45,253,8,26,105,83,160,36,84,12,9,138,92,100,44,104,203,14,155,190,99,6],[137,239,188,64,253,125,193,198,243,13,248,32,175,248,175,93,99,219,148,15,220,250,240,208,88,35,176,89,242,180,148,134],[108,209,162,192,178,85,190,214,180,158,189,146,50,91,96,116,71,223,24,106,98,157,71,165,112,143,114,90,103,144,193,181],[154,41,218,138,248,159,63,94,73,174,10,249,52,152,253,26,251,183,12,167,200,232,219,120,214,241,187,0,37,137,187,72],[222,63,202,152,113,203,168,223,247,125,193,132,186,218,186,9,10,182,27,105,46,177,217,249,176,163,114,212,250,112,96,87],[128,124,27,16,154,84,234,182,68,130,24,209,138,186,197,8,173,55,128,242,100,105,238,17,106,127,100,74,195,53,255,105],[241,27,142,72,246,61,184,174,55,14,250,255,61,81,190,239,70,245,93,38,137,104,167,156,224,84,36,93,100,188,68,164],[206,85,28,164,77,67,14,100,194,6,70,15,34,16,96,249,185,45,178,196,146,211,23,124,211,67,20,58,237,89,98,27],[116,243,106,157,203,135,214,223,88,142,126,29,147,198,72,71,152,56,59,167,243,62,84,118,200,255,68,114,9,196,184,108],[223,69,3,171,119,78,69,135,69,9,148,171,151,16,87,228,212,83,199,78,207,13,183,67,58,168,249,37,219,52,134,208],[212,49,127,101,168,149,71,45,233,152,205,12,9,28,231,69,196,121,180,182,5,80,183,241,16,7,15,125,62,148,77,173],[150,149,253,96,188,216,243,218,3,38,220,106,44,106,99,168,56,127,7,49,63,161,143,146,126,110,195,215,196,82,20,176],[250,234,183,221,199,132,91,155,216,82,194,199,198,225,200,234,198,182,25,239,189,140,213,96,29,45,86,154,206,82,247,114],[188,140,127,131,215,215,178,123,147,130,11,246,112,86,108,28,140,176,205,204,242,116,181,150,65,16,3,135,125,146,143,64],[125,106,32,15,8,53,116,83,49,156,91,166,251,210,25,72,128,253,191,252,188,15,176,87,28,57,97,50,202,6,169,51],[14,120,220,52,103,148,150,28,225,218,191,118,228,174,25,150,22,199,208,78,130,41,167,220,151,64,228,128,217,46,238,43],[46,39,74,44,144,91,150,199,89,253,238,145,228,164,226,232,121,128,15,87,49,19,136,167,42,76,159,22,127,74,65,158],[190,10,202,157,148,30,116,157,19,151,66,147,138,212,199,204,58,177,184,103,166,140,193,102,152,161,70,74,165,3,206,96],[251,202,238,71,94,224,233,181,66,129,70,117,143,35,66,225,111,154,75,131,205,12,173,64,85,154,93,184,19,245,113,0],[45,202,125,133,53,123,12,157,171,6,38,145,199,69,22,59,144,226,247,162,143,174,226,58,99,191,62,51,151,32,191,1],[216,178,133,160,40,127,89,247,62,188,66,118,43,125,238,82,168,71,130,142,234,35,92,139,181,24,34,221,142,44,123,129],[42,20,73,59,138,119,240,150,107,128,139,176,58,24,19,68,114,191,134,31,92,10,121,85,253,182,225,253,98,135,4,162],[246,40,80,189,112,72,207,216,252,43,133,44,198,168,118,254,142,159,194,172,40,215,23,70,192,216,84,96,112,211,30,177],[160,143,145,42,255,212,206,148,27,198,174,3,220,12,216,45,138,216,245,43,242,67,59,119,92,88,12,15,205,104,156,238],[237,173,236,163,43,250,4,109,133,247,100,217,113,163,146,30,178,248,243,162,213,123,200,227,108,176,137,100,214,187,51,23],[238,227,183,250,53,225,172,216,109,192,153,12,182,29,216,248,141,117,137,234,69,27,148,243,7,77,102,106,57,53,121,138],[74,46,197,90,243,6,57,30,192,224,39,58,104,203,253,254,217,163,192,92,180,46,235,2,46,19,115,159,49,91,253,6],[12,41,90,22,1,214,13,251,192,203,199,191,200,135,98,17,164,111,128,234,253,168,148,110,22,34,23,252,119,215,84,223],[105,136,46,11,124,201,165,27,96,30,203,26,236,127,230,19,205,35,83,97,12,112,79,140,0,42,86,200,0,223,126,15],[63,155,157,119,15,174,164,58,252,90,136,23,87,162,191,254,25,100,2,210,139,196,229,53,45,40,255,25,87,19,37,90],[144,99,85,207,3,12,147,214,170,106,234,60,14,94,14,159,216,48,242,126,100,253,15,97,60,15,12,253,192,8,173,43],[175,177,217,35,67,31,215,145,2,153,165,120,222,17,33,168,164,69,163,191,103,179,21,53,91,50,165,222,19,224,159,162],[236,166,203,96,149,164,151,116,13,4,237,209,223,231,110,169,122,168,149,227,240,36,46,63,217,84,142,220,34,51,195,42],[114,8,192,243,70,54,229,161,230,184,32,19,247,172,11,2,61,159,187,212,109,65,126,49,163,205,52,247,139,81,199,246],[175,55,254,240,225,18,75,197,251,128,188,118,40,233,236,233,110,144,104,22,64,106,246,2,159,220,125,49,78,80,40,43],[124,103,133,56,108,221,109,169,56,177,144,15,21,210,39,133,221,50,55,125,231,247,36,11,76,96,154,150,179,192,194,213],[25,137,1,48,138,200,76,182,69,191,39,221,132,55,233,148,115,150,238,217,159,201,152,205,150,71,174,111,90,51,7,114],[214,90,110,137,219,135,130,120,70,72,72,128,234,50,187,129,224,146,42,212,209,214,178,9,109,40,160,35,20,88,37,83],[152,138,90,164,112,223,156,34,233,115,230,155,115,67,32,116,46,141,148,250,162,221,122,136,159,42,48,99,133,58,199,229],[181,207,75,130,243,228,77,100,57,92,39,188,43,53,70,202,190,188,147,78,6,141,164,175,152,63,16,245,239,179,75,16],[66,181,227,231,175,83,108,23,0,106,132,119,17,103,239,196,148,81,5,33,216,126,252,170,202,155,116,91,130,116,150,144],[93,228,219,177,116,190,134,139,138,31,171,63,234,220,107,76,251,182,248,106,17,123,8,94,0,157,241,248,230,185,172,243],[205,170,3,172,197,188,24,41,138,46,52,39,33,3,180,189,243,67,225,160,160,112,81,184,251,217,108,66,69,244,170,138],[50,77,62,198,110,198,98,238,46,3,41,97,233,82,22,193,176,119,206,219,134,16,27,103,156,134,203,191,164,124,18,225],[144,106,8,233,10,32,63,229,180,238,238,104,6,50,14,220,98,210,75,55,157,205,228,74,202,17,83,232,239,184,239,204],[127,70,199,194,19,16,160,226,19,155,75,126,102,146,251,147,125,136,235,207,157,200,221,161,32,129,0,6,244,187,233,140],[26,211,252,193,79,39,248,225,168,5,183,242,92,126,167,136,241,195,129,18,87,231,112,16,90,213,102,217,114,210,126,146],[199,114,97,128,122,136,19,154,66,199,122,187,66,62,193,209,77,197,23,122,92,227,158,92,165,217,235,121,179,104,48,190],[78,245,8,241,4,112,217,232,103,63,13,120,231,179,167,75,67,111,207,204,70,80,230,84,114,217,164,11,161,33,153,212],[139,73,52,67,189,146,194,97,6,52,51,223,228,72,163,165,219,112,104,110,223,194,57,186,76,160,162,90,61,118,128,84],[90,38,139,31,124,171,10,8,66,90,38,195,27,185,240,227,28,253,208,149,244,67,235,251,105,134,131,159,7,0,192,243],[74,9,43,189,37,8,31,205,244,159,173,108,103,58,124,99,209,27,239,91,121,226,237,74,250,249,31,203,170,175,129,62],[148,237,162,27,191,142,216,23,101,216,108,27,153,5,166,74,68,177,154,187,42,53,108,117,5,65,43,152,135,226,63,101],[0,246,3,123,245,51,219,145,223,84,203,230,235,97,254,100,41,151,123,224,241,248,15,24,127,237,123,28,98,48,98,23],[245,89,57,125,199,41,226,152,143,98,61,35,118,47,45,130,58,206,201,17,146,63,39,80,242,7,72,23,157,139,226,51],[175,176,16,140,38,227,23,222,212,157,17,75,240,104,4,116,159,193,84,215,210,151,142,130,154,114,194,73,191,196,107,231],[227,23,34,169,176,17,162,247,245,210,160,80,54,102,54,240,155,31,210,124,181,203,205,115,154,176,136,69,108,155,159,206],[199,236,69,125,182,200,78,25,35,228,110,208,19,198,176,221,251,30,244,189,147,143,115,138,93,164,173,46,187,149,238,168],[161,2,166,154,172,159,80,106,8,1,26,24,184,36,10,248,117,218,155,174,212,239,237,171,114,243,9,157,31,234,60,171],[145,169,34,179,237,122,156,233,86,156,169,12,182,86,155,29,145,183,94,13,4,53,80,196,10,168,165,254,236,43,199,138],[88,226,199,217,171,5,124,82,206,28,43,133,249,28,18,104,26,33,91,43,201,178,82,24,146,116,111,208,203,128,114,116],[41,139,193,103,144,52,135,55,128,214,162,100,79,8,224,39,131,233,172,38,178,81,5,120,26,135,9,72,71,114,221,101],[145,1,5,99,120,125,184,104,29,221,243,138,249,12,185,55,1,229,118,206,154,156,195,196,45,111,237,113,78,136,248,92],[45,223,43,155,229,161,247,116,74,82,105,253,89,126,59,19,162,60,87,67,231,18,154,217,78,137,39,176,180,105,56,51],[143,187,217,111,195,135,219,175,254,73,68,196,109,212,57,37,190,177,172,113,160,135,91,94,170,171,44,216,83,233,220,31],[152,73,242,79,57,137,4,74,227,121,249,220,210,92,234,71,238,75,74,189,184,99,229,177,93,136,129,139,248,200,241,41],[61,24,238,28,234,141,168,118,37,71,124,156,254,233,134,52,91,246,255,42,229,240,162,63,209,55,200,1,230,55,88,79],[145,97,140,45,0,110,46,121,79,74,133,175,210,138,0,63,54,22,81,71,142,34,254,18,46,239,104,57,187,238,11,1],[0,212,30,244,203,4,49,81,113,131,114,224,152,243,45,198,158,164,103,100,84,228,55,158,221,252,77,71,51,173,208,136],[170,12,230,246,120,248,168,158,58,198,115,243,84,10,235,52,228,201,93,254,177,176,197,223,101,12,49,104,197,247,53,77],[21,221,249,128,199,107,91,14,67,163,173,163,98,200,94,252,238,43,175,116,251,20,31,99,148,205,65,233,26,87,53,35],[25,48,133,120,179,109,109,180,69,73,239,145,86,11,64,242,178,177,54,91,226,25,43,241,58,59,6,110,145,240,163,74],[45,143,176,167,87,172,25,222,203,90,30,147,23,54,248,149,109,135,209,91,99,82,44,53,85,84,163,224,188,22,16,75],[238,9,106,156,216,245,45,144,143,192,217,161,123,173,63,174,54,21,29,18,29,239,36,91,91,70,243,187,118,220,70,171],[126,150,75,203,69,99,91,247,5,192,163,54,164,254,125,48,30,116,123,249,69,22,164,180,128,168,222,106,197,65,142,136],[27,121,31,71,55,35,217,224,188,229,210,78,102,6,213,129,139,243,77,225,133,21,163,72,42,127,193,255,38,59,97,91],[134,215,144,218,114,194,59,68,149,150,23,24,141,199,9,79,103,235,178,232,127,90,218,212,32,251,14,74,210,6,241,161],[79,96,224,70,162,8,184,235,179,175,171,93,211,34,133,208,98,125,153,218,194,183,204,47,214,144,130,244,117,98,198,117],[82,127,174,29,65,32,163,170,111,222,162,0,21,60,148,134,226,174,105,92,169,13,186,248,65,49,52,211,194,221,155,242],[0,173,73,108,65,134,158,159,230,111,182,138,248,93,85,134,253,100,236,181,204,32,189,18,211,95,171,224,56,131,79,36],[197,222,196,238,55,24,80,183,126,124,91,237,174,95,80,178,165,116,233,12,83,10,145,46,239,136,127,207,217,99,231,120],[193,27,228,178,141,146,149,40,113,90,229,48,148,67,34,198,103,143,216,156,14,57,184,122,136,6,129,123,195,12,211,41],[194,130,60,24,132,55,199,6,227,234,144,9,43,70,171,159,173,41,97,29,144,166,161,28,160,133,0,220,204,218,242,238],[231,50,103,228,56,204,190,38,204,20,186,131,112,9,121,19,28,2,19,100,46,232,70,223,58,76,167,161,128,62,94,147],[131,107,127,110,120,76,150,86,151,53,169,86,79,225,78,200,175,176,249,37,57,156,107,246,91,245,209,34,247,53,122,59],[144,12,184,76,170,196,4,27,229,221,238,60,71,232,158,193,201,23,193,78,61,156,211,198,228,194,62,250,157,220,96,174],[17,52,123,255,96,126,205,141,106,61,18,246,66,50,16,24,41,244,183,48,129,101,114,34,108,84,155,141,173,102,214,102],[195,156,155,183,171,90,39,9,49,19,164,130,137,71,132,98,3,77,128,247,77,147,24,107,90,192,171,104,9,137,65,23],[2,185,83,114,77,158,89,167,57,3,30,4,17,121,122,235,132,53,148,43,123,9,62,180,140,172,172,91,43,184,112,113],[180,4,142,105,7,0,0,121,25,139,211,238,255,125,125,159,219,97,6,43,251,176,64,139,97,250,58,118,80,142,23,137],[109,200,126,151,135,66,0,35,210,4,109,35,182,36,193,18,112,111,150,24,18,169,198,198,167,51,119,184,194,224,194,158],[170,250,216,6,122,2,219,220,160,101,3,203,177,126,118,165,221,255,241,104,182,208,242,224,174,182,154,105,159,101,59,245],[49,195,15,129,58,151,191,211,25,0,188,18,255,154,196,187,19,100,45,44,81,126,77,252,255,215,46,17,178,31,149,28],[190,161,139,202,164,74,166,50,6,36,108,230,137,4,31,127,116,123,68,180,140,180,226,119,227,66,181,4,99,56,54,131],[157,100,193,131,162,92,166,147,191,21,118,183,136,1,211,72,42,198,147,85,109,25,227,131,34,18,43,20,22,51,5,171],[87,88,143,215,127,204,10,110,41,207,16,175,246,211,199,157,216,244,253,192,77,245,240,103,1,70,51,109,107,37,63,127],[84,151,58,21,220,72,128,153,178,23,111,71,77,42,146,212,12,109,0,79,201,117,28,217,22,179,122,125,180,235,50,104],[34,192,160,186,91,125,241,14,82,230,135,227,85,131,85,46,105,108,219,189,158,178,67,122,177,239,138,245,184,62,41,233],[36,0,110,211,93,227,11,142,160,84,221,255,184,82,19,142,189,211,205,99,168,233,189,85,164,177,182,144,98,240,91,116],[181,62,215,204,47,164,23,36,214,210,68,31,129,60,242,83,12,18,111,21,196,134,71,111,137,169,121,131,159,23,60,95],[79,22,173,224,43,117,168,9,11,144,196,18,229,245,175,16,107,44,232,67,211,93,244,136,64,156,147,19,192,124,82,134],[77,8,55,182,77,103,125,5,193,48,243,244,116,234,66,2,44,231,152,140,205,47,141,2,108,214,211,68,114,166,165,249],[224,127,152,212,66,176,66,245,58,124,135,242,123,16,172,53,215,231,151,223,157,214,29,223,4,44,195,59,113,13,141,217],[97,227,125,1,235,246,72,123,90,173,251,116,202,203,123,197,116,51,126,201,218,68,87,31,10,225,239,228,4,205,68,74],[61,98,65,250,238,43,201,168,37,135,34,30,25,102,125,107,113,197,46,12,143,179,63,34,18,100,23,169,125,162,205,151],[147,222,151,184,84,91,227,64,44,45,5,19,74,157,38,234,140,186,3,177,84,186,169,218,157,84,130,118,21,125,131,131],[68,94,206,58,55,148,115,232,92,198,118,147,167,22,137,22,135,188,202,184,40,199,118,22,66,128,116,82,26,55,40,38],[222,44,100,47,253,23,224,109,244,102,93,229,55,164,147,95,112,59,22,235,117,34,39,59,71,69,86,179,244,163,188,73],[66,180,201,4,118,133,236,51,218,239,101,255,245,8,192,117,217,109,126,52,92,191,129,140,54,44,146,25,232,56,225,191],[193,181,33,126,176,179,51,51,218,151,26,198,57,96,128,198,56,60,94,110,56,215,29,11,188,235,166,10,64,87,212,86],[98,106,154,205,41,113,159,150,115,140,233,181,180,59,139,179,193,72,149,68,81,185,162,7,26,14,1,39,189,48,182,142],[14,126,34,176,130,222,99,112,131,26,239,70,2,209,129,71,123,19,235,129,137,150,249,145,88,66,235,179,8,134,125,34],[97,96,130,91,246,154,196,195,251,107,91,234,119,123,14,106,191,117,101,226,53,52,48,110,175,104,44,19,163,243,82,25],[218,60,137,57,199,8,207,62,174,248,220,134,75,34,13,24,109,144,1,67,28,6,164,10,56,195,114,169,156,43,171,41],[216,127,122,101,62,46,229,46,197,105,212,176,153,123,240,98,162,84,14,142,128,229,103,31,15,97,108,149,88,231,94,171],[20,191,221,24,1,108,120,224,26,4,133,194,11,220,162,107,204,206,242,151,214,251,179,19,253,249,95,120,24,141,40,171],[189,0,7,110,171,138,123,56,122,140,230,152,14,202,152,98,51,162,103,203,154,17,126,116,21,30,4,75,4,216,159,177],[200,169,229,211,211,154,35,46,78,104,131,60,7,6,132,150,72,132,201,57,167,70,220,235,122,145,148,124,250,229,142,76],[11,25,94,95,245,23,8,226,241,60,183,1,200,19,219,120,123,45,232,16,24,21,137,193,154,197,1,233,127,33,95,253],[185,56,135,97,227,70,83,249,172,196,178,120,209,78,170,54,10,236,39,230,25,87,79,48,106,35,46,84,60,84,107,100],[212,116,176,150,188,103,186,225,232,231,107,119,217,100,27,131,66,167,194,199,141,180,4,94,108,26,94,239,154,103,91,60],[193,38,233,119,167,143,162,209,248,223,200,67,117,7,133,53,14,191,182,159,74,30,23,29,26,224,63,34,222,183,216,205],[69,63,201,95,181,157,71,103,38,254,198,237,162,15,70,205,6,240,221,187,187,169,180,161,170,47,142,14,176,183,173,91],[248,136,164,192,142,177,9,222,71,103,64,39,243,40,165,196,185,248,132,179,28,192,14,116,124,51,253,195,152,141,91,57],[79,186,115,28,50,26,85,38,20,236,2,235,121,96,222,150,52,27,0,10,159,29,27,87,18,65,204,19,190,4,167,185],[56,194,195,238,243,147,123,137,2,16,15,25,137,110,181,174,158,46,44,20,0,239,39,43,142,207,234,107,63,187,184,57],[35,160,19,187,128,249,28,20,125,194,31,69,246,34,98,245,59,119,99,131,33,145,155,64,153,209,158,249,52,76,252,75],[38,24,197,100,136,151,15,127,116,78,80,65,44,245,221,106,180,234,177,43,72,32,62,154,56,22,144,74,188,86,168,79],[28,160,254,219,168,38,88,213,49,118,55,239,245,197,91,122,68,20,10,240,23,3,91,97,179,224,26,184,12,19,96,137],[103,154,237,196,38,122,149,253,93,191,237,154,58,107,111,128,76,157,136,30,97,140,198,111,25,80,246,131,193,4,147,190],[251,53,219,87,242,124,143,15,76,253,238,102,250,38,252,180,1,8,91,131,25,108,122,220,79,132,248,213,31,31,139,206],[251,53,219,87,242,124,143,15,76,253,238,102,250,38,252,180,1,8,91,131,25,108,122,220,79,132,248,213,31,31,139,206],[251,53,219,87,242,124,143,15,76,253,238,102,250,38,252,180,1,8,91,131,25,108,122,220,79,132,248,213,31,31,139,206],[251,53,219,87,242,124,143,15,76,253,238,102,250,38,252,180,1,8,91,131,25,108,122,220,79,132,248,213,31,31,139,206],[169,236,5,118,159,14,85,170,193,6,205,225,181,243,17,91,120,143,98,105,197,37,53,179,128,207,75,68,42,202,164,201],[69,207,125,34,72,38,43,40,37,107,108,178,69,237,204,38,100,150,85,76,108,231,177,172,8,145,203,83,102,142,222,85],[167,23,173,59,29,92,254,43,225,110,24,8,30,73,218,98,63,15,169,120,255,215,54,42,186,199,168,31,158,159,203,253],[119,250,146,239,107,123,219,159,254,122,33,193,133,110,230,85,189,12,44,42,194,9,13,31,72,2,65,165,183,131,70,223],[0,1,78,123,54,10,20,134,114,190,249,62,231,16,193,233,86,31,189,159,249,211,212,251,92,101,219,87,45,65,167,236],[33,30,113,85,2,21,37,251,17,208,221,16,151,25,28,30,255,175,58,126,237,165,137,28,43,242,115,87,40,5,52,133],[22,142,104,132,60,166,106,104,218,4,235,135,116,45,182,16,112,172,112,249,172,241,152,65,121,158,159,84,43,211,239,227],[141,128,155,194,19,184,227,195,21,65,253,198,166,47,224,251,186,78,234,194,156,179,46,251,201,168,250,248,143,251,8,138],[214,132,189,237,201,214,158,74,238,210,32,210,181,196,41,3,174,171,204,41,235,15,123,147,51,212,30,34,155,121,244,194],[12,79,202,141,83,167,182,232,90,30,174,209,8,36,91,153,23,83,46,61,163,198,56,220,88,36,179,154,176,89,34,180],[24,149,18,195,27,119,107,223,35,68,200,10,10,154,213,85,234,87,39,126,27,185,155,50,55,27,49,181,52,186,22,89],[105,45,236,209,209,8,255,244,35,218,70,170,89,9,81,107,111,52,31,21,128,16,31,178,75,105,21,181,169,145,246,121],[17,216,177,107,212,36,187,242,1,133,248,252,27,87,183,87,202,17,86,186,249,144,239,75,237,168,154,165,233,199,42,240],[65,108,177,206,44,207,153,57,18,76,140,155,201,21,5,63,119,127,39,67,109,54,38,196,95,247,199,199,105,186,4,126],[147,230,171,147,185,74,21,252,70,13,44,95,86,57,244,246,223,114,203,191,27,249,239,122,189,66,177,132,11,152,239,200],[253,85,99,176,247,252,234,243,183,66,54,67,146,176,67,59,147,116,153,253,39,71,38,110,27,239,217,205,211,50,209,141],[62,113,194,126,200,126,240,60,247,154,156,79,32,126,199,101,222,201,42,141,151,140,28,181,17,59,134,216,183,116,212,194],[66,183,252,187,24,152,233,152,111,69,186,144,79,188,40,123,170,12,49,184,85,72,77,215,250,236,231,184,238,4,44,122],[68,126,47,10,112,239,151,156,51,172,49,247,77,250,206,194,7,87,120,180,20,58,120,216,250,155,2,62,195,59,63,158],[135,192,81,201,65,114,125,36,117,84,139,136,39,159,43,78,216,89,153,207,223,187,104,245,95,64,25,74,12,2,140,211],[129,237,216,131,169,210,23,151,120,203,140,215,72,15,238,97,114,88,121,232,174,154,186,178,50,79,0,129,22,248,238,123],[144,170,245,129,254,238,246,218,22,229,125,17,172,176,109,103,52,252,216,72,193,92,1,156,161,243,102,13,156,115,232,109],[133,43,97,200,221,3,41,91,6,242,71,243,160,212,166,166,231,217,12,210,76,56,51,39,198,176,229,45,222,23,95,222],[206,233,114,25,104,71,63,128,173,80,217,110,108,186,102,38,101,47,13,29,87,211,22,3,55,17,253,155,105,123,218,182],[227,193,249,75,126,18,59,182,181,52,124,251,143,254,58,169,167,51,140,170,240,31,129,159,83,91,0,1,168,40,210,172],[177,242,70,166,36,202,82,104,2,40,35,16,106,118,244,164,54,225,228,8,135,182,142,193,122,177,55,198,115,160,220,83],[199,158,199,112,63,1,73,184,6,110,184,148,65,63,221,203,63,39,103,209,212,15,192,12,172,136,188,29,160,112,147,104],[252,193,197,32,1,202,212,244,24,239,72,250,60,188,20,227,56,220,103,82,236,96,168,10,72,109,121,124,232,111,106,49],[218,109,197,127,65,225,208,119,214,211,130,185,88,129,129,45,154,242,212,196,79,230,102,71,12,152,245,125,172,110,86,230],[47,195,71,19,92,241,24,112,205,195,71,76,190,192,236,1,29,54,158,40,72,221,155,57,103,150,40,117,92,64,22,184],[6,26,189,77,232,169,153,101,194,133,1,63,234,25,5,74,104,109,146,107,27,241,188,215,51,51,190,76,145,172,73,11],[167,113,76,207,188,76,101,18,85,38,135,203,104,125,74,143,86,112,117,4,177,152,167,190,153,70,223,156,124,20,205,253],[144,249,157,252,91,25,89,30,250,121,47,87,66,237,219,199,188,124,25,12,80,80,196,4,191,13,40,248,114,4,72,158],[77,32,3,73,124,190,5,106,95,250,49,91,28,185,46,211,87,172,231,8,61,40,193,249,28,118,30,126,228,92,200,196],[77,32,3,73,124,190,5,106,95,250,49,91,28,185,46,211,87,172,231,8,61,40,193,249,28,118,30,126,228,92,200,196],[77,32,3,73,124,190,5,106,95,250,49,91,28,185,46,211,87,172,231,8,61,40,193,249,28,118,30,126,228,92,200,196],[77,32,3,73,124,190,5,106,95,250,49,91,28,185,46,211,87,172,231,8,61,40,193,249,28,118,30,126,228,92,200,196],[99,38,242,173,182,52,91,230,156,154,119,132,148,148,64,8,58,131,237,112,196,172,228,5,66,40,13,76,17,101,139,160],[206,36,100,19,226,214,242,75,196,188,41,167,229,36,140,135,171,209,182,94,159,144,44,24,240,116,139,194,188,78,88,223],[160,77,31,200,198,77,44,119,42,33,197,100,155,172,133,160,178,122,65,191,135,147,81,197,159,219,143,28,226,240,230,28],[6,65,47,96,47,236,93,157,33,208,83,255,170,80,7,2,189,16,236,127,43,190,65,247,208,172,49,170,168,192,51,147],[10,27,118,166,191,220,17,189,192,76,169,104,236,86,66,136,143,50,21,160,30,130,79,76,244,176,82,166,222,29,68,63],[50,7,17,122,96,67,119,210,248,61,223,158,113,126,235,33,35,85,10,149,16,209,204,234,148,224,16,228,139,246,144,88],[23,95,24,219,170,40,23,72,169,113,186,174,152,129,87,47,126,185,41,100,233,161,192,150,168,115,73,76,57,103,35,155],[238,254,28,44,142,255,241,80,175,152,74,148,172,168,171,27,84,58,202,199,69,232,182,49,150,17,207,186,166,119,65,120],[176,14,167,236,18,213,119,104,71,94,74,242,95,91,246,119,114,249,8,190,12,126,215,130,214,88,222,192,40,181,10,10],[244,112,229,247,177,172,29,144,81,46,239,84,84,102,28,237,223,222,115,163,193,86,180,233,95,242,45,5,190,142,228,150],[48,115,123,92,6,237,143,62,84,187,189,248,224,253,229,197,83,107,223,114,38,171,76,58,59,227,24,9,163,98,129,239],[120,141,130,36,106,29,211,144,25,219,170,212,217,15,92,59,229,213,196,95,149,228,251,214,52,81,139,198,201,128,177,212],[116,5,198,178,134,116,123,57,145,249,38,128,181,171,241,217,98,245,108,227,158,141,13,182,190,1,208,60,60,177,180,116],[114,26,43,118,99,189,240,99,13,174,57,50,182,148,142,98,136,11,32,168,19,231,81,101,40,43,236,228,221,148,66,202],[189,180,206,232,220,53,193,69,94,102,190,209,52,59,88,152,5,37,95,101,172,149,122,175,20,208,31,125,198,252,249,179],[53,8,2,44,105,76,223,250,83,157,96,60,255,10,174,81,225,67,18,90,153,112,179,113,158,96,34,57,65,152,6,226],[110,132,205,95,44,133,25,4,153,84,211,162,211,25,35,175,173,12,121,245,192,35,223,176,85,111,89,89,241,180,210,154],[81,137,242,95,219,202,37,196,25,44,105,236,116,136,67,122,46,74,52,124,187,48,211,197,150,182,88,255,222,178,112,142],[139,74,254,137,95,132,88,236,202,105,210,172,9,182,162,213,213,166,166,45,153,115,231,113,149,22,162,247,203,81,151,134],[206,108,105,102,68,251,32,220,221,169,76,120,81,23,79,103,83,229,149,107,22,65,216,142,239,47,119,203,200,152,237,76],[71,145,5,34,96,195,154,11,26,42,192,145,252,27,127,234,230,198,24,163,113,80,101,203,25,193,171,33,95,154,211,0],[18,216,77,55,149,93,82,100,252,38,8,45,6,116,209,219,165,108,240,252,53,108,69,78,60,118,102,173,163,23,140,179],[176,224,185,71,44,68,190,227,135,103,193,147,42,239,189,171,101,140,180,182,9,5,130,209,142,210,22,27,131,86,23,179],[228,46,139,109,153,55,81,185,251,43,239,47,173,44,201,110,17,209,55,39,115,249,157,150,27,181,152,134,143,96,165,170],[78,217,144,210,188,96,31,144,42,95,155,186,90,199,143,104,48,192,120,234,134,125,228,66,168,212,122,49,180,208,223,69],[156,156,211,47,104,52,238,181,125,97,219,142,209,3,111,150,2,219,158,231,193,136,206,115,115,192,121,31,49,124,34,134],[55,234,224,125,96,54,63,89,22,55,200,196,202,100,224,118,206,175,186,193,206,176,204,244,168,230,122,38,44,129,195,226],[233,156,166,110,110,84,189,199,234,153,60,156,255,229,158,72,11,147,25,157,233,123,72,131,152,106,228,3,13,136,136,21],[208,199,172,44,132,73,70,1,13,46,24,149,109,143,19,131,80,161,180,43,33,126,100,163,65,242,247,36,154,204,104,124],[64,234,97,39,44,172,82,15,36,198,208,131,51,129,234,142,55,120,230,226,138,11,218,100,218,84,255,95,197,95,72,82],[113,140,195,20,196,76,37,134,97,59,4,42,13,67,18,25,12,152,103,211,204,77,66,62,179,77,237,130,245,199,206,145],[122,184,35,13,18,99,92,249,66,162,25,26,71,70,61,28,17,227,179,45,83,20,238,150,45,201,30,40,13,3,99,175],[238,193,154,28,117,159,229,251,0,32,131,232,107,108,217,219,144,38,37,226,141,77,214,212,203,137,71,28,132,65,89,151]]},"StartState":{"machineHash":[32,156,175,218,156,1,130,161,224,171,57,155,37,199,7,13,107,127,109,155,238,57,130,63,226,149,232,90,228,34,154,40],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":816828,"sendCount":0,"logCount":1,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[220,9,133,16,46,65,66,31,213,113,151,134,218,108,161,87,213,48,0,194,33,145,235,24,250,16,37,255,78,177,73,106]},"SegmentToChallenge":290,"InconsistentSegment":{"Start":816827,"Length":171},"SubCuts":[[190,161,139,202,164,74,166,50,6,36,108,230,137,4,31,127,116,123,68,180,140,180,226,119,227,66,181,4,99,56,54,131],[190,161,139,202,164,74,166,50,6,36,108,230,137,4,31,127,116,123,68,180,140,180,226,119,227,66,181,4,99,56,54,131],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[154,96,251,212,5,214,91,243,114,201,209,183,27,98,56,189,99,136,234,0,208,64,20,173,161,30,43,56,237,162,67,101],[255,111,50,246,210,53,135,87,211,175,35,252,205,224,16,214,182,238,166,185,12,31,68,223,19,90,83,125,74,175,216,230],[255,111,50,246,210,53,135,87,211,175,35,252,205,224,16,214,182,238,166,185,12,31,68,223,19,90,83,125,74,175,216,230],[81,231,238,48,84,191,47,239,145,195,48,34,237,104,124,248,71,97,34,113,54,19,158,163,21,88,92,74,99,18,16,135],[244,53,202,65,240,177,165,16,213,92,154,83,105,162,87,255,173,19,175,187,203,30,181,11,92,195,103,164,98,203,26,166],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[226,149,1,42,39,252,126,253,193,188,199,170,79,159,171,104,189,127,245,251,137,246,101,206,135,228,247,198,253,153,88,208],[166,212,178,58,163,60,77,40,154,151,227,246,248,4,149,176,104,91,212,172,246,214,53,71,190,212,208,138,234,23,98,156],[145,45,183,185,83,185,162,54,106,53,59,89,241,51,9,166,165,81,158,49,43,173,173,242,3,200,77,126,177,174,186,140],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[214,93,110,237,223,201,211,169,25,22,243,238,155,8,14,215,92,38,11,100,151,218,113,234,232,217,98,253,126,204,247,103],[214,93,110,237,223,201,211,169,25,22,243,238,155,8,14,215,92,38,11,100,151,218,113,234,232,217,98,253,126,204,247,103],[47,186,145,64,103,191,67,196,137,20,119,28,1,121,116,174,105,178,101,68,47,46,23,106,231,212,109,5,155,38,187,96],[199,112,21,142,217,225,200,0,201,68,137,143,87,173,51,50,95,200,159,63,239,166,246,37,210,138,250,106,47,67,156,235],[199,112,21,142,217,225,200,0,201,68,137,143,87,173,51,50,95,200,159,63,239,166,246,37,210,138,250,106,47,67,156,235],[173,227,105,0,237,180,160,107,175,244,6,61,234,188,254,105,182,136,141,126,133,48,11,82,70,117,85,102,94,21,254,227],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[131,94,48,23,197,13,198,78,191,136,58,7,163,70,136,234,219,182,217,5,76,120,172,42,193,135,27,126,163,108,117,68],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[179,49,90,87,56,44,116,27,229,248,1,154,164,135,2,154,127,109,128,2,191,58,239,236,10,100,98,162,187,26,63,64],[29,203,157,202,38,96,121,91,139,88,164,227,107,209,179,62,150,98,9,77,70,186,66,100,5,149,15,232,91,180,149,214],[84,99,168,58,123,103,201,124,64,194,158,40,119,248,244,27,145,175,140,232,53,94,81,178,225,125,100,199,183,77,168,105],[84,99,168,58,123,103,201,124,64,194,158,40,119,248,244,27,145,175,140,232,53,94,81,178,225,125,100,199,183,77,168,105],[84,99,168,58,123,103,201,124,64,194,158,40,119,248,244,27,145,175,140,232,53,94,81,178,225,125,100,199,183,77,168,105],[84,99,168,58,123,103,201,124,64,194,158,40,119,248,244,27,145,175,140,232,53,94,81,178,225,125,100,199,183,77,168,105],[138,125,205,72,49,142,253,199,126,169,253,86,92,212,11,70,200,164,244,61,215,134,44,77,95,146,23,87,187,218,8,41],[50,123,56,145,73,133,115,20,243,162,112,33,197,166,246,80,3,175,195,207,15,217,243,23,220,209,43,192,77,115,101,160],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[97,119,172,239,11,6,246,241,41,219,126,100,109,177,159,0,251,151,72,201,222,3,32,216,80,107,48,62,10,168,101,92],[69,181,202,223,131,122,116,219,54,67,163,71,114,186,214,206,249,144,158,48,126,8,250,9,82,52,55,174,9,221,225,136],[69,181,202,223,131,122,116,219,54,67,163,71,114,186,214,206,249,144,158,48,126,8,250,9,82,52,55,174,9,221,225,136],[69,181,202,223,131,122,116,219,54,67,163,71,114,186,214,206,249,144,158,48,126,8,250,9,82,52,55,174,9,221,225,136],[69,181,202,223,131,122,116,219,54,67,163,71,114,186,214,206,249,144,158,48,126,8,250,9,82,52,55,174,9,221,225,136],[95,78,66,238,71,16,98,25,13,90,215,159,104,119,30,181,59,244,93,254,68,184,39,118,6,193,5,231,3,28,2,107],[95,78,66,238,71,16,98,25,13,90,215,159,104,119,30,181,59,244,93,254,68,184,39,118,6,193,5,231,3,28,2,107],[95,78,66,238,71,16,98,25,13,90,215,159,104,119,30,181,59,244,93,254,68,184,39,118,6,193,5,231,3,28,2,107],[19,199,183,26,58,87,102,74,89,243,23,89,207,48,129,56,234,23,240,152,218,162,20,138,66,61,76,237,37,33,183,106],[19,199,183,26,58,87,102,74,89,243,23,89,207,48,129,56,234,23,240,152,218,162,20,138,66,61,76,237,37,33,183,106],[57,19,220,183,162,235,123,241,236,27,3,217,131,222,163,57,109,166,58,82,199,68,72,109,181,118,220,226,38,115,222,151],[57,19,220,183,162,235,123,241,236,27,3,217,131,222,163,57,109,166,58,82,199,68,72,109,181,118,220,226,38,115,222,151],[57,19,220,183,162,235,123,241,236,27,3,217,131,222,163,57,109,166,58,82,199,68,72,109,181,118,220,226,38,115,222,151]]},{"Kind":"OneStepProof","Assertion":{"beforeState":{"machineHash":[240,192,227,118,84,230,156,203,61,223,23,132,232,48,159,241,229,133,210,100,96,157,71,163,141,174,30,29,197,65,193,214],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":766873,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"afterState":{"machineHash":[222,173,190,239,26,158,255,82,238,77,82,93,135,94,59,41,57,223,67,92,158,68,231,247,8,33,172,61,160,6,57,103],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":835637,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]}},"PrevBisection":{"ChallengedSegment":{"Start":816827,"Length":171},"Cuts":[[190,161,139,202,164,74,166,50,6,36,108,230,137,4,31,127,116,123,68,180,140,180,226,119,227,66,181,4,99,56,54,131],[190,161,139,202,164,74,166,50,6,36,108,230,137,4,31,127,116,123,68,180,140,180,226,119,227,66,181,4,99,56,54,131],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[154,96,251,212,5,214,91,243,114,201,209,183,27,98,56,189,99,136,234,0,208,64,20,173,161,30,43,56,237,162,67,101],[255,111,50,246,210,53,135,87,211,175,35,252,205,224,16,214,182,238,166,185,12,31,68,223,19,90,83,125,74,175,216,230],[255,111,50,246,210,53,135,87,211,175,35,252,205,224,16,214,182,238,166,185,12,31,68,223,19,90,83,125,74,175,216,230],[81,231,238,48,84,191,47,239,145,195,48,34,237,104,124,248,71,97,34,113,54,19,158,163,21,88,92,74,99,18,16,135],[244,53,202,65,240,177,165,16,213,92,154,83,105,162,87,255,173,19,175,187,203,30,181,11,92,195,103,164,98,203,26,166],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[226,149,1,42,39,252,126,253,193,188,199,170,79,159,171,104,189,127,245,251,137,246,101,206,135,228,247,198,253,153,88,208],[166,212,178,58,163,60,77,40,154,151,227,246,248,4,149,176,104,91,212,172,246,214,53,71,190,212,208,138,234,23,98,156],[145,45,183,185,83,185,162,54,106,53,59,89,241,51,9,166,165,81,158,49,43,173,173,242,3,200,77,126,177,174,186,140],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[214,93,110,237,223,201,211,169,25,22,243,238,155,8,14,215,92,38,11,100,151,218,113,234,232,217,98,253,126,204,247,103],[214,93,110,237,223,201,211,169,25,22,243,238,155,8,14,215,92,38,11,100,151,218,113,234,232,217,98,253,126,204,247,103],[47,186,145,64,103,191,67,196,137,20,119,28,1,121,116,174,105,178,101,68,47,46,23,106,231,212,109,5,155,38,187,96],[199,112,21,142,217,225,200,0,201,68,137,143,87,173,51,50,95,200,159,63,239,166,246,37,210,138,250,106,47,67,156,235],[199,112,21,142,217,225,200,0,201,68,137,143,87,173,51,50,95,200,159,63,239,166,246,37,210,138,250,106,47,67,156,235],[173,227,105,0,237,180,160,107,175,244,6,61,234,188,254,105,182,136,141,126,133,48,11,82,70,117,85,102,94,21,254,227],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[131,94,48,23,197,13,198,78,191,136,58,7,163,70,136,234,219,182,217,5,76,120,172,42,193,135,27,126,163,108,117,68],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[44,13,64,0,176,159,22,177,250,210,56,12,194,170,23,0,73,179,54,12,30,205,85,251,187,66,72,193,115,114,101,187],[179,49,90,87,56,44,116,27,229,248,1,154,164,135,2,154,127,109,128,2,191,58,239,236,10,100,98,162,187,26,63,64],[29,203,157,202,38,96,121,91,139,88,164,227,107,209,179,62,150,98,9,77,70,186,66,100,5,149,15,232,91,180,149,214],[84,99,168,58,123,103,201,124,64,194,158,40,119,248,244,27,145,175,140,232,53,94,81,178,225,125,100,199,183,77,168,105],[84,99,168,58,123,103,201,124,64,194,158,40,119,248,244,27,145,175,140,232,53,94,81,178,225,125,100,199,183,77,168,105],[84,99,168,58,123,103,201,124,64,194,158,40,119,248,244,27,145,175,140,232,53,94,81,178,225,125,100,199,183,77,168,105],[84,99,168,58,123,103,201,124,64,194,158,40,119,248,244,27,145,175,140,232,53,94,81,178,225,125,100,199,183,77,168,105],[138,125,205,72,49,142,253,199,126,169,253,86,92,212,11,70,200,164,244,61,215,134,44,77,95,146,23,87,187,218,8,41],[50,123,56,145,73,133,115,20,243,162,112,33,197,166,246,80,3,175,195,207,15,217,243,23,220,209,43,192,77,115,101,160],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[4,6,92,248,58,221,149,85,146,190,27,113,54,7,69,24,180,191,43,89,155,69,18,252,204,141,146,174,9,183,21,92],[97,119,172,239,11,6,246,241,41,219,126,100,109,177,159,0,251,151,72,201,222,3,32,216,80,107,48,62,10,168,101,92],[69,181,202,223,131,122,116,219,54,67,163,71,114,186,214,206,249,144,158,48,126,8,250,9,82,52,55,174,9,221,225,136],[69,181,202,223,131,122,116,219,54,67,163,71,114,186,214,206,249,144,158,48,126,8,250,9,82,52,55,174,9,221,225,136],[69,181,202,223,131,122,116,219,54,67,163,71,114,186,214,206,249,144,158,48,126,8,250,9,82,52,55,174,9,221,225,136],[69,181,202,223,131,122,116,219,54,67,163,71,114,186,214,206,249,144,158,48,126,8,250,9,82,52,55,174,9,221,225,136],[95,78,66,238,71,16,98,25,13,90,215,159,104,119,30,181,59,244,93,254,68,184,39,118,6,193,5,231,3,28,2,107],[95,78,66,238,71,16,98,25,13,90,215,159,104,119,30,181,59,244,93,254,68,184,39,118,6,193,5,231,3,28,2,107],[95,78,66,238,71,16,98,25,13,90,215,159,104,119,30,181,59,244,93,254,68,184,39,118,6,193,5,231,3,28,2,107],[19,199,183,26,58,87,102,74,89,243,23,89,207,48,129,56,234,23,240,152,218,162,20,138,66,61,76,237,37,33,183,106],[19,199,183,26,58,87,102,74,89,243,23,89,207,48,129,56,234,23,240,152,218,162,20,138,66,61,76,237,37,33,183,106],[57,19,220,183,162,235,123,241,236,27,3,217,131,222,163,57,109,166,58,82,199,68,72,109,181,118,220,226,38,115,222,151],[57,19,220,183,162,235,123,241,236,27,3,217,131,222,163,57,109,166,58,82,199,68,72,109,181,118,220,226,38,115,222,151],[57,19,220,183,162,235,123,241,236,27,3,217,131,222,163,57,109,166,58,82,199,68,72,109,181,118,220,226,38,115,222,151]]},"SegmentToChallenge":69,"ChallengedSegment":{"Start":816896,"Length":1},"PreviousCut":{"machineHash":[134,104,83,112,79,139,211,129,147,30,244,252,29,225,59,130,113,36,142,237,172,70,115,132,170,210,169,63,161,67,217,19],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":816896,"sendCount":0,"logCount":1,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[220,9,133,16,46,65,66,31,213,113,151,134,218,108,161,87,213,48,0,194,33,145,235,24,250,16,37,255,78,177,73,106]},"ProofData":"0x72010000000000000000000000000000000000000000000000000000000000000000000093d28997736f54200a316dec9b062720e8b0d6ddc00a82ddddea84bdfeb5e955bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a0000000000000000000000000000000000000000000000000000000000000001fa20c65d5c4489f816da005c7eb07bfbbee9cf1a55a6ea8039816f4633a1ea920000000000000000000000000000000000000000000000000000000000000034024cb10f609e0e48dda002713bce746f47193dc70d271089e0f3806ad3e494a6df000000000000000000000000000000000000000000000000000000000000080b02bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a0000000000000000000000000000000000000000000000000000000000000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff388ff993b51a98d92606ba2be0a3143b8d466344c42d96bb4188cdff3db67b3890272010b9be6b9f6b0ec4ad126c429961f3951773f7381b700000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000231f401d00000000000000000000000000000000000000000000000000000000000000c0ece83efd40ff2c9c69c406a49cbd4e7019fc5807db782ea78e3ee698923a412c000000000000000000000000000000000000000000000000000000000000000344edde536e3f4df60ef7ec43bc928f7438fa9804cb64ef42045ab4781bbc0bb300000000000000000000000000000000000000000000000000000000000000001567aa7175e04611d194275bb504cc64e920959dd01df9d86ab047367aa4c53400000000000000000000000035248943dcb4b8e5dbbb67d1f7d3ab1bc36ce9a8000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100ec7a56f92696a470fa3ced485f2121e5e76d10284cbc247d1fef07203bf7a37dc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47002","BufferProofData":"0x"},null,null,null,null,null,null,null,null,null,null,{"Kind":"Timeout"}],"AsserterError":null} \ No newline at end of file +{"ChallengedAssertion":{"beforeState":{"machineHash":[143,98,77,89,7,174,68,16,102,217,175,184,111,255,113,119,81,83,45,86,204,184,69,156,19,9,87,11,247,164,133,59],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":766873,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"afterState":{"machineHash":[222,173,190,239,39,103,33,82,24,144,250,144,214,103,82,143,107,231,41,239,49,231,187,94,93,252,109,243,17,5,190,91],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":837224,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]}},"Messages":[{"Kind":11,"Sender":"0x9be6b9f6b0ec4ad126c429961f3951773f7381b7","InboxSeqNum":0,"GasPrice":589250589,"Data":"0xece83efd40ff2c9c69c406a49cbd4e7019fc5807db782ea78e3ee698923a412c000000000000000000000000000000000000000000000000000000000000000344edde536e3f4df60ef7ec43bc928f7438fa9804cb64ef42045ab4781bbc0bb300000000000000000000000000000000000000000000000000000000000000001567aa7175e04611d194275bb504cc64e920959dd01df9d86ab047367aa4c53400000000000000000000000035248943dcb4b8e5dbbb67d1f7d3ab1bc36ce9a8","ChainTime":{"BlockNum":4,"Timestamp":40}}],"Moves":[{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":766873,"Length":70351},"Cuts":[[200,75,219,152,177,44,152,161,216,94,150,235,74,175,88,46,163,169,174,157,186,8,114,5,17,80,247,221,136,3,5,143],[54,222,49,227,48,82,44,116,122,254,77,48,36,108,141,93,255,166,50,138,135,130,82,227,224,224,214,203,36,169,177,200]]},"StartState":{"machineHash":[143,98,77,89,7,174,68,16,102,217,175,184,111,255,113,119,81,83,45,86,204,184,69,156,19,9,87,11,247,164,133,59],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":766873,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"SegmentToChallenge":0,"InconsistentSegment":{"Start":766873,"Length":70351},"SubCuts":[[200,75,219,152,177,44,152,161,216,94,150,235,74,175,88,46,163,169,174,157,186,8,114,5,17,80,247,221,136,3,5,143],[14,205,36,68,87,134,232,231,43,42,160,198,93,7,142,239,130,52,205,120,63,210,35,102,182,10,118,239,34,74,14,90],[184,43,35,134,26,255,124,205,143,20,81,157,201,126,4,204,156,77,53,162,214,101,230,156,60,82,140,48,18,151,141,240],[116,241,113,224,118,114,82,16,222,191,191,141,111,143,227,15,185,76,231,251,201,250,144,116,203,214,132,31,173,152,86,151],[98,238,56,146,76,224,17,114,130,217,118,117,40,190,138,34,94,20,174,100,88,195,124,106,154,178,138,202,17,2,142,16],[152,109,161,104,221,137,27,146,222,55,190,95,25,157,224,24,82,239,253,132,82,135,159,158,239,11,136,208,35,126,193,94],[139,209,172,18,195,100,133,114,215,60,154,17,202,45,202,253,254,132,140,161,201,38,92,134,73,167,62,198,176,224,122,214],[74,106,254,149,184,138,134,120,155,225,10,231,29,73,125,90,209,172,146,9,26,68,0,246,16,112,226,201,107,162,157,138],[239,46,84,171,174,193,195,4,8,178,146,75,135,195,252,201,220,117,36,85,33,178,67,205,13,12,27,43,245,111,210,134],[251,43,153,133,212,18,131,100,40,226,11,177,60,126,19,48,95,228,169,0,45,141,191,176,148,98,205,240,253,131,233,93],[26,253,250,46,170,90,86,0,149,120,76,95,204,196,125,150,243,44,97,169,194,34,13,103,203,195,212,30,170,13,213,124],[135,196,232,235,104,28,21,15,28,12,107,6,79,245,193,91,125,27,127,168,152,200,191,2,184,110,174,61,74,115,98,242],[90,3,11,184,6,203,45,42,220,39,123,229,165,127,231,105,212,83,56,73,199,82,38,130,53,160,234,188,213,234,143,205],[248,189,170,227,236,102,84,93,245,176,238,10,243,158,186,163,228,1,222,11,81,171,52,0,39,221,152,191,62,159,243,40],[120,164,224,145,79,102,195,64,240,16,155,15,91,252,27,18,10,37,116,255,115,39,70,140,161,103,56,134,77,107,28,246],[140,120,59,103,20,163,198,72,209,162,239,171,122,248,150,248,189,104,244,166,251,174,40,58,102,235,252,115,128,87,214,250],[186,104,182,140,197,169,122,15,126,39,227,208,22,251,171,40,56,149,249,171,170,46,199,224,158,11,226,80,144,197,64,58],[106,56,201,96,203,104,16,224,16,217,46,51,131,36,49,135,69,175,244,34,189,56,87,145,137,174,40,247,198,12,202,161],[11,169,165,173,156,113,131,6,142,10,241,244,111,183,91,46,215,165,69,102,8,57,18,9,124,156,68,93,188,198,41,2],[30,142,106,140,161,125,239,206,38,124,220,193,82,77,89,176,142,244,6,74,111,128,236,233,114,180,35,219,65,236,102,18],[172,122,146,97,199,5,231,51,85,200,226,163,158,197,62,196,63,116,146,243,190,1,10,23,109,217,152,37,63,78,15,17],[251,146,66,75,75,89,186,1,231,111,191,156,223,218,192,72,189,102,220,169,43,102,20,149,237,180,28,175,171,61,25,239],[44,20,50,44,151,1,218,104,146,46,144,194,101,31,87,172,182,74,158,69,100,212,217,122,20,26,26,121,238,197,107,237],[166,222,14,198,143,82,171,255,22,249,180,98,232,104,154,225,91,70,201,35,201,91,86,155,193,43,191,122,253,87,46,240],[107,10,169,92,189,22,46,249,251,69,221,17,82,233,131,210,160,217,21,188,111,192,100,104,70,166,212,195,89,142,122,172],[134,151,216,224,170,192,200,87,155,247,181,114,109,54,114,191,194,134,52,53,210,27,205,28,126,75,224,202,119,111,226,217],[186,190,70,108,10,218,71,85,126,250,3,32,65,19,171,40,96,77,251,42,79,154,127,119,38,215,102,222,16,220,17,0],[222,89,148,14,101,120,147,220,14,42,185,98,189,109,108,88,10,9,173,16,92,40,167,235,51,195,3,176,26,228,58,196],[175,43,118,211,13,10,7,2,85,10,178,200,120,182,193,229,254,205,63,237,21,252,91,104,183,24,154,251,196,81,186,121],[32,67,179,165,26,97,37,118,148,153,23,124,90,195,32,45,135,169,58,197,103,34,215,217,218,58,11,64,104,48,207,129],[120,196,151,205,140,33,180,179,59,148,45,26,43,241,50,95,210,154,47,57,204,169,55,235,33,73,126,100,237,68,152,92],[82,190,141,96,53,145,173,247,228,76,147,73,61,29,63,99,154,22,29,242,254,228,19,48,59,168,164,62,141,33,242,184],[15,104,135,188,111,165,254,235,100,24,84,68,196,41,151,176,175,55,158,70,137,75,66,6,125,95,83,164,221,50,186,119],[255,220,122,34,18,148,57,232,71,137,95,161,224,101,188,88,254,113,137,57,7,53,74,182,136,63,237,72,164,83,192,127],[49,218,51,8,239,198,8,224,27,115,161,83,186,55,155,29,29,41,197,200,93,144,205,70,162,201,192,44,105,242,6,203],[228,39,32,21,31,55,91,103,69,140,87,69,227,85,79,208,166,72,10,38,149,245,238,239,242,123,46,224,25,100,138,101],[247,22,186,226,81,112,50,79,245,164,245,54,253,47,26,2,101,36,105,231,224,221,194,182,157,216,150,20,143,25,217,247],[5,110,84,196,197,247,69,144,210,68,153,161,178,219,60,10,15,164,173,142,233,251,215,252,238,224,105,205,180,109,214,53],[87,228,245,154,90,182,135,162,141,113,83,67,2,80,155,18,58,92,36,4,157,10,36,195,131,132,251,17,47,93,106,62],[64,21,115,164,17,169,192,199,22,173,119,38,1,11,241,143,76,105,2,6,170,47,38,104,95,166,66,193,14,172,55,92],[191,195,159,124,73,83,34,22,8,4,64,155,40,1,103,165,82,71,207,12,113,39,47,45,102,4,233,212,25,169,50,96],[140,85,22,239,170,126,69,70,29,204,31,212,158,19,144,186,174,189,192,29,97,81,69,173,150,64,254,63,83,52,110,139],[122,165,26,6,213,183,245,114,164,35,186,113,107,87,226,143,133,133,148,135,169,234,71,104,240,62,39,25,79,237,30,106],[103,244,13,211,44,196,131,236,136,155,163,236,234,60,135,201,167,245,5,112,115,107,47,154,34,163,15,39,158,72,69,153],[82,244,228,82,15,176,29,13,42,111,149,165,142,168,140,22,209,229,121,177,200,247,153,123,195,130,44,81,121,57,169,31],[134,40,140,128,76,240,80,186,89,246,161,76,27,178,65,85,10,57,114,107,139,223,47,38,183,108,70,128,130,93,237,21],[39,251,23,20,210,79,69,69,151,79,232,61,220,113,254,155,114,44,130,208,254,127,154,253,13,76,115,100,85,60,161,173],[244,189,127,180,202,0,157,64,206,223,17,168,224,101,199,141,58,224,73,131,45,7,98,106,95,66,193,51,17,150,250,4],[217,154,185,150,52,75,229,149,29,165,231,238,164,77,250,2,227,14,141,90,111,149,6,128,147,3,64,185,191,198,176,35],[33,119,112,238,186,99,181,59,36,84,140,165,56,224,208,89,9,102,73,114,106,110,59,68,171,66,189,36,90,195,123,210],[12,247,123,58,5,206,30,132,118,190,108,136,232,118,223,24,104,237,253,73,139,171,211,190,3,72,109,137,96,146,78,212],[37,246,83,104,195,182,90,6,206,193,154,127,210,88,179,134,210,5,77,103,113,192,4,3,156,158,119,119,64,82,186,68],[227,240,219,108,8,167,132,13,41,125,227,214,214,236,133,31,45,83,36,19,19,133,49,117,60,130,168,201,182,237,82,165],[192,23,15,118,26,171,245,85,52,208,114,127,163,70,30,26,193,217,90,120,195,83,90,118,49,208,202,180,67,192,149,195],[52,158,117,111,242,217,201,243,190,203,40,116,193,61,176,199,169,133,195,239,209,237,115,122,47,101,231,198,92,152,156,160],[75,127,154,10,157,124,172,156,232,107,108,79,46,156,162,113,20,67,146,241,170,169,1,111,127,130,38,251,214,222,76,79],[16,243,130,188,74,172,13,68,208,33,46,180,166,38,112,143,160,109,9,250,119,119,21,182,91,52,57,128,253,192,231,157],[185,101,177,29,14,22,21,48,99,132,242,208,228,86,29,101,168,213,47,168,88,254,200,198,182,39,214,6,203,226,79,207],[64,161,25,253,206,200,1,56,236,171,184,39,2,223,159,103,14,254,255,197,58,159,215,153,18,87,173,186,172,45,138,203],[43,73,57,19,216,172,33,89,74,224,64,195,133,154,95,47,181,212,129,38,167,219,218,8,13,115,188,172,57,184,245,125],[42,126,244,200,128,75,162,87,181,36,105,47,88,93,14,105,32,167,104,94,32,99,48,218,173,189,142,85,70,11,0,114],[5,68,44,48,219,56,136,55,89,61,11,116,91,168,235,17,0,13,7,48,112,57,221,198,222,131,38,54,240,49,86,243],[64,115,205,207,197,236,127,88,44,143,177,217,135,29,93,102,4,107,67,98,77,233,170,174,174,235,33,86,151,165,112,53],[147,175,231,148,19,200,29,98,178,20,133,15,17,223,8,21,71,16,1,145,112,149,66,232,42,131,247,104,114,147,54,216],[158,144,218,196,101,39,190,252,109,204,195,211,227,106,35,21,245,88,71,205,109,181,146,60,111,132,22,94,150,78,189,79],[78,189,156,182,107,175,142,96,58,125,196,14,133,55,63,199,72,111,29,255,183,33,232,180,249,148,45,109,54,213,183,114],[41,92,152,24,172,202,156,220,117,180,94,26,230,155,145,247,237,8,190,226,112,73,164,118,121,58,177,210,43,191,184,206],[10,170,199,36,151,26,108,33,61,93,191,96,97,192,48,213,162,28,177,181,60,185,97,98,44,43,203,21,2,70,130,39],[212,247,132,44,75,148,93,65,2,237,7,102,176,79,108,147,46,144,191,234,0,124,209,250,190,135,236,165,47,1,222,212],[100,205,225,255,163,110,252,94,151,228,208,148,176,174,174,99,61,37,170,66,185,176,79,139,7,162,227,158,118,213,59,198],[84,67,32,211,174,139,200,153,195,201,40,143,194,72,206,207,76,240,185,94,173,123,127,46,34,89,187,227,131,71,206,64],[100,232,125,71,12,65,156,2,119,61,185,27,10,107,100,118,94,69,198,228,234,54,63,253,181,139,175,175,247,126,180,0],[170,33,96,137,26,168,6,213,60,249,228,1,167,59,233,153,100,146,102,5,139,197,70,35,230,48,176,128,68,7,64,202],[48,1,155,219,85,92,193,45,17,32,21,209,146,1,28,190,3,250,35,253,141,64,153,31,6,107,182,165,131,78,201,53],[49,110,97,51,224,29,121,79,207,82,138,201,131,135,195,171,227,179,239,246,81,15,241,165,67,222,84,75,64,68,110,93],[183,238,159,92,89,116,244,226,78,110,111,232,136,193,239,47,72,248,139,104,14,173,147,114,28,11,84,158,147,93,62,171],[201,28,199,176,60,172,78,68,219,187,153,54,245,76,159,133,27,198,34,99,163,129,201,78,215,28,237,143,180,57,28,28],[128,236,226,119,194,161,11,113,128,130,32,25,76,119,39,130,113,212,8,186,142,73,243,89,123,132,116,140,79,59,108,166],[49,151,13,91,146,209,124,110,182,193,234,208,26,71,95,224,113,75,113,74,179,51,113,123,171,184,50,243,147,215,140,151],[230,126,183,141,198,209,152,97,127,35,8,102,250,73,179,14,253,76,139,54,49,232,93,175,109,234,235,232,120,196,41,191],[96,157,77,161,156,93,214,191,31,151,202,67,229,20,5,213,94,25,58,195,72,183,133,126,34,121,10,245,83,210,213,62],[103,70,124,248,1,19,136,168,248,194,228,19,87,163,236,153,98,234,227,174,67,212,43,132,120,241,147,75,15,139,104,81],[106,42,181,17,133,39,169,138,37,119,224,248,237,132,66,143,32,211,52,82,170,34,81,66,200,108,72,2,18,199,150,196],[55,42,98,141,243,127,99,5,127,148,173,240,156,235,7,173,222,254,111,146,80,35,166,179,182,151,245,98,62,234,155,85],[221,191,52,55,126,180,37,135,195,91,207,28,181,27,220,187,224,220,89,21,30,43,37,208,83,10,23,202,79,229,215,104],[239,129,208,80,49,189,160,214,205,139,47,76,118,191,247,90,155,11,222,135,74,84,183,232,226,255,83,5,72,104,243,123],[163,128,38,9,234,138,29,29,20,37,120,219,95,3,125,71,85,156,7,194,244,162,65,240,222,205,7,227,24,9,31,141],[98,177,9,30,199,109,116,24,21,147,97,169,183,58,128,187,32,233,135,65,117,60,141,78,236,32,46,235,95,168,61,147],[188,236,35,151,83,169,183,217,15,131,28,5,41,227,131,128,110,91,33,116,136,51,234,127,138,21,107,172,128,31,207,82],[193,131,64,143,71,27,73,69,248,63,170,41,70,150,248,252,240,59,224,57,97,70,227,85,162,77,142,11,123,180,173,206],[101,147,84,245,25,53,152,103,161,108,127,73,168,86,246,206,80,180,17,67,36,184,92,74,125,74,236,7,65,227,27,182],[177,125,14,61,232,69,131,194,210,247,74,136,67,201,246,230,55,65,16,65,0,80,32,153,196,231,78,228,36,92,20,22],[240,87,240,126,70,121,163,199,80,64,143,141,160,130,149,112,59,95,248,209,177,202,45,50,41,248,16,32,182,22,43,94],[148,172,43,165,188,186,112,21,33,214,103,47,165,189,140,57,169,22,17,41,249,187,233,141,65,72,255,191,177,199,186,19],[250,14,1,59,43,210,69,83,201,18,66,235,104,200,248,223,151,218,8,203,93,125,189,29,109,32,1,149,148,31,10,158],[14,182,45,168,17,141,249,231,138,249,66,76,86,15,12,78,170,146,172,199,113,61,249,183,142,169,215,221,231,199,10,29],[107,231,33,31,66,202,146,30,67,202,100,193,126,234,245,250,68,244,29,28,219,252,217,87,22,57,148,241,152,129,221,253],[119,172,248,55,104,101,97,34,28,191,177,33,141,248,237,7,157,125,95,25,196,122,120,26,186,236,97,242,179,64,219,26],[191,155,56,223,42,94,204,21,223,17,228,58,150,35,229,239,91,247,163,128,13,157,123,241,155,211,4,164,109,133,237,17],[122,5,115,216,53,110,144,213,90,89,168,78,147,190,170,84,24,216,83,219,238,248,128,232,104,237,116,61,208,115,199,217],[5,116,31,55,9,144,41,160,73,67,113,1,215,188,229,32,81,35,156,237,116,169,144,20,16,125,38,214,146,234,167,231],[129,251,65,188,178,128,182,15,20,231,61,49,5,42,253,162,155,122,154,177,217,35,98,15,38,175,140,152,253,112,31,0],[18,229,222,222,71,250,187,102,81,79,161,151,75,85,226,242,21,244,171,25,201,70,195,143,148,99,19,10,155,104,80,173],[62,186,187,89,142,72,235,143,84,221,205,193,249,90,218,113,95,46,170,175,27,69,87,93,127,49,172,195,101,1,255,228],[20,19,132,101,238,201,11,137,233,193,222,144,60,7,147,173,89,120,24,221,149,168,145,34,191,32,54,250,7,220,10,92],[138,107,201,95,3,228,62,248,30,132,189,216,153,243,130,183,146,75,89,164,215,201,120,49,97,145,188,21,219,201,141,125],[190,87,42,8,151,125,221,58,224,91,230,40,12,22,91,209,159,106,92,113,101,8,181,66,11,77,145,192,253,171,239,103],[236,66,173,70,14,50,6,23,104,122,83,239,28,128,212,112,42,103,73,17,182,20,234,50,211,26,17,25,171,139,110,122],[98,180,211,196,52,68,216,210,224,49,86,32,55,156,197,181,232,139,10,152,42,135,105,1,86,230,159,213,139,18,84,105],[108,197,32,208,94,214,110,188,252,105,246,182,239,55,65,230,205,185,44,45,192,243,70,169,132,52,215,208,176,228,167,155],[124,223,34,11,199,71,14,156,19,43,240,7,177,75,135,27,62,186,46,228,51,174,236,35,33,14,10,86,40,32,38,49],[215,146,237,8,169,209,14,156,165,31,198,226,86,251,97,67,244,156,52,14,114,156,254,164,127,181,171,20,179,163,198,178],[233,191,210,218,65,41,141,123,133,185,97,22,54,62,162,46,220,123,129,12,35,36,124,153,151,152,3,69,137,215,108,204],[129,104,158,210,39,238,195,2,125,190,201,229,79,226,165,91,134,237,15,190,229,94,41,9,64,29,76,82,126,15,110,214],[141,123,222,254,6,55,169,110,64,71,103,150,21,85,15,41,203,207,235,10,118,224,198,15,63,94,155,222,141,126,32,238],[64,87,159,199,18,178,215,170,46,37,35,108,33,221,162,69,158,99,4,43,236,91,123,189,25,150,144,136,77,64,24,178],[45,76,98,172,80,6,223,57,152,240,234,159,218,22,107,30,55,208,178,124,212,111,113,60,35,62,102,11,121,14,255,186],[15,118,47,98,98,20,28,246,213,179,135,157,17,160,201,122,141,202,171,80,112,133,133,134,23,248,187,26,164,61,15,183],[236,132,148,128,231,50,234,88,49,33,132,48,164,67,50,157,143,74,220,156,168,53,47,140,150,55,59,220,205,156,173,95],[95,84,175,196,73,16,202,50,160,168,200,98,163,193,147,42,23,25,163,6,158,22,231,207,163,133,214,49,183,60,199,17],[253,38,134,46,240,203,235,89,146,69,251,244,61,201,192,39,138,198,146,187,115,235,223,155,161,175,217,170,27,5,114,69],[248,154,233,252,203,194,4,164,116,39,86,6,241,74,23,208,192,20,8,17,50,180,133,222,239,109,57,125,105,89,20,70],[215,219,214,252,190,142,61,128,179,241,146,235,45,39,59,62,236,46,54,133,164,85,192,8,237,78,118,85,97,35,245,32],[8,98,168,212,53,110,77,185,114,109,155,170,160,24,232,173,104,225,141,59,215,158,148,148,25,224,0,205,48,121,92,63],[112,12,142,123,233,62,198,237,60,108,148,2,238,184,126,106,7,204,157,184,45,251,200,136,25,215,35,41,77,58,204,110],[126,132,205,128,129,46,146,220,42,162,245,74,146,118,226,159,244,253,162,9,185,72,94,118,183,193,147,196,40,150,118,109],[157,80,60,197,131,227,248,60,135,242,34,235,8,225,17,77,99,117,154,246,227,87,4,236,61,112,194,10,222,209,18,68],[223,193,253,187,179,237,133,33,190,31,224,61,230,107,81,242,202,214,240,178,193,143,102,99,111,141,182,199,192,10,65,128],[236,102,201,12,9,191,43,83,152,77,10,124,16,1,230,164,107,23,7,152,201,196,92,110,157,121,66,238,181,180,219,95],[91,161,147,235,211,182,101,137,88,78,42,228,44,132,226,45,244,88,143,83,223,229,125,82,144,71,242,116,9,242,201,161],[244,104,232,215,149,171,225,40,28,74,186,130,42,62,143,73,204,40,35,76,158,223,109,120,235,21,119,28,113,147,222,165],[33,163,224,139,231,247,1,165,186,202,209,167,2,253,57,213,236,239,68,198,24,105,40,130,172,169,229,193,166,4,234,72],[69,188,149,201,83,241,95,235,57,80,247,116,235,44,228,24,45,236,247,5,251,140,142,185,185,4,253,93,219,196,178,213],[150,226,106,10,18,224,157,179,169,199,5,44,128,78,104,228,252,84,130,19,226,217,23,195,4,41,133,110,84,248,161,6],[109,167,178,177,181,26,89,16,99,183,119,58,186,224,237,245,219,181,149,105,152,153,181,166,8,79,41,249,213,87,204,207],[245,79,98,55,181,225,71,51,162,153,143,8,41,141,127,237,187,180,112,98,181,114,214,224,54,48,138,187,69,110,195,209],[245,88,109,11,15,25,62,101,185,176,44,95,46,244,139,11,78,24,22,186,25,184,190,238,231,251,47,118,188,127,98,57],[214,60,143,3,120,191,97,38,69,84,159,5,87,53,146,146,205,160,35,135,212,0,167,216,35,23,146,237,128,63,152,42],[185,147,132,218,58,88,18,244,157,243,145,232,200,143,3,93,212,130,67,68,179,94,32,90,143,227,32,215,53,150,134,34],[197,206,33,243,211,182,88,53,150,212,213,239,236,215,242,22,142,84,120,7,46,119,21,24,1,2,39,144,33,112,246,125],[130,218,71,81,78,168,30,60,148,204,52,62,30,215,148,10,87,180,51,61,207,203,225,4,89,127,87,165,102,178,74,206],[239,131,33,219,162,214,50,65,189,214,210,216,11,112,1,119,3,174,33,135,77,43,221,53,44,73,41,67,227,36,49,222],[219,0,59,221,249,114,161,92,31,123,75,54,109,7,118,139,148,87,66,236,116,91,77,112,237,44,100,45,32,34,188,24],[59,127,254,231,97,254,245,0,101,89,33,36,87,154,121,103,191,19,71,55,105,48,186,27,98,210,188,13,15,238,178,27],[229,137,34,40,12,41,8,21,48,34,42,245,14,249,76,181,60,221,91,151,226,101,211,200,164,101,84,180,82,114,239,71],[182,56,166,116,240,218,52,105,13,183,200,71,81,215,77,127,52,102,210,92,158,78,49,248,116,47,162,152,74,236,104,199],[226,188,218,100,50,222,232,226,59,239,167,11,126,142,152,41,240,22,254,90,116,164,180,197,209,218,46,41,74,10,94,65],[10,29,30,3,236,114,216,81,180,44,149,104,119,147,123,52,104,183,165,94,78,166,15,146,38,119,208,23,216,46,192,74],[90,13,195,222,126,47,127,83,56,65,0,31,51,6,193,58,14,63,76,225,42,113,93,115,179,245,16,145,241,83,89,81],[47,202,241,22,80,172,70,217,17,77,250,56,175,196,93,222,150,188,39,233,207,26,144,224,117,69,24,2,53,159,243,202],[227,137,139,133,180,247,182,30,194,45,60,172,246,70,243,99,43,225,78,115,248,7,166,21,10,57,21,169,9,189,68,237],[96,100,14,34,31,12,147,20,138,0,29,238,46,112,145,226,143,243,16,85,70,69,213,253,48,146,236,165,80,10,147,116],[100,7,173,220,174,23,97,242,160,178,145,161,12,48,252,158,111,201,93,137,44,23,199,53,143,178,207,240,122,29,32,218],[93,168,190,8,1,148,178,146,121,125,172,34,47,75,214,198,134,177,211,24,255,46,116,40,17,195,132,0,118,230,86,184],[104,30,13,189,160,33,150,206,96,70,129,35,218,19,72,25,94,143,169,138,152,87,126,113,81,101,209,55,94,217,232,118],[116,199,223,78,242,226,179,76,241,25,104,57,254,139,8,246,228,214,247,190,101,57,139,175,74,175,224,45,83,110,204,251],[191,100,148,173,10,70,228,63,97,63,9,164,119,160,75,25,124,153,55,113,66,41,213,134,77,181,164,179,80,132,172,236],[236,186,212,83,181,91,181,51,4,205,45,212,20,53,20,122,148,251,125,193,133,77,89,14,97,34,234,16,113,17,126,17],[137,203,247,234,113,233,156,7,84,236,67,42,247,20,182,173,66,94,50,168,170,83,35,240,138,234,112,207,152,77,46,161],[166,141,12,227,67,19,143,166,220,159,131,165,168,15,14,109,218,174,197,44,84,157,220,244,74,2,51,146,191,222,64,171],[21,177,129,71,116,150,142,154,199,244,36,239,214,123,124,9,85,54,9,118,20,17,209,170,178,131,64,171,237,27,30,218],[153,13,30,101,70,43,213,184,23,81,141,167,236,80,170,66,47,34,86,0,183,8,211,51,20,0,68,224,182,228,124,113],[198,29,33,209,136,92,8,113,99,158,242,247,42,206,214,56,205,47,13,50,26,228,10,51,175,215,111,91,26,131,220,33],[36,159,226,144,54,147,11,183,249,0,13,211,184,21,251,55,57,140,167,107,114,151,242,44,87,240,135,5,142,115,139,179],[184,227,150,14,19,169,26,214,91,174,44,194,223,61,62,75,234,55,200,137,188,13,205,134,7,156,62,13,161,100,212,97],[224,168,184,31,202,216,144,186,58,32,8,114,213,225,149,149,94,161,114,5,235,79,66,119,17,80,57,27,164,76,245,34],[153,120,10,209,13,51,223,90,50,94,113,109,117,61,214,246,45,185,220,130,248,246,192,172,13,238,63,98,220,21,147,157],[135,138,122,225,205,37,25,83,56,131,102,8,53,142,110,95,104,58,98,159,254,156,49,177,218,201,221,181,231,86,84,180],[214,212,92,231,230,16,90,171,70,183,201,142,178,43,128,72,98,240,172,199,216,122,218,178,235,142,121,46,14,204,95,115],[58,165,252,245,37,250,53,12,14,148,168,67,123,33,145,172,247,0,187,225,20,109,168,51,28,97,26,164,253,254,35,201],[129,163,36,144,112,97,112,153,144,78,48,123,121,132,224,92,163,130,6,182,217,92,204,126,166,116,151,115,216,136,55,211],[121,81,130,87,160,171,102,61,222,95,30,252,17,96,32,135,162,80,243,200,140,33,150,167,20,42,138,53,112,162,86,93],[124,186,191,163,161,4,2,245,183,61,151,243,191,21,120,124,113,73,179,185,10,59,217,236,195,94,52,207,246,129,75,139],[205,211,169,190,143,176,99,13,221,16,50,91,68,59,173,196,187,146,186,54,134,4,134,19,110,148,67,64,146,171,98,245],[91,105,132,170,147,79,249,106,168,107,149,253,200,16,187,158,37,31,160,110,59,37,104,154,167,197,140,228,133,159,90,112],[30,159,33,60,47,235,51,11,205,243,108,38,195,2,156,221,19,193,44,57,19,114,32,213,219,240,255,153,79,128,8,174],[179,190,3,188,194,162,64,69,179,215,38,155,0,141,157,50,94,28,26,92,108,166,191,215,131,76,156,216,88,103,252,74],[161,245,47,218,169,230,160,179,239,189,156,71,43,129,92,215,227,86,23,94,221,132,193,16,189,79,5,245,46,231,60,165],[93,157,151,227,195,133,153,49,71,72,55,2,169,197,168,234,75,253,205,248,254,135,133,61,47,141,195,66,172,182,133,168],[189,178,146,64,120,25,34,14,169,73,4,119,58,97,175,107,46,33,42,24,21,166,161,186,169,216,237,21,184,165,58,197],[104,217,207,88,18,9,112,51,244,59,182,245,235,190,213,1,193,210,70,140,243,51,185,239,79,34,41,180,138,8,0,211],[173,167,93,189,78,252,120,46,167,180,83,218,84,117,6,26,65,226,150,137,224,112,74,74,23,171,214,62,157,96,242,167],[204,10,92,148,114,39,248,216,191,58,197,59,111,74,28,80,26,96,98,36,129,217,193,231,105,238,70,68,249,156,87,208],[117,13,88,243,160,100,64,185,60,48,183,51,186,105,152,90,203,35,25,46,239,117,139,204,107,5,230,255,146,203,18,132],[96,10,16,10,55,83,168,19,137,104,201,169,63,189,95,151,118,215,140,215,139,5,161,201,149,206,208,245,241,30,254,50],[100,221,162,141,168,160,237,74,218,226,111,19,24,229,34,96,151,244,35,145,211,121,244,248,10,128,170,162,83,156,8,43],[90,165,142,25,13,81,62,232,19,80,213,168,20,102,90,177,169,35,40,83,221,107,78,47,100,215,66,157,120,61,108,250],[129,124,183,134,217,23,14,254,245,6,157,26,166,188,191,138,240,203,201,72,139,176,54,47,88,41,181,244,64,183,118,126],[25,126,15,53,18,209,5,153,109,149,240,191,103,171,229,253,114,75,113,167,164,118,112,93,100,161,236,64,251,29,32,165],[240,46,237,8,56,157,232,159,40,228,146,65,198,114,63,137,128,197,248,73,252,213,197,118,167,133,212,40,184,237,27,149],[41,185,208,27,89,133,241,199,0,234,250,90,211,39,203,87,57,246,221,161,219,210,153,163,15,70,35,157,243,134,230,242],[129,113,199,227,14,3,206,119,26,227,186,0,206,91,167,226,64,65,170,136,49,2,91,24,92,230,224,141,52,118,185,188],[200,200,28,219,162,47,4,125,100,107,233,43,123,30,8,174,43,198,47,60,12,191,28,75,2,94,138,122,126,176,95,41],[105,116,168,25,0,175,222,95,7,215,91,80,76,195,13,122,186,26,25,223,225,244,54,140,177,185,181,168,116,248,58,191],[153,120,192,84,103,109,49,122,47,117,58,100,199,96,101,25,184,212,111,155,116,231,182,14,160,186,80,236,91,130,133,238],[229,85,80,252,237,212,181,123,11,76,255,15,67,201,103,250,248,26,142,209,235,13,179,82,81,13,107,227,136,3,141,185],[52,154,188,146,114,78,33,48,178,19,105,119,236,3,231,87,2,46,0,95,64,115,219,36,1,37,188,67,71,63,190,175],[34,130,38,119,197,151,248,93,156,21,84,220,118,6,210,63,63,229,86,217,147,16,125,148,103,245,143,43,170,43,132,21],[12,185,15,38,63,224,207,87,114,115,196,20,91,109,110,21,163,168,111,254,47,34,40,181,58,8,3,201,232,39,27,112],[174,167,144,184,174,146,156,56,231,111,5,72,254,161,169,192,168,148,169,208,90,131,161,203,62,217,158,226,96,55,132,128],[157,205,146,91,55,42,117,109,20,88,211,124,129,147,122,107,143,178,180,187,60,94,10,114,36,168,17,16,205,197,202,177],[119,121,74,178,230,116,16,145,124,134,70,35,95,104,50,62,221,108,240,126,202,93,139,1,20,156,121,223,150,169,178,32],[152,245,209,141,76,63,136,161,54,62,240,172,240,79,21,76,102,92,204,253,24,187,17,69,147,203,204,40,10,4,69,146],[52,153,221,141,88,181,163,46,23,136,131,177,94,206,55,9,87,1,170,49,208,84,205,42,28,77,13,222,144,131,158,210],[121,47,13,170,195,6,154,145,9,11,114,212,192,243,83,79,79,153,20,37,129,129,214,208,45,20,122,75,148,229,220,214],[172,30,117,242,241,42,58,255,134,187,232,99,186,240,9,190,100,17,33,115,83,165,116,184,218,114,58,44,139,210,29,237],[202,188,22,169,183,150,9,225,59,173,234,165,11,22,122,104,175,166,238,151,158,176,97,37,39,237,125,93,7,173,25,25],[165,63,147,52,112,106,222,90,156,235,143,226,95,156,186,228,176,59,62,226,130,75,206,188,234,182,236,161,70,216,4,139],[77,191,207,21,31,143,245,46,83,207,178,31,93,104,127,156,150,43,212,107,97,143,73,33,218,134,185,151,221,234,133,41],[128,213,124,203,63,190,203,96,243,117,116,9,250,125,163,192,42,178,151,209,188,251,73,42,96,120,136,40,221,167,38,110],[65,121,148,9,89,175,143,243,203,136,34,20,128,205,102,124,50,28,234,92,88,230,90,194,27,134,246,22,124,138,41,27],[234,143,185,66,160,118,235,182,197,185,112,6,76,190,161,245,94,65,32,62,106,84,24,160,216,186,36,123,160,60,170,253],[197,193,208,131,39,157,252,206,173,15,191,197,93,167,250,234,18,217,172,39,231,94,239,24,242,232,164,134,163,102,197,253],[106,23,71,26,106,67,17,132,120,64,14,205,29,222,203,214,92,171,27,137,29,204,0,127,113,67,160,44,86,74,10,137],[60,162,8,232,156,216,131,187,38,202,91,224,179,127,56,251,162,104,204,206,73,244,42,123,254,174,197,16,81,14,151,114],[28,19,48,249,231,17,124,174,48,216,171,110,5,8,90,149,230,189,205,227,17,57,204,89,242,239,166,184,17,105,89,101],[231,48,169,220,238,148,160,183,197,68,65,206,232,228,174,123,156,138,152,85,18,45,10,93,14,184,241,118,35,174,216,48],[42,237,251,37,64,129,232,164,34,63,52,172,211,208,176,78,116,173,68,192,91,134,159,248,80,104,82,12,223,73,96,242],[149,108,208,14,129,185,253,147,89,149,92,174,177,136,150,55,24,59,198,43,74,117,33,158,100,80,236,235,230,188,76,119],[238,116,232,118,10,16,161,142,95,246,1,139,117,12,111,244,177,244,51,72,137,76,96,176,195,129,188,68,101,189,219,63],[232,122,137,144,37,44,83,28,25,136,4,124,50,0,199,202,210,177,189,163,20,127,105,113,95,189,110,68,148,243,69,103],[227,164,116,190,228,118,84,31,159,195,38,162,140,69,92,165,6,32,252,25,110,60,124,210,139,178,191,219,42,187,23,183],[27,25,89,202,132,183,201,172,226,113,20,214,131,82,153,185,254,224,111,243,199,157,195,212,20,253,229,17,100,5,38,73],[7,173,95,57,4,115,172,44,198,219,2,40,195,171,198,222,226,52,142,76,167,243,210,17,104,238,13,228,109,33,37,251],[248,104,17,6,189,16,235,255,250,247,67,246,57,2,105,195,137,83,128,77,2,32,101,110,21,186,4,181,174,62,162,60],[19,34,145,90,26,134,16,4,232,248,193,28,114,145,102,96,239,110,129,158,156,154,61,154,129,231,4,211,192,211,238,149],[42,77,221,7,99,202,117,107,33,100,243,33,219,35,62,86,99,187,90,151,102,140,86,198,116,61,97,130,171,27,228,178],[115,165,159,51,73,101,65,27,140,151,6,36,3,237,116,86,50,154,75,209,86,29,188,185,68,139,94,195,124,177,153,197],[83,80,107,73,161,60,211,16,250,220,87,215,31,216,124,23,116,147,223,234,231,76,112,196,251,186,144,11,12,188,86,33],[236,3,25,10,178,229,157,152,192,153,180,56,216,112,216,76,178,158,21,18,3,205,84,229,33,160,180,63,189,41,20,244],[204,115,74,89,251,110,207,54,0,175,178,224,168,87,76,127,179,101,75,251,181,79,98,208,43,103,248,56,160,7,49,144],[106,177,19,90,18,210,11,70,193,136,35,13,34,16,2,156,140,25,80,163,81,2,228,238,216,143,164,76,218,6,120,47],[99,170,30,76,9,28,193,213,164,0,24,38,121,244,215,219,81,255,111,44,171,171,67,93,134,68,27,234,134,93,59,207],[226,237,195,72,216,154,102,104,81,80,143,76,60,239,229,80,57,110,24,156,51,78,85,249,76,250,79,130,185,206,26,14],[89,24,101,204,137,4,243,49,202,180,102,232,187,78,69,252,118,161,69,190,217,79,90,64,101,15,198,238,82,149,42,126],[174,5,33,147,219,56,134,89,114,37,18,240,183,235,134,200,10,110,15,190,70,165,65,229,230,61,159,71,84,70,93,45],[37,207,127,23,129,86,125,92,137,59,78,40,16,247,6,223,242,101,177,196,157,160,169,56,224,180,214,123,46,28,204,188],[92,190,10,136,236,71,99,86,7,80,142,129,230,186,194,217,11,109,238,159,224,129,129,162,95,136,103,213,141,50,86,42],[7,39,194,240,134,97,210,140,118,148,199,248,61,115,247,38,206,41,226,23,233,184,249,204,243,198,244,249,8,134,249,8],[81,113,103,138,216,227,140,151,115,119,248,172,22,232,184,76,138,168,179,178,148,26,92,36,117,200,142,229,76,5,215,43],[27,162,222,79,2,97,116,118,58,197,190,80,196,91,143,148,117,125,169,8,144,162,162,21,187,147,211,79,37,2,86,212],[180,236,12,92,17,152,29,135,91,121,99,225,7,53,24,163,58,148,178,219,159,75,179,31,91,169,215,245,20,174,123,143],[140,106,180,41,169,98,212,94,183,113,93,101,199,89,197,51,96,186,41,19,243,191,18,222,187,26,41,200,31,164,14,187],[192,255,240,223,15,99,239,157,214,68,167,24,21,147,93,225,117,206,13,86,213,53,135,209,51,180,94,12,240,174,81,26],[146,95,134,182,40,246,205,113,55,29,176,39,60,38,54,191,238,30,237,151,0,60,18,144,152,150,146,191,133,218,249,211],[16,121,58,244,87,156,230,132,195,181,110,49,159,52,119,85,132,82,95,76,105,19,152,41,189,100,233,47,144,13,183,29],[245,84,61,223,236,149,70,57,218,3,27,107,47,101,36,21,72,75,234,188,24,189,162,141,91,73,57,96,104,135,61,9],[196,123,46,147,161,132,98,243,145,121,181,160,54,44,47,142,29,61,250,62,112,193,57,242,163,130,58,98,251,92,207,17],[30,49,244,175,142,184,117,67,134,8,70,27,193,188,19,131,161,8,97,37,29,116,112,92,71,137,211,192,25,25,151,81],[155,97,62,53,52,15,153,47,158,196,55,100,234,157,182,161,247,122,165,177,119,171,146,125,115,157,82,193,59,10,161,246],[55,5,226,55,154,137,159,146,208,94,178,49,186,248,166,203,26,85,64,45,68,136,215,104,88,87,107,204,181,47,46,73],[120,53,3,42,251,6,30,69,169,199,179,11,69,58,203,189,218,10,140,106,243,66,155,123,120,11,116,186,157,12,198,51],[119,143,18,134,186,167,40,79,245,151,23,136,160,110,172,209,47,33,242,68,132,31,129,134,124,166,193,144,230,188,230,172],[89,34,20,232,250,27,182,122,195,88,230,158,243,81,178,154,163,22,189,131,8,251,75,144,136,232,186,28,72,216,85,10],[136,205,16,54,180,87,90,232,154,81,77,6,46,178,179,255,140,222,0,78,157,233,56,78,55,238,39,64,16,50,42,68],[70,188,63,171,118,161,112,69,206,201,62,106,172,196,129,63,108,15,59,201,163,125,165,0,205,242,169,15,117,14,172,226],[179,175,238,24,236,14,25,150,36,179,129,225,252,248,197,140,21,108,21,159,180,253,215,94,27,36,90,159,189,190,215,141],[108,242,137,202,82,231,207,136,227,85,251,126,218,212,81,152,94,35,253,157,11,38,167,211,160,116,32,34,41,225,154,73],[246,141,238,131,157,109,59,150,153,248,76,25,58,131,87,34,109,203,205,68,240,50,65,136,61,74,250,27,119,11,18,103],[128,55,218,216,51,49,135,101,9,76,36,199,105,244,163,252,62,165,24,63,176,233,114,30,160,34,218,34,41,214,174,48],[105,226,179,237,236,47,75,219,63,90,42,27,131,49,195,147,206,248,135,128,134,206,13,214,96,46,239,7,51,132,41,144],[190,20,55,68,179,198,208,92,128,83,12,160,17,128,195,40,103,33,21,198,52,164,220,168,142,102,7,195,158,38,196,238],[31,241,44,119,163,181,101,157,153,66,133,25,221,35,246,63,227,135,225,74,10,111,90,43,189,112,49,144,29,156,47,33],[54,45,74,171,152,34,78,244,86,9,152,174,92,205,0,10,111,107,171,46,205,228,228,109,166,46,104,235,185,250,173,98],[25,119,7,148,47,17,36,242,27,112,9,191,117,202,224,37,117,236,211,85,191,24,113,253,121,164,139,237,143,106,189,132],[194,53,19,93,36,230,235,38,40,9,85,254,141,138,13,156,43,125,246,115,181,235,124,167,239,164,54,254,127,18,6,228],[241,46,60,116,121,186,191,194,78,48,162,243,8,213,25,28,209,223,184,180,141,70,174,71,70,115,64,202,161,174,4,118],[12,185,242,47,227,181,247,142,74,253,51,226,228,184,80,194,66,3,35,174,193,170,69,231,254,215,141,12,0,76,149,139],[196,200,190,218,234,173,172,49,121,208,196,54,225,107,247,249,154,64,191,218,208,95,131,10,13,111,20,214,225,68,50,164],[3,0,41,199,158,176,139,121,81,101,92,255,48,13,233,37,181,62,214,230,145,135,106,130,83,196,220,221,91,162,165,171],[13,84,35,153,1,106,6,238,164,99,109,63,83,160,209,106,158,104,117,80,156,34,187,121,44,248,162,13,208,52,22,170],[222,174,102,239,39,53,58,10,237,163,222,248,143,20,49,150,68,78,15,106,192,153,132,42,116,154,185,196,33,34,236,34],[87,67,81,103,113,172,112,2,117,230,70,160,120,255,189,241,205,229,13,217,165,214,16,213,93,132,30,195,129,163,241,229],[137,187,224,254,95,11,62,30,109,239,224,84,170,52,167,44,59,159,126,18,122,64,162,255,142,157,62,49,235,112,92,50],[119,72,75,199,154,206,71,35,15,147,183,2,62,50,139,151,126,186,172,230,19,79,167,233,169,65,64,2,197,130,227,173],[161,119,18,145,49,244,85,210,77,92,123,96,130,43,178,207,93,82,220,96,232,81,175,187,216,63,147,90,162,5,60,223],[75,117,74,86,42,124,214,93,75,153,15,135,183,119,34,163,137,134,32,52,171,184,246,69,250,168,129,251,24,24,172,225],[164,143,125,73,9,136,224,83,206,208,218,50,227,132,228,182,208,226,184,188,239,221,123,190,214,45,156,84,64,78,244,183],[27,75,75,255,229,43,118,231,33,137,230,66,105,138,182,158,1,71,195,10,183,26,187,153,4,126,223,161,78,0,142,111],[40,222,30,107,167,105,85,49,223,13,105,127,179,244,121,121,153,0,187,202,2,157,63,254,189,214,33,139,18,158,11,98],[60,125,223,8,206,26,230,36,45,237,76,246,2,211,161,34,108,94,22,73,65,243,237,227,218,186,150,121,7,119,53,252],[128,205,82,208,5,215,138,132,132,232,139,114,65,18,153,180,179,222,195,228,21,105,98,170,175,171,100,207,46,77,252,148],[21,168,10,177,104,190,96,114,221,78,202,33,237,191,53,65,34,255,49,203,211,93,238,83,62,229,59,6,131,12,180,92],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[230,100,62,27,62,244,213,216,72,169,215,205,133,235,136,72,97,196,197,67,152,32,176,151,69,40,191,54,9,23,73,240],[2,175,246,50,114,221,237,9,192,15,239,206,6,238,164,71,158,237,176,240,134,20,226,148,221,187,238,189,170,165,43,177],[191,204,100,70,255,172,230,168,97,44,184,116,1,254,144,46,231,174,189,4,94,25,191,118,205,200,244,39,159,184,117,225],[207,1,91,84,248,107,47,89,250,246,18,40,56,37,70,91,108,13,59,184,52,65,97,10,9,70,157,108,148,66,67,34],[226,50,111,175,203,183,41,206,209,25,38,107,17,241,237,210,134,81,103,159,93,70,93,80,182,25,106,196,237,116,79,161],[213,42,141,175,224,137,212,107,43,202,245,234,212,44,165,224,146,101,244,222,199,206,118,105,86,41,222,80,254,239,133,15],[235,22,33,239,140,219,74,242,219,98,63,205,151,170,75,207,149,169,75,225,135,135,120,38,104,95,237,220,212,91,129,203],[59,87,228,125,24,216,1,136,97,96,64,52,189,50,211,58,75,203,248,116,133,157,53,149,122,134,217,104,88,227,37,12],[40,38,131,63,150,14,174,10,81,164,143,110,215,72,99,128,184,30,17,12,181,196,131,59,2,31,16,130,218,228,98,180],[112,41,55,119,172,214,214,39,248,30,145,76,190,191,176,206,160,131,26,129,18,120,244,202,64,11,19,183,218,148,207,4],[171,152,47,73,1,19,22,17,81,113,122,82,78,20,244,128,169,190,151,232,2,13,165,171,237,234,103,163,223,29,228,25],[8,71,136,89,85,79,169,252,108,24,201,196,174,18,101,202,194,98,142,218,219,166,112,3,96,34,219,213,147,195,106,197],[44,234,7,200,214,230,137,101,196,16,227,85,249,75,208,233,38,44,102,66,106,12,110,140,201,81,83,225,108,147,0,201],[217,110,94,150,1,198,98,143,58,86,56,193,35,253,69,233,45,244,222,219,10,235,237,127,187,176,3,50,156,212,204,132],[4,108,60,122,27,220,60,131,128,126,169,43,143,125,189,102,103,139,218,177,123,1,23,52,186,109,163,24,175,229,156,85],[34,245,85,216,75,116,166,137,51,82,116,212,244,43,72,184,91,199,144,174,195,70,102,193,81,61,238,83,48,244,112,145],[53,137,204,130,213,227,101,144,50,173,6,232,115,4,50,134,186,196,99,138,2,109,101,90,59,128,166,7,150,196,217,135],[228,212,229,129,100,129,245,78,255,120,137,101,108,233,242,94,48,60,95,41,180,3,94,7,215,251,149,22,93,207,79,35],[148,115,202,98,37,174,52,100,9,137,232,84,183,183,241,69,53,5,26,251,126,122,56,127,58,114,106,4,147,254,146,20],[125,220,222,192,80,10,72,252,84,60,255,87,170,141,242,165,130,205,54,82,128,29,203,153,201,29,145,193,27,58,78,25],[253,58,55,24,107,182,118,54,9,70,165,78,119,178,191,1,252,143,196,247,49,150,23,26,17,116,92,73,189,39,145,114],[36,147,168,175,222,248,100,32,128,0,89,115,10,239,228,80,104,129,44,43,41,236,252,84,75,156,172,61,1,200,6,29],[23,73,96,91,242,65,255,84,163,200,16,67,221,28,58,182,137,20,93,136,251,106,172,225,59,169,171,238,132,191,116,161],[136,126,234,209,56,60,230,74,176,155,177,94,140,159,163,139,203,22,29,70,135,240,144,247,42,165,17,26,223,64,251,105],[22,195,21,181,220,15,239,5,168,63,147,180,135,18,17,127,109,118,202,141,186,136,159,87,96,62,24,215,15,48,40,34],[32,185,162,111,114,217,56,64,131,125,72,221,201,155,171,254,109,118,8,30,22,244,56,83,124,126,57,188,6,186,249,254],[80,173,238,84,243,117,153,61,202,210,236,44,212,245,151,211,63,162,45,196,101,196,73,189,237,156,89,205,176,252,212,232],[43,4,68,172,107,177,66,76,31,251,98,174,228,234,117,82,179,199,195,134,157,72,203,63,99,28,211,99,78,22,188,108],[17,4,15,255,164,84,205,195,42,249,254,73,48,252,163,16,3,61,50,12,75,130,5,123,28,214,255,76,238,101,178,250],[226,76,137,74,41,221,47,24,178,224,87,159,208,102,191,245,199,176,193,160,65,198,132,43,99,243,74,217,18,223,2,220],[251,2,57,221,153,180,17,251,46,36,182,0,183,57,6,173,69,30,185,134,164,63,101,107,88,189,205,159,80,8,242,141],[89,151,255,136,63,83,1,34,224,96,126,207,6,43,42,123,36,168,226,191,208,224,74,31,104,107,215,48,247,88,126,66],[175,171,50,98,12,236,126,108,146,120,26,48,96,12,238,126,93,12,127,211,156,222,211,14,12,224,63,194,128,217,129,113],[55,151,124,20,194,249,112,209,27,174,48,164,237,143,161,34,172,9,232,28,93,10,229,78,59,254,80,177,112,206,210,200],[46,208,214,74,240,41,113,26,110,188,95,186,202,241,235,113,204,165,116,116,53,159,101,150,54,11,73,127,49,183,55,21],[203,238,161,100,89,78,184,121,30,229,238,194,115,43,4,181,233,74,59,35,170,106,119,110,143,185,225,204,4,203,171,155],[7,225,169,181,78,167,45,199,14,69,184,90,132,196,161,11,171,43,131,70,221,97,246,80,144,53,137,252,184,104,207,31],[7,225,169,181,78,167,45,199,14,69,184,90,132,196,161,11,171,43,131,70,221,97,246,80,144,53,137,252,184,104,207,31],[7,225,169,181,78,167,45,199,14,69,184,90,132,196,161,11,171,43,131,70,221,97,246,80,144,53,137,252,184,104,207,31],[120,45,184,181,111,211,239,235,11,61,190,63,191,118,188,70,131,5,103,13,64,119,77,217,37,193,42,204,25,142,186,7],[139,191,86,94,125,105,28,151,84,194,190,193,158,30,187,124,54,152,131,179,74,46,137,219,183,136,127,162,18,92,86,163],[38,208,113,172,61,62,174,191,185,187,125,247,93,57,87,122,169,230,236,194,170,60,195,167,44,123,67,64,182,154,32,199],[227,76,188,87,83,23,248,212,112,220,245,66,119,12,244,130,237,24,52,75,62,73,110,56,98,32,66,57,133,226,185,243],[246,254,215,66,88,22,244,175,64,112,176,202,223,191,72,30,212,0,62,190,111,133,25,138,237,111,99,242,169,73,16,14],[42,183,14,159,127,78,199,151,88,142,65,126,167,145,34,130,40,252,103,244,133,223,202,11,183,35,222,222,188,250,208,76],[4,103,176,35,202,179,22,177,198,17,211,0,247,240,148,170,155,32,218,102,249,176,108,16,223,238,213,10,134,219,248,93],[180,41,72,197,88,162,128,102,157,242,59,144,38,21,109,97,193,244,238,65,81,159,131,115,87,214,184,82,28,60,231,154],[240,217,139,79,109,117,212,216,164,82,82,32,100,127,76,143,192,157,216,138,134,40,206,32,165,42,169,219,204,116,31,54],[73,193,182,153,193,169,59,171,21,156,61,149,32,253,17,72,207,229,166,183,160,133,0,151,35,183,87,115,188,173,72,96],[137,59,0,183,25,158,168,131,129,187,49,132,210,33,59,70,109,248,190,217,60,140,134,67,83,134,188,128,135,60,237,195],[85,77,178,169,120,209,33,49,141,227,77,94,114,51,239,56,228,91,94,143,91,31,138,171,254,126,249,18,96,190,166,239],[62,246,21,231,189,95,115,191,243,105,167,96,53,211,72,66,102,216,17,95,82,243,135,159,102,157,116,174,24,101,195,253],[66,226,154,33,137,51,158,142,213,42,104,19,195,183,154,162,36,112,98,242,131,62,206,95,134,158,76,200,198,177,185,83],[243,23,59,236,193,228,181,111,191,76,184,141,110,175,108,199,53,24,59,55,38,118,199,133,171,124,230,83,51,40,128,66],[24,198,101,180,196,179,190,37,61,131,210,97,156,71,135,15,168,238,248,73,1,52,127,249,150,48,60,222,194,67,33,7],[0,198,217,205,213,208,39,47,178,155,154,109,109,139,18,123,163,133,101,14,98,69,249,136,149,162,247,203,245,171,159,14],[57,220,162,108,98,32,241,176,98,18,171,233,61,47,151,208,191,211,244,218,101,210,68,207,76,78,232,199,187,111,128,223],[105,37,125,222,131,144,93,55,239,158,32,225,137,106,233,47,83,67,230,108,172,80,87,252,192,197,185,63,195,228,109,72],[10,164,141,59,108,31,90,85,34,183,197,5,10,78,176,73,157,68,135,156,233,190,153,219,75,168,21,208,24,213,226,52],[73,148,178,70,65,129,226,218,231,225,81,187,79,144,81,207,167,112,187,106,8,176,144,11,7,36,238,203,121,61,205,137],[247,179,143,199,24,225,89,203,64,102,220,43,17,146,39,62,0,148,58,65,64,246,17,44,112,107,228,204,115,232,135,229],[220,72,190,160,100,223,24,237,47,45,95,247,74,5,132,49,250,163,35,235,29,23,115,160,143,207,184,158,183,145,233,111],[95,16,172,12,76,61,193,178,218,5,0,108,93,6,35,87,239,90,228,237,64,147,203,12,198,190,196,105,47,41,123,215],[205,34,235,204,118,174,146,241,87,204,183,50,43,53,77,216,42,104,43,172,198,94,66,134,153,79,138,22,83,25,7,28],[50,238,135,223,178,162,55,61,142,4,197,34,251,104,40,45,154,203,74,64,3,10,120,215,108,62,49,100,63,233,33,239],[89,209,233,66,136,254,121,97,76,75,249,115,169,205,138,192,53,112,49,134,223,113,182,87,32,41,31,218,21,222,150,199],[124,86,185,202,145,34,46,241,50,204,99,104,85,146,41,223,101,63,29,183,55,183,44,30,58,7,106,44,132,232,221,11],[90,62,74,198,250,173,210,122,14,2,205,196,107,117,26,207,113,153,177,3,96,45,128,249,240,94,147,93,70,62,179,5],[65,96,28,250,31,71,118,178,237,183,237,141,141,155,204,118,121,61,38,215,243,158,235,145,71,176,4,75,119,2,200,99],[81,127,252,14,225,47,248,197,106,17,44,153,103,35,64,44,106,125,39,104,247,93,29,255,209,58,19,202,224,32,136,161],[252,147,187,209,189,183,240,82,244,118,93,220,212,108,189,46,156,82,76,39,130,49,34,67,139,127,97,152,169,215,164,147],[148,169,194,99,114,139,188,166,44,237,71,170,249,185,158,75,105,253,78,70,251,142,149,24,143,71,241,156,99,13,195,222],[11,33,99,76,77,92,155,185,239,130,189,162,251,247,138,49,65,86,42,138,241,47,3,220,124,23,55,56,98,175,64,230],[11,33,99,76,77,92,155,185,239,130,189,162,251,247,138,49,65,86,42,138,241,47,3,220,124,23,55,56,98,175,64,230],[11,33,99,76,77,92,155,185,239,130,189,162,251,247,138,49,65,86,42,138,241,47,3,220,124,23,55,56,98,175,64,230],[11,33,99,76,77,92,155,185,239,130,189,162,251,247,138,49,65,86,42,138,241,47,3,220,124,23,55,56,98,175,64,230],[155,187,65,137,158,38,108,223,80,120,15,15,226,116,118,222,73,52,91,57,16,217,97,72,40,142,152,231,171,118,170,201],[179,227,131,137,154,124,45,157,99,194,149,163,202,114,103,94,122,203,20,219,177,246,43,149,104,129,135,173,191,102,188,31],[194,108,4,86,236,114,177,210,5,57,139,87,107,208,60,101,164,107,115,205,155,52,100,136,210,205,173,235,130,210,234,40],[152,94,10,241,106,37,17,18,217,179,36,230,138,179,97,47,173,50,180,206,182,26,218,235,190,0,237,68,184,163,92,124],[16,87,213,69,120,54,235,7,125,28,144,252,201,119,47,51,188,247,246,126,103,235,152,110,148,192,88,184,144,104,34,240],[180,177,54,112,2,38,4,5,2,47,44,191,157,195,17,220,221,176,98,96,215,99,157,13,229,20,242,193,123,123,194,148],[198,134,41,158,165,4,25,244,124,114,89,174,68,177,128,200,12,187,21,52,199,199,35,79,225,170,2,194,147,224,86,230],[82,192,178,187,155,42,38,156,131,12,153,37,66,40,197,167,87,70,178,201,240,108,209,200,205,102,143,20,136,74,62,122],[14,237,42,177,106,86,216,249,115,193,209,223,77,14,212,46,166,11,180,147,134,72,105,196,227,168,133,156,22,195,186,243],[75,252,29,212,166,110,65,236,129,45,64,172,20,135,39,198,16,106,195,249,176,49,246,125,194,86,74,159,132,173,179,206],[122,142,59,249,216,35,157,110,5,77,113,37,194,20,38,198,118,246,228,102,205,243,187,108,233,26,207,2,10,41,189,111],[1,166,85,206,77,8,219,164,92,58,50,81,242,70,183,38,66,31,27,80,8,31,238,43,39,254,200,206,172,72,34,82],[24,165,120,192,225,248,80,16,81,125,105,175,244,149,124,165,103,121,34,106,210,225,164,22,175,116,87,91,140,4,84,136],[180,228,160,57,55,195,48,77,136,187,250,58,111,224,139,45,242,4,176,124,59,37,75,9,227,52,113,189,160,95,127,56],[136,186,125,138,179,161,21,25,240,146,58,187,247,65,149,184,32,229,79,186,186,131,172,18,27,41,247,220,161,43,32,25],[167,101,220,106,129,151,118,13,70,161,104,241,46,56,110,171,94,99,78,127,74,82,161,56,203,12,186,175,15,153,75,194],[239,86,25,85,134,43,12,41,228,39,204,93,20,240,60,226,87,236,185,40,141,21,5,47,135,190,93,8,63,253,250,153],[223,201,241,213,94,208,134,254,70,168,185,40,43,31,53,124,4,90,177,37,112,48,16,228,71,30,29,252,149,233,205,153],[183,147,153,134,211,77,6,87,237,4,183,180,79,107,66,35,178,45,248,115,97,148,93,34,133,66,155,30,158,173,180,72],[229,56,203,41,237,121,238,45,53,20,19,161,143,199,247,196,191,158,124,243,195,179,61,69,207,102,150,191,175,91,61,223],[10,141,27,217,154,186,98,193,109,10,180,228,93,193,235,197,187,186,192,82,35,236,137,249,245,202,97,161,92,29,26,27],[228,66,199,216,217,150,83,140,117,11,71,164,172,48,134,213,150,86,250,249,118,97,18,83,232,157,213,231,230,3,23,193],[17,30,70,17,44,153,129,86,16,50,140,109,202,101,216,68,174,253,217,127,247,164,6,96,142,48,156,180,227,201,60,254],[242,184,216,100,111,28,132,110,207,210,144,255,111,234,198,186,235,93,189,107,35,159,96,199,173,79,36,216,43,226,62,83],[169,80,56,15,134,76,15,105,96,99,58,161,190,142,34,52,160,181,172,200,67,94,78,61,117,63,233,15,198,84,179,76],[210,26,127,0,162,156,101,25,217,204,17,12,24,229,59,225,5,108,109,126,158,59,224,79,7,217,179,100,63,174,32,207],[89,58,103,24,90,64,217,209,169,55,226,149,84,154,160,253,204,133,248,208,185,177,108,49,250,199,206,219,27,24,109,183],[217,152,47,94,153,171,55,152,129,116,207,164,11,26,188,80,117,232,4,214,22,173,44,221,170,146,168,168,70,46,77,185],[37,144,103,41,5,129,109,114,115,239,7,68,70,235,221,222,24,119,160,174,252,148,105,119,42,179,15,104,62,78,18,155],[128,222,190,149,151,44,47,211,221,134,93,215,246,62,233,251,124,196,119,247,130,23,47,43,57,19,177,251,42,37,46,218],[48,213,116,154,31,36,200,35,43,213,197,161,226,80,176,190,106,48,44,237,151,61,153,171,196,46,168,161,122,171,189,132],[152,200,167,167,128,83,47,166,48,106,130,104,20,147,24,219,37,58,98,97,207,168,134,216,34,75,39,53,154,250,236,173],[18,27,161,60,125,244,33,232,134,99,113,184,63,171,110,103,139,72,202,178,253,92,197,104,78,134,130,93,23,241,27,150],[250,65,206,215,204,152,197,111,74,145,144,201,214,28,215,243,164,132,55,79,224,98,157,24,241,176,242,65,66,120,58,129],[2,90,62,138,72,22,189,211,206,148,214,217,224,182,160,1,233,91,74,93,147,197,248,216,243,239,76,124,247,166,151,139],[198,116,105,22,43,86,86,82,104,246,163,174,173,11,207,46,41,104,61,178,106,219,86,150,36,85,85,235,222,15,20,150],[103,30,70,36,250,57,3,157,89,186,83,216,180,79,77,118,169,139,150,76,68,205,159,229,112,128,29,76,89,79,206,178],[82,153,131,94,126,51,196,187,4,179,170,42,199,31,200,192,59,181,251,35,49,27,203,12,103,187,166,191,219,226,92,94],[68,111,101,77,178,110,49,235,154,218,159,213,146,130,163,175,39,2,181,177,4,110,112,12,137,96,218,70,190,220,109,50],[86,68,77,77,246,161,135,143,217,101,146,214,139,248,146,235,215,69,182,66,101,158,152,109,77,43,236,75,83,73,250,93],[25,29,41,228,91,14,155,122,149,57,145,154,126,165,41,163,206,234,167,9,156,162,214,110,199,179,170,36,129,168,176,250]]},{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":766873,"Length":70351},"Cuts":[[200,75,219,152,177,44,152,161,216,94,150,235,74,175,88,46,163,169,174,157,186,8,114,5,17,80,247,221,136,3,5,143],[14,205,36,68,87,134,232,231,43,42,160,198,93,7,142,239,130,52,205,120,63,210,35,102,182,10,118,239,34,74,14,90],[184,43,35,134,26,255,124,205,143,20,81,157,201,126,4,204,156,77,53,162,214,101,230,156,60,82,140,48,18,151,141,240],[116,241,113,224,118,114,82,16,222,191,191,141,111,143,227,15,185,76,231,251,201,250,144,116,203,214,132,31,173,152,86,151],[98,238,56,146,76,224,17,114,130,217,118,117,40,190,138,34,94,20,174,100,88,195,124,106,154,178,138,202,17,2,142,16],[152,109,161,104,221,137,27,146,222,55,190,95,25,157,224,24,82,239,253,132,82,135,159,158,239,11,136,208,35,126,193,94],[139,209,172,18,195,100,133,114,215,60,154,17,202,45,202,253,254,132,140,161,201,38,92,134,73,167,62,198,176,224,122,214],[74,106,254,149,184,138,134,120,155,225,10,231,29,73,125,90,209,172,146,9,26,68,0,246,16,112,226,201,107,162,157,138],[239,46,84,171,174,193,195,4,8,178,146,75,135,195,252,201,220,117,36,85,33,178,67,205,13,12,27,43,245,111,210,134],[251,43,153,133,212,18,131,100,40,226,11,177,60,126,19,48,95,228,169,0,45,141,191,176,148,98,205,240,253,131,233,93],[26,253,250,46,170,90,86,0,149,120,76,95,204,196,125,150,243,44,97,169,194,34,13,103,203,195,212,30,170,13,213,124],[135,196,232,235,104,28,21,15,28,12,107,6,79,245,193,91,125,27,127,168,152,200,191,2,184,110,174,61,74,115,98,242],[90,3,11,184,6,203,45,42,220,39,123,229,165,127,231,105,212,83,56,73,199,82,38,130,53,160,234,188,213,234,143,205],[248,189,170,227,236,102,84,93,245,176,238,10,243,158,186,163,228,1,222,11,81,171,52,0,39,221,152,191,62,159,243,40],[120,164,224,145,79,102,195,64,240,16,155,15,91,252,27,18,10,37,116,255,115,39,70,140,161,103,56,134,77,107,28,246],[140,120,59,103,20,163,198,72,209,162,239,171,122,248,150,248,189,104,244,166,251,174,40,58,102,235,252,115,128,87,214,250],[186,104,182,140,197,169,122,15,126,39,227,208,22,251,171,40,56,149,249,171,170,46,199,224,158,11,226,80,144,197,64,58],[106,56,201,96,203,104,16,224,16,217,46,51,131,36,49,135,69,175,244,34,189,56,87,145,137,174,40,247,198,12,202,161],[11,169,165,173,156,113,131,6,142,10,241,244,111,183,91,46,215,165,69,102,8,57,18,9,124,156,68,93,188,198,41,2],[30,142,106,140,161,125,239,206,38,124,220,193,82,77,89,176,142,244,6,74,111,128,236,233,114,180,35,219,65,236,102,18],[172,122,146,97,199,5,231,51,85,200,226,163,158,197,62,196,63,116,146,243,190,1,10,23,109,217,152,37,63,78,15,17],[251,146,66,75,75,89,186,1,231,111,191,156,223,218,192,72,189,102,220,169,43,102,20,149,237,180,28,175,171,61,25,239],[44,20,50,44,151,1,218,104,146,46,144,194,101,31,87,172,182,74,158,69,100,212,217,122,20,26,26,121,238,197,107,237],[166,222,14,198,143,82,171,255,22,249,180,98,232,104,154,225,91,70,201,35,201,91,86,155,193,43,191,122,253,87,46,240],[107,10,169,92,189,22,46,249,251,69,221,17,82,233,131,210,160,217,21,188,111,192,100,104,70,166,212,195,89,142,122,172],[134,151,216,224,170,192,200,87,155,247,181,114,109,54,114,191,194,134,52,53,210,27,205,28,126,75,224,202,119,111,226,217],[186,190,70,108,10,218,71,85,126,250,3,32,65,19,171,40,96,77,251,42,79,154,127,119,38,215,102,222,16,220,17,0],[222,89,148,14,101,120,147,220,14,42,185,98,189,109,108,88,10,9,173,16,92,40,167,235,51,195,3,176,26,228,58,196],[175,43,118,211,13,10,7,2,85,10,178,200,120,182,193,229,254,205,63,237,21,252,91,104,183,24,154,251,196,81,186,121],[32,67,179,165,26,97,37,118,148,153,23,124,90,195,32,45,135,169,58,197,103,34,215,217,218,58,11,64,104,48,207,129],[120,196,151,205,140,33,180,179,59,148,45,26,43,241,50,95,210,154,47,57,204,169,55,235,33,73,126,100,237,68,152,92],[82,190,141,96,53,145,173,247,228,76,147,73,61,29,63,99,154,22,29,242,254,228,19,48,59,168,164,62,141,33,242,184],[15,104,135,188,111,165,254,235,100,24,84,68,196,41,151,176,175,55,158,70,137,75,66,6,125,95,83,164,221,50,186,119],[255,220,122,34,18,148,57,232,71,137,95,161,224,101,188,88,254,113,137,57,7,53,74,182,136,63,237,72,164,83,192,127],[49,218,51,8,239,198,8,224,27,115,161,83,186,55,155,29,29,41,197,200,93,144,205,70,162,201,192,44,105,242,6,203],[228,39,32,21,31,55,91,103,69,140,87,69,227,85,79,208,166,72,10,38,149,245,238,239,242,123,46,224,25,100,138,101],[247,22,186,226,81,112,50,79,245,164,245,54,253,47,26,2,101,36,105,231,224,221,194,182,157,216,150,20,143,25,217,247],[5,110,84,196,197,247,69,144,210,68,153,161,178,219,60,10,15,164,173,142,233,251,215,252,238,224,105,205,180,109,214,53],[87,228,245,154,90,182,135,162,141,113,83,67,2,80,155,18,58,92,36,4,157,10,36,195,131,132,251,17,47,93,106,62],[64,21,115,164,17,169,192,199,22,173,119,38,1,11,241,143,76,105,2,6,170,47,38,104,95,166,66,193,14,172,55,92],[191,195,159,124,73,83,34,22,8,4,64,155,40,1,103,165,82,71,207,12,113,39,47,45,102,4,233,212,25,169,50,96],[140,85,22,239,170,126,69,70,29,204,31,212,158,19,144,186,174,189,192,29,97,81,69,173,150,64,254,63,83,52,110,139],[122,165,26,6,213,183,245,114,164,35,186,113,107,87,226,143,133,133,148,135,169,234,71,104,240,62,39,25,79,237,30,106],[103,244,13,211,44,196,131,236,136,155,163,236,234,60,135,201,167,245,5,112,115,107,47,154,34,163,15,39,158,72,69,153],[82,244,228,82,15,176,29,13,42,111,149,165,142,168,140,22,209,229,121,177,200,247,153,123,195,130,44,81,121,57,169,31],[134,40,140,128,76,240,80,186,89,246,161,76,27,178,65,85,10,57,114,107,139,223,47,38,183,108,70,128,130,93,237,21],[39,251,23,20,210,79,69,69,151,79,232,61,220,113,254,155,114,44,130,208,254,127,154,253,13,76,115,100,85,60,161,173],[244,189,127,180,202,0,157,64,206,223,17,168,224,101,199,141,58,224,73,131,45,7,98,106,95,66,193,51,17,150,250,4],[217,154,185,150,52,75,229,149,29,165,231,238,164,77,250,2,227,14,141,90,111,149,6,128,147,3,64,185,191,198,176,35],[33,119,112,238,186,99,181,59,36,84,140,165,56,224,208,89,9,102,73,114,106,110,59,68,171,66,189,36,90,195,123,210],[12,247,123,58,5,206,30,132,118,190,108,136,232,118,223,24,104,237,253,73,139,171,211,190,3,72,109,137,96,146,78,212],[37,246,83,104,195,182,90,6,206,193,154,127,210,88,179,134,210,5,77,103,113,192,4,3,156,158,119,119,64,82,186,68],[227,240,219,108,8,167,132,13,41,125,227,214,214,236,133,31,45,83,36,19,19,133,49,117,60,130,168,201,182,237,82,165],[192,23,15,118,26,171,245,85,52,208,114,127,163,70,30,26,193,217,90,120,195,83,90,118,49,208,202,180,67,192,149,195],[52,158,117,111,242,217,201,243,190,203,40,116,193,61,176,199,169,133,195,239,209,237,115,122,47,101,231,198,92,152,156,160],[75,127,154,10,157,124,172,156,232,107,108,79,46,156,162,113,20,67,146,241,170,169,1,111,127,130,38,251,214,222,76,79],[16,243,130,188,74,172,13,68,208,33,46,180,166,38,112,143,160,109,9,250,119,119,21,182,91,52,57,128,253,192,231,157],[185,101,177,29,14,22,21,48,99,132,242,208,228,86,29,101,168,213,47,168,88,254,200,198,182,39,214,6,203,226,79,207],[64,161,25,253,206,200,1,56,236,171,184,39,2,223,159,103,14,254,255,197,58,159,215,153,18,87,173,186,172,45,138,203],[43,73,57,19,216,172,33,89,74,224,64,195,133,154,95,47,181,212,129,38,167,219,218,8,13,115,188,172,57,184,245,125],[42,126,244,200,128,75,162,87,181,36,105,47,88,93,14,105,32,167,104,94,32,99,48,218,173,189,142,85,70,11,0,114],[5,68,44,48,219,56,136,55,89,61,11,116,91,168,235,17,0,13,7,48,112,57,221,198,222,131,38,54,240,49,86,243],[64,115,205,207,197,236,127,88,44,143,177,217,135,29,93,102,4,107,67,98,77,233,170,174,174,235,33,86,151,165,112,53],[147,175,231,148,19,200,29,98,178,20,133,15,17,223,8,21,71,16,1,145,112,149,66,232,42,131,247,104,114,147,54,216],[158,144,218,196,101,39,190,252,109,204,195,211,227,106,35,21,245,88,71,205,109,181,146,60,111,132,22,94,150,78,189,79],[78,189,156,182,107,175,142,96,58,125,196,14,133,55,63,199,72,111,29,255,183,33,232,180,249,148,45,109,54,213,183,114],[41,92,152,24,172,202,156,220,117,180,94,26,230,155,145,247,237,8,190,226,112,73,164,118,121,58,177,210,43,191,184,206],[10,170,199,36,151,26,108,33,61,93,191,96,97,192,48,213,162,28,177,181,60,185,97,98,44,43,203,21,2,70,130,39],[212,247,132,44,75,148,93,65,2,237,7,102,176,79,108,147,46,144,191,234,0,124,209,250,190,135,236,165,47,1,222,212],[100,205,225,255,163,110,252,94,151,228,208,148,176,174,174,99,61,37,170,66,185,176,79,139,7,162,227,158,118,213,59,198],[84,67,32,211,174,139,200,153,195,201,40,143,194,72,206,207,76,240,185,94,173,123,127,46,34,89,187,227,131,71,206,64],[100,232,125,71,12,65,156,2,119,61,185,27,10,107,100,118,94,69,198,228,234,54,63,253,181,139,175,175,247,126,180,0],[170,33,96,137,26,168,6,213,60,249,228,1,167,59,233,153,100,146,102,5,139,197,70,35,230,48,176,128,68,7,64,202],[48,1,155,219,85,92,193,45,17,32,21,209,146,1,28,190,3,250,35,253,141,64,153,31,6,107,182,165,131,78,201,53],[49,110,97,51,224,29,121,79,207,82,138,201,131,135,195,171,227,179,239,246,81,15,241,165,67,222,84,75,64,68,110,93],[183,238,159,92,89,116,244,226,78,110,111,232,136,193,239,47,72,248,139,104,14,173,147,114,28,11,84,158,147,93,62,171],[201,28,199,176,60,172,78,68,219,187,153,54,245,76,159,133,27,198,34,99,163,129,201,78,215,28,237,143,180,57,28,28],[128,236,226,119,194,161,11,113,128,130,32,25,76,119,39,130,113,212,8,186,142,73,243,89,123,132,116,140,79,59,108,166],[49,151,13,91,146,209,124,110,182,193,234,208,26,71,95,224,113,75,113,74,179,51,113,123,171,184,50,243,147,215,140,151],[230,126,183,141,198,209,152,97,127,35,8,102,250,73,179,14,253,76,139,54,49,232,93,175,109,234,235,232,120,196,41,191],[96,157,77,161,156,93,214,191,31,151,202,67,229,20,5,213,94,25,58,195,72,183,133,126,34,121,10,245,83,210,213,62],[103,70,124,248,1,19,136,168,248,194,228,19,87,163,236,153,98,234,227,174,67,212,43,132,120,241,147,75,15,139,104,81],[106,42,181,17,133,39,169,138,37,119,224,248,237,132,66,143,32,211,52,82,170,34,81,66,200,108,72,2,18,199,150,196],[55,42,98,141,243,127,99,5,127,148,173,240,156,235,7,173,222,254,111,146,80,35,166,179,182,151,245,98,62,234,155,85],[221,191,52,55,126,180,37,135,195,91,207,28,181,27,220,187,224,220,89,21,30,43,37,208,83,10,23,202,79,229,215,104],[239,129,208,80,49,189,160,214,205,139,47,76,118,191,247,90,155,11,222,135,74,84,183,232,226,255,83,5,72,104,243,123],[163,128,38,9,234,138,29,29,20,37,120,219,95,3,125,71,85,156,7,194,244,162,65,240,222,205,7,227,24,9,31,141],[98,177,9,30,199,109,116,24,21,147,97,169,183,58,128,187,32,233,135,65,117,60,141,78,236,32,46,235,95,168,61,147],[188,236,35,151,83,169,183,217,15,131,28,5,41,227,131,128,110,91,33,116,136,51,234,127,138,21,107,172,128,31,207,82],[193,131,64,143,71,27,73,69,248,63,170,41,70,150,248,252,240,59,224,57,97,70,227,85,162,77,142,11,123,180,173,206],[101,147,84,245,25,53,152,103,161,108,127,73,168,86,246,206,80,180,17,67,36,184,92,74,125,74,236,7,65,227,27,182],[177,125,14,61,232,69,131,194,210,247,74,136,67,201,246,230,55,65,16,65,0,80,32,153,196,231,78,228,36,92,20,22],[240,87,240,126,70,121,163,199,80,64,143,141,160,130,149,112,59,95,248,209,177,202,45,50,41,248,16,32,182,22,43,94],[148,172,43,165,188,186,112,21,33,214,103,47,165,189,140,57,169,22,17,41,249,187,233,141,65,72,255,191,177,199,186,19],[250,14,1,59,43,210,69,83,201,18,66,235,104,200,248,223,151,218,8,203,93,125,189,29,109,32,1,149,148,31,10,158],[14,182,45,168,17,141,249,231,138,249,66,76,86,15,12,78,170,146,172,199,113,61,249,183,142,169,215,221,231,199,10,29],[107,231,33,31,66,202,146,30,67,202,100,193,126,234,245,250,68,244,29,28,219,252,217,87,22,57,148,241,152,129,221,253],[119,172,248,55,104,101,97,34,28,191,177,33,141,248,237,7,157,125,95,25,196,122,120,26,186,236,97,242,179,64,219,26],[191,155,56,223,42,94,204,21,223,17,228,58,150,35,229,239,91,247,163,128,13,157,123,241,155,211,4,164,109,133,237,17],[122,5,115,216,53,110,144,213,90,89,168,78,147,190,170,84,24,216,83,219,238,248,128,232,104,237,116,61,208,115,199,217],[5,116,31,55,9,144,41,160,73,67,113,1,215,188,229,32,81,35,156,237,116,169,144,20,16,125,38,214,146,234,167,231],[129,251,65,188,178,128,182,15,20,231,61,49,5,42,253,162,155,122,154,177,217,35,98,15,38,175,140,152,253,112,31,0],[18,229,222,222,71,250,187,102,81,79,161,151,75,85,226,242,21,244,171,25,201,70,195,143,148,99,19,10,155,104,80,173],[62,186,187,89,142,72,235,143,84,221,205,193,249,90,218,113,95,46,170,175,27,69,87,93,127,49,172,195,101,1,255,228],[20,19,132,101,238,201,11,137,233,193,222,144,60,7,147,173,89,120,24,221,149,168,145,34,191,32,54,250,7,220,10,92],[138,107,201,95,3,228,62,248,30,132,189,216,153,243,130,183,146,75,89,164,215,201,120,49,97,145,188,21,219,201,141,125],[190,87,42,8,151,125,221,58,224,91,230,40,12,22,91,209,159,106,92,113,101,8,181,66,11,77,145,192,253,171,239,103],[236,66,173,70,14,50,6,23,104,122,83,239,28,128,212,112,42,103,73,17,182,20,234,50,211,26,17,25,171,139,110,122],[98,180,211,196,52,68,216,210,224,49,86,32,55,156,197,181,232,139,10,152,42,135,105,1,86,230,159,213,139,18,84,105],[108,197,32,208,94,214,110,188,252,105,246,182,239,55,65,230,205,185,44,45,192,243,70,169,132,52,215,208,176,228,167,155],[124,223,34,11,199,71,14,156,19,43,240,7,177,75,135,27,62,186,46,228,51,174,236,35,33,14,10,86,40,32,38,49],[215,146,237,8,169,209,14,156,165,31,198,226,86,251,97,67,244,156,52,14,114,156,254,164,127,181,171,20,179,163,198,178],[233,191,210,218,65,41,141,123,133,185,97,22,54,62,162,46,220,123,129,12,35,36,124,153,151,152,3,69,137,215,108,204],[129,104,158,210,39,238,195,2,125,190,201,229,79,226,165,91,134,237,15,190,229,94,41,9,64,29,76,82,126,15,110,214],[141,123,222,254,6,55,169,110,64,71,103,150,21,85,15,41,203,207,235,10,118,224,198,15,63,94,155,222,141,126,32,238],[64,87,159,199,18,178,215,170,46,37,35,108,33,221,162,69,158,99,4,43,236,91,123,189,25,150,144,136,77,64,24,178],[45,76,98,172,80,6,223,57,152,240,234,159,218,22,107,30,55,208,178,124,212,111,113,60,35,62,102,11,121,14,255,186],[15,118,47,98,98,20,28,246,213,179,135,157,17,160,201,122,141,202,171,80,112,133,133,134,23,248,187,26,164,61,15,183],[236,132,148,128,231,50,234,88,49,33,132,48,164,67,50,157,143,74,220,156,168,53,47,140,150,55,59,220,205,156,173,95],[95,84,175,196,73,16,202,50,160,168,200,98,163,193,147,42,23,25,163,6,158,22,231,207,163,133,214,49,183,60,199,17],[253,38,134,46,240,203,235,89,146,69,251,244,61,201,192,39,138,198,146,187,115,235,223,155,161,175,217,170,27,5,114,69],[248,154,233,252,203,194,4,164,116,39,86,6,241,74,23,208,192,20,8,17,50,180,133,222,239,109,57,125,105,89,20,70],[215,219,214,252,190,142,61,128,179,241,146,235,45,39,59,62,236,46,54,133,164,85,192,8,237,78,118,85,97,35,245,32],[8,98,168,212,53,110,77,185,114,109,155,170,160,24,232,173,104,225,141,59,215,158,148,148,25,224,0,205,48,121,92,63],[112,12,142,123,233,62,198,237,60,108,148,2,238,184,126,106,7,204,157,184,45,251,200,136,25,215,35,41,77,58,204,110],[126,132,205,128,129,46,146,220,42,162,245,74,146,118,226,159,244,253,162,9,185,72,94,118,183,193,147,196,40,150,118,109],[157,80,60,197,131,227,248,60,135,242,34,235,8,225,17,77,99,117,154,246,227,87,4,236,61,112,194,10,222,209,18,68],[223,193,253,187,179,237,133,33,190,31,224,61,230,107,81,242,202,214,240,178,193,143,102,99,111,141,182,199,192,10,65,128],[236,102,201,12,9,191,43,83,152,77,10,124,16,1,230,164,107,23,7,152,201,196,92,110,157,121,66,238,181,180,219,95],[91,161,147,235,211,182,101,137,88,78,42,228,44,132,226,45,244,88,143,83,223,229,125,82,144,71,242,116,9,242,201,161],[244,104,232,215,149,171,225,40,28,74,186,130,42,62,143,73,204,40,35,76,158,223,109,120,235,21,119,28,113,147,222,165],[33,163,224,139,231,247,1,165,186,202,209,167,2,253,57,213,236,239,68,198,24,105,40,130,172,169,229,193,166,4,234,72],[69,188,149,201,83,241,95,235,57,80,247,116,235,44,228,24,45,236,247,5,251,140,142,185,185,4,253,93,219,196,178,213],[150,226,106,10,18,224,157,179,169,199,5,44,128,78,104,228,252,84,130,19,226,217,23,195,4,41,133,110,84,248,161,6],[109,167,178,177,181,26,89,16,99,183,119,58,186,224,237,245,219,181,149,105,152,153,181,166,8,79,41,249,213,87,204,207],[245,79,98,55,181,225,71,51,162,153,143,8,41,141,127,237,187,180,112,98,181,114,214,224,54,48,138,187,69,110,195,209],[245,88,109,11,15,25,62,101,185,176,44,95,46,244,139,11,78,24,22,186,25,184,190,238,231,251,47,118,188,127,98,57],[214,60,143,3,120,191,97,38,69,84,159,5,87,53,146,146,205,160,35,135,212,0,167,216,35,23,146,237,128,63,152,42],[185,147,132,218,58,88,18,244,157,243,145,232,200,143,3,93,212,130,67,68,179,94,32,90,143,227,32,215,53,150,134,34],[197,206,33,243,211,182,88,53,150,212,213,239,236,215,242,22,142,84,120,7,46,119,21,24,1,2,39,144,33,112,246,125],[130,218,71,81,78,168,30,60,148,204,52,62,30,215,148,10,87,180,51,61,207,203,225,4,89,127,87,165,102,178,74,206],[239,131,33,219,162,214,50,65,189,214,210,216,11,112,1,119,3,174,33,135,77,43,221,53,44,73,41,67,227,36,49,222],[219,0,59,221,249,114,161,92,31,123,75,54,109,7,118,139,148,87,66,236,116,91,77,112,237,44,100,45,32,34,188,24],[59,127,254,231,97,254,245,0,101,89,33,36,87,154,121,103,191,19,71,55,105,48,186,27,98,210,188,13,15,238,178,27],[229,137,34,40,12,41,8,21,48,34,42,245,14,249,76,181,60,221,91,151,226,101,211,200,164,101,84,180,82,114,239,71],[182,56,166,116,240,218,52,105,13,183,200,71,81,215,77,127,52,102,210,92,158,78,49,248,116,47,162,152,74,236,104,199],[226,188,218,100,50,222,232,226,59,239,167,11,126,142,152,41,240,22,254,90,116,164,180,197,209,218,46,41,74,10,94,65],[10,29,30,3,236,114,216,81,180,44,149,104,119,147,123,52,104,183,165,94,78,166,15,146,38,119,208,23,216,46,192,74],[90,13,195,222,126,47,127,83,56,65,0,31,51,6,193,58,14,63,76,225,42,113,93,115,179,245,16,145,241,83,89,81],[47,202,241,22,80,172,70,217,17,77,250,56,175,196,93,222,150,188,39,233,207,26,144,224,117,69,24,2,53,159,243,202],[227,137,139,133,180,247,182,30,194,45,60,172,246,70,243,99,43,225,78,115,248,7,166,21,10,57,21,169,9,189,68,237],[96,100,14,34,31,12,147,20,138,0,29,238,46,112,145,226,143,243,16,85,70,69,213,253,48,146,236,165,80,10,147,116],[100,7,173,220,174,23,97,242,160,178,145,161,12,48,252,158,111,201,93,137,44,23,199,53,143,178,207,240,122,29,32,218],[93,168,190,8,1,148,178,146,121,125,172,34,47,75,214,198,134,177,211,24,255,46,116,40,17,195,132,0,118,230,86,184],[104,30,13,189,160,33,150,206,96,70,129,35,218,19,72,25,94,143,169,138,152,87,126,113,81,101,209,55,94,217,232,118],[116,199,223,78,242,226,179,76,241,25,104,57,254,139,8,246,228,214,247,190,101,57,139,175,74,175,224,45,83,110,204,251],[191,100,148,173,10,70,228,63,97,63,9,164,119,160,75,25,124,153,55,113,66,41,213,134,77,181,164,179,80,132,172,236],[236,186,212,83,181,91,181,51,4,205,45,212,20,53,20,122,148,251,125,193,133,77,89,14,97,34,234,16,113,17,126,17],[137,203,247,234,113,233,156,7,84,236,67,42,247,20,182,173,66,94,50,168,170,83,35,240,138,234,112,207,152,77,46,161],[166,141,12,227,67,19,143,166,220,159,131,165,168,15,14,109,218,174,197,44,84,157,220,244,74,2,51,146,191,222,64,171],[21,177,129,71,116,150,142,154,199,244,36,239,214,123,124,9,85,54,9,118,20,17,209,170,178,131,64,171,237,27,30,218],[153,13,30,101,70,43,213,184,23,81,141,167,236,80,170,66,47,34,86,0,183,8,211,51,20,0,68,224,182,228,124,113],[198,29,33,209,136,92,8,113,99,158,242,247,42,206,214,56,205,47,13,50,26,228,10,51,175,215,111,91,26,131,220,33],[36,159,226,144,54,147,11,183,249,0,13,211,184,21,251,55,57,140,167,107,114,151,242,44,87,240,135,5,142,115,139,179],[184,227,150,14,19,169,26,214,91,174,44,194,223,61,62,75,234,55,200,137,188,13,205,134,7,156,62,13,161,100,212,97],[224,168,184,31,202,216,144,186,58,32,8,114,213,225,149,149,94,161,114,5,235,79,66,119,17,80,57,27,164,76,245,34],[153,120,10,209,13,51,223,90,50,94,113,109,117,61,214,246,45,185,220,130,248,246,192,172,13,238,63,98,220,21,147,157],[135,138,122,225,205,37,25,83,56,131,102,8,53,142,110,95,104,58,98,159,254,156,49,177,218,201,221,181,231,86,84,180],[214,212,92,231,230,16,90,171,70,183,201,142,178,43,128,72,98,240,172,199,216,122,218,178,235,142,121,46,14,204,95,115],[58,165,252,245,37,250,53,12,14,148,168,67,123,33,145,172,247,0,187,225,20,109,168,51,28,97,26,164,253,254,35,201],[129,163,36,144,112,97,112,153,144,78,48,123,121,132,224,92,163,130,6,182,217,92,204,126,166,116,151,115,216,136,55,211],[121,81,130,87,160,171,102,61,222,95,30,252,17,96,32,135,162,80,243,200,140,33,150,167,20,42,138,53,112,162,86,93],[124,186,191,163,161,4,2,245,183,61,151,243,191,21,120,124,113,73,179,185,10,59,217,236,195,94,52,207,246,129,75,139],[205,211,169,190,143,176,99,13,221,16,50,91,68,59,173,196,187,146,186,54,134,4,134,19,110,148,67,64,146,171,98,245],[91,105,132,170,147,79,249,106,168,107,149,253,200,16,187,158,37,31,160,110,59,37,104,154,167,197,140,228,133,159,90,112],[30,159,33,60,47,235,51,11,205,243,108,38,195,2,156,221,19,193,44,57,19,114,32,213,219,240,255,153,79,128,8,174],[179,190,3,188,194,162,64,69,179,215,38,155,0,141,157,50,94,28,26,92,108,166,191,215,131,76,156,216,88,103,252,74],[161,245,47,218,169,230,160,179,239,189,156,71,43,129,92,215,227,86,23,94,221,132,193,16,189,79,5,245,46,231,60,165],[93,157,151,227,195,133,153,49,71,72,55,2,169,197,168,234,75,253,205,248,254,135,133,61,47,141,195,66,172,182,133,168],[189,178,146,64,120,25,34,14,169,73,4,119,58,97,175,107,46,33,42,24,21,166,161,186,169,216,237,21,184,165,58,197],[104,217,207,88,18,9,112,51,244,59,182,245,235,190,213,1,193,210,70,140,243,51,185,239,79,34,41,180,138,8,0,211],[173,167,93,189,78,252,120,46,167,180,83,218,84,117,6,26,65,226,150,137,224,112,74,74,23,171,214,62,157,96,242,167],[204,10,92,148,114,39,248,216,191,58,197,59,111,74,28,80,26,96,98,36,129,217,193,231,105,238,70,68,249,156,87,208],[117,13,88,243,160,100,64,185,60,48,183,51,186,105,152,90,203,35,25,46,239,117,139,204,107,5,230,255,146,203,18,132],[96,10,16,10,55,83,168,19,137,104,201,169,63,189,95,151,118,215,140,215,139,5,161,201,149,206,208,245,241,30,254,50],[100,221,162,141,168,160,237,74,218,226,111,19,24,229,34,96,151,244,35,145,211,121,244,248,10,128,170,162,83,156,8,43],[90,165,142,25,13,81,62,232,19,80,213,168,20,102,90,177,169,35,40,83,221,107,78,47,100,215,66,157,120,61,108,250],[129,124,183,134,217,23,14,254,245,6,157,26,166,188,191,138,240,203,201,72,139,176,54,47,88,41,181,244,64,183,118,126],[25,126,15,53,18,209,5,153,109,149,240,191,103,171,229,253,114,75,113,167,164,118,112,93,100,161,236,64,251,29,32,165],[240,46,237,8,56,157,232,159,40,228,146,65,198,114,63,137,128,197,248,73,252,213,197,118,167,133,212,40,184,237,27,149],[41,185,208,27,89,133,241,199,0,234,250,90,211,39,203,87,57,246,221,161,219,210,153,163,15,70,35,157,243,134,230,242],[129,113,199,227,14,3,206,119,26,227,186,0,206,91,167,226,64,65,170,136,49,2,91,24,92,230,224,141,52,118,185,188],[200,200,28,219,162,47,4,125,100,107,233,43,123,30,8,174,43,198,47,60,12,191,28,75,2,94,138,122,126,176,95,41],[105,116,168,25,0,175,222,95,7,215,91,80,76,195,13,122,186,26,25,223,225,244,54,140,177,185,181,168,116,248,58,191],[153,120,192,84,103,109,49,122,47,117,58,100,199,96,101,25,184,212,111,155,116,231,182,14,160,186,80,236,91,130,133,238],[229,85,80,252,237,212,181,123,11,76,255,15,67,201,103,250,248,26,142,209,235,13,179,82,81,13,107,227,136,3,141,185],[52,154,188,146,114,78,33,48,178,19,105,119,236,3,231,87,2,46,0,95,64,115,219,36,1,37,188,67,71,63,190,175],[34,130,38,119,197,151,248,93,156,21,84,220,118,6,210,63,63,229,86,217,147,16,125,148,103,245,143,43,170,43,132,21],[12,185,15,38,63,224,207,87,114,115,196,20,91,109,110,21,163,168,111,254,47,34,40,181,58,8,3,201,232,39,27,112],[174,167,144,184,174,146,156,56,231,111,5,72,254,161,169,192,168,148,169,208,90,131,161,203,62,217,158,226,96,55,132,128],[157,205,146,91,55,42,117,109,20,88,211,124,129,147,122,107,143,178,180,187,60,94,10,114,36,168,17,16,205,197,202,177],[119,121,74,178,230,116,16,145,124,134,70,35,95,104,50,62,221,108,240,126,202,93,139,1,20,156,121,223,150,169,178,32],[152,245,209,141,76,63,136,161,54,62,240,172,240,79,21,76,102,92,204,253,24,187,17,69,147,203,204,40,10,4,69,146],[52,153,221,141,88,181,163,46,23,136,131,177,94,206,55,9,87,1,170,49,208,84,205,42,28,77,13,222,144,131,158,210],[121,47,13,170,195,6,154,145,9,11,114,212,192,243,83,79,79,153,20,37,129,129,214,208,45,20,122,75,148,229,220,214],[172,30,117,242,241,42,58,255,134,187,232,99,186,240,9,190,100,17,33,115,83,165,116,184,218,114,58,44,139,210,29,237],[202,188,22,169,183,150,9,225,59,173,234,165,11,22,122,104,175,166,238,151,158,176,97,37,39,237,125,93,7,173,25,25],[165,63,147,52,112,106,222,90,156,235,143,226,95,156,186,228,176,59,62,226,130,75,206,188,234,182,236,161,70,216,4,139],[77,191,207,21,31,143,245,46,83,207,178,31,93,104,127,156,150,43,212,107,97,143,73,33,218,134,185,151,221,234,133,41],[128,213,124,203,63,190,203,96,243,117,116,9,250,125,163,192,42,178,151,209,188,251,73,42,96,120,136,40,221,167,38,110],[65,121,148,9,89,175,143,243,203,136,34,20,128,205,102,124,50,28,234,92,88,230,90,194,27,134,246,22,124,138,41,27],[234,143,185,66,160,118,235,182,197,185,112,6,76,190,161,245,94,65,32,62,106,84,24,160,216,186,36,123,160,60,170,253],[197,193,208,131,39,157,252,206,173,15,191,197,93,167,250,234,18,217,172,39,231,94,239,24,242,232,164,134,163,102,197,253],[106,23,71,26,106,67,17,132,120,64,14,205,29,222,203,214,92,171,27,137,29,204,0,127,113,67,160,44,86,74,10,137],[60,162,8,232,156,216,131,187,38,202,91,224,179,127,56,251,162,104,204,206,73,244,42,123,254,174,197,16,81,14,151,114],[28,19,48,249,231,17,124,174,48,216,171,110,5,8,90,149,230,189,205,227,17,57,204,89,242,239,166,184,17,105,89,101],[231,48,169,220,238,148,160,183,197,68,65,206,232,228,174,123,156,138,152,85,18,45,10,93,14,184,241,118,35,174,216,48],[42,237,251,37,64,129,232,164,34,63,52,172,211,208,176,78,116,173,68,192,91,134,159,248,80,104,82,12,223,73,96,242],[149,108,208,14,129,185,253,147,89,149,92,174,177,136,150,55,24,59,198,43,74,117,33,158,100,80,236,235,230,188,76,119],[238,116,232,118,10,16,161,142,95,246,1,139,117,12,111,244,177,244,51,72,137,76,96,176,195,129,188,68,101,189,219,63],[232,122,137,144,37,44,83,28,25,136,4,124,50,0,199,202,210,177,189,163,20,127,105,113,95,189,110,68,148,243,69,103],[227,164,116,190,228,118,84,31,159,195,38,162,140,69,92,165,6,32,252,25,110,60,124,210,139,178,191,219,42,187,23,183],[27,25,89,202,132,183,201,172,226,113,20,214,131,82,153,185,254,224,111,243,199,157,195,212,20,253,229,17,100,5,38,73],[7,173,95,57,4,115,172,44,198,219,2,40,195,171,198,222,226,52,142,76,167,243,210,17,104,238,13,228,109,33,37,251],[248,104,17,6,189,16,235,255,250,247,67,246,57,2,105,195,137,83,128,77,2,32,101,110,21,186,4,181,174,62,162,60],[19,34,145,90,26,134,16,4,232,248,193,28,114,145,102,96,239,110,129,158,156,154,61,154,129,231,4,211,192,211,238,149],[42,77,221,7,99,202,117,107,33,100,243,33,219,35,62,86,99,187,90,151,102,140,86,198,116,61,97,130,171,27,228,178],[115,165,159,51,73,101,65,27,140,151,6,36,3,237,116,86,50,154,75,209,86,29,188,185,68,139,94,195,124,177,153,197],[83,80,107,73,161,60,211,16,250,220,87,215,31,216,124,23,116,147,223,234,231,76,112,196,251,186,144,11,12,188,86,33],[236,3,25,10,178,229,157,152,192,153,180,56,216,112,216,76,178,158,21,18,3,205,84,229,33,160,180,63,189,41,20,244],[204,115,74,89,251,110,207,54,0,175,178,224,168,87,76,127,179,101,75,251,181,79,98,208,43,103,248,56,160,7,49,144],[106,177,19,90,18,210,11,70,193,136,35,13,34,16,2,156,140,25,80,163,81,2,228,238,216,143,164,76,218,6,120,47],[99,170,30,76,9,28,193,213,164,0,24,38,121,244,215,219,81,255,111,44,171,171,67,93,134,68,27,234,134,93,59,207],[226,237,195,72,216,154,102,104,81,80,143,76,60,239,229,80,57,110,24,156,51,78,85,249,76,250,79,130,185,206,26,14],[89,24,101,204,137,4,243,49,202,180,102,232,187,78,69,252,118,161,69,190,217,79,90,64,101,15,198,238,82,149,42,126],[174,5,33,147,219,56,134,89,114,37,18,240,183,235,134,200,10,110,15,190,70,165,65,229,230,61,159,71,84,70,93,45],[37,207,127,23,129,86,125,92,137,59,78,40,16,247,6,223,242,101,177,196,157,160,169,56,224,180,214,123,46,28,204,188],[92,190,10,136,236,71,99,86,7,80,142,129,230,186,194,217,11,109,238,159,224,129,129,162,95,136,103,213,141,50,86,42],[7,39,194,240,134,97,210,140,118,148,199,248,61,115,247,38,206,41,226,23,233,184,249,204,243,198,244,249,8,134,249,8],[81,113,103,138,216,227,140,151,115,119,248,172,22,232,184,76,138,168,179,178,148,26,92,36,117,200,142,229,76,5,215,43],[27,162,222,79,2,97,116,118,58,197,190,80,196,91,143,148,117,125,169,8,144,162,162,21,187,147,211,79,37,2,86,212],[180,236,12,92,17,152,29,135,91,121,99,225,7,53,24,163,58,148,178,219,159,75,179,31,91,169,215,245,20,174,123,143],[140,106,180,41,169,98,212,94,183,113,93,101,199,89,197,51,96,186,41,19,243,191,18,222,187,26,41,200,31,164,14,187],[192,255,240,223,15,99,239,157,214,68,167,24,21,147,93,225,117,206,13,86,213,53,135,209,51,180,94,12,240,174,81,26],[146,95,134,182,40,246,205,113,55,29,176,39,60,38,54,191,238,30,237,151,0,60,18,144,152,150,146,191,133,218,249,211],[16,121,58,244,87,156,230,132,195,181,110,49,159,52,119,85,132,82,95,76,105,19,152,41,189,100,233,47,144,13,183,29],[245,84,61,223,236,149,70,57,218,3,27,107,47,101,36,21,72,75,234,188,24,189,162,141,91,73,57,96,104,135,61,9],[196,123,46,147,161,132,98,243,145,121,181,160,54,44,47,142,29,61,250,62,112,193,57,242,163,130,58,98,251,92,207,17],[30,49,244,175,142,184,117,67,134,8,70,27,193,188,19,131,161,8,97,37,29,116,112,92,71,137,211,192,25,25,151,81],[155,97,62,53,52,15,153,47,158,196,55,100,234,157,182,161,247,122,165,177,119,171,146,125,115,157,82,193,59,10,161,246],[55,5,226,55,154,137,159,146,208,94,178,49,186,248,166,203,26,85,64,45,68,136,215,104,88,87,107,204,181,47,46,73],[120,53,3,42,251,6,30,69,169,199,179,11,69,58,203,189,218,10,140,106,243,66,155,123,120,11,116,186,157,12,198,51],[119,143,18,134,186,167,40,79,245,151,23,136,160,110,172,209,47,33,242,68,132,31,129,134,124,166,193,144,230,188,230,172],[89,34,20,232,250,27,182,122,195,88,230,158,243,81,178,154,163,22,189,131,8,251,75,144,136,232,186,28,72,216,85,10],[136,205,16,54,180,87,90,232,154,81,77,6,46,178,179,255,140,222,0,78,157,233,56,78,55,238,39,64,16,50,42,68],[70,188,63,171,118,161,112,69,206,201,62,106,172,196,129,63,108,15,59,201,163,125,165,0,205,242,169,15,117,14,172,226],[179,175,238,24,236,14,25,150,36,179,129,225,252,248,197,140,21,108,21,159,180,253,215,94,27,36,90,159,189,190,215,141],[108,242,137,202,82,231,207,136,227,85,251,126,218,212,81,152,94,35,253,157,11,38,167,211,160,116,32,34,41,225,154,73],[246,141,238,131,157,109,59,150,153,248,76,25,58,131,87,34,109,203,205,68,240,50,65,136,61,74,250,27,119,11,18,103],[128,55,218,216,51,49,135,101,9,76,36,199,105,244,163,252,62,165,24,63,176,233,114,30,160,34,218,34,41,214,174,48],[105,226,179,237,236,47,75,219,63,90,42,27,131,49,195,147,206,248,135,128,134,206,13,214,96,46,239,7,51,132,41,144],[190,20,55,68,179,198,208,92,128,83,12,160,17,128,195,40,103,33,21,198,52,164,220,168,142,102,7,195,158,38,196,238],[31,241,44,119,163,181,101,157,153,66,133,25,221,35,246,63,227,135,225,74,10,111,90,43,189,112,49,144,29,156,47,33],[54,45,74,171,152,34,78,244,86,9,152,174,92,205,0,10,111,107,171,46,205,228,228,109,166,46,104,235,185,250,173,98],[25,119,7,148,47,17,36,242,27,112,9,191,117,202,224,37,117,236,211,85,191,24,113,253,121,164,139,237,143,106,189,132],[194,53,19,93,36,230,235,38,40,9,85,254,141,138,13,156,43,125,246,115,181,235,124,167,239,164,54,254,127,18,6,228],[241,46,60,116,121,186,191,194,78,48,162,243,8,213,25,28,209,223,184,180,141,70,174,71,70,115,64,202,161,174,4,118],[12,185,242,47,227,181,247,142,74,253,51,226,228,184,80,194,66,3,35,174,193,170,69,231,254,215,141,12,0,76,149,139],[196,200,190,218,234,173,172,49,121,208,196,54,225,107,247,249,154,64,191,218,208,95,131,10,13,111,20,214,225,68,50,164],[3,0,41,199,158,176,139,121,81,101,92,255,48,13,233,37,181,62,214,230,145,135,106,130,83,196,220,221,91,162,165,171],[13,84,35,153,1,106,6,238,164,99,109,63,83,160,209,106,158,104,117,80,156,34,187,121,44,248,162,13,208,52,22,170],[222,174,102,239,39,53,58,10,237,163,222,248,143,20,49,150,68,78,15,106,192,153,132,42,116,154,185,196,33,34,236,34],[87,67,81,103,113,172,112,2,117,230,70,160,120,255,189,241,205,229,13,217,165,214,16,213,93,132,30,195,129,163,241,229],[137,187,224,254,95,11,62,30,109,239,224,84,170,52,167,44,59,159,126,18,122,64,162,255,142,157,62,49,235,112,92,50],[119,72,75,199,154,206,71,35,15,147,183,2,62,50,139,151,126,186,172,230,19,79,167,233,169,65,64,2,197,130,227,173],[161,119,18,145,49,244,85,210,77,92,123,96,130,43,178,207,93,82,220,96,232,81,175,187,216,63,147,90,162,5,60,223],[75,117,74,86,42,124,214,93,75,153,15,135,183,119,34,163,137,134,32,52,171,184,246,69,250,168,129,251,24,24,172,225],[164,143,125,73,9,136,224,83,206,208,218,50,227,132,228,182,208,226,184,188,239,221,123,190,214,45,156,84,64,78,244,183],[27,75,75,255,229,43,118,231,33,137,230,66,105,138,182,158,1,71,195,10,183,26,187,153,4,126,223,161,78,0,142,111],[40,222,30,107,167,105,85,49,223,13,105,127,179,244,121,121,153,0,187,202,2,157,63,254,189,214,33,139,18,158,11,98],[60,125,223,8,206,26,230,36,45,237,76,246,2,211,161,34,108,94,22,73,65,243,237,227,218,186,150,121,7,119,53,252],[128,205,82,208,5,215,138,132,132,232,139,114,65,18,153,180,179,222,195,228,21,105,98,170,175,171,100,207,46,77,252,148],[21,168,10,177,104,190,96,114,221,78,202,33,237,191,53,65,34,255,49,203,211,93,238,83,62,229,59,6,131,12,180,92],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[230,100,62,27,62,244,213,216,72,169,215,205,133,235,136,72,97,196,197,67,152,32,176,151,69,40,191,54,9,23,73,240],[2,175,246,50,114,221,237,9,192,15,239,206,6,238,164,71,158,237,176,240,134,20,226,148,221,187,238,189,170,165,43,177],[191,204,100,70,255,172,230,168,97,44,184,116,1,254,144,46,231,174,189,4,94,25,191,118,205,200,244,39,159,184,117,225],[207,1,91,84,248,107,47,89,250,246,18,40,56,37,70,91,108,13,59,184,52,65,97,10,9,70,157,108,148,66,67,34],[226,50,111,175,203,183,41,206,209,25,38,107,17,241,237,210,134,81,103,159,93,70,93,80,182,25,106,196,237,116,79,161],[213,42,141,175,224,137,212,107,43,202,245,234,212,44,165,224,146,101,244,222,199,206,118,105,86,41,222,80,254,239,133,15],[235,22,33,239,140,219,74,242,219,98,63,205,151,170,75,207,149,169,75,225,135,135,120,38,104,95,237,220,212,91,129,203],[59,87,228,125,24,216,1,136,97,96,64,52,189,50,211,58,75,203,248,116,133,157,53,149,122,134,217,104,88,227,37,12],[40,38,131,63,150,14,174,10,81,164,143,110,215,72,99,128,184,30,17,12,181,196,131,59,2,31,16,130,218,228,98,180],[112,41,55,119,172,214,214,39,248,30,145,76,190,191,176,206,160,131,26,129,18,120,244,202,64,11,19,183,218,148,207,4],[171,152,47,73,1,19,22,17,81,113,122,82,78,20,244,128,169,190,151,232,2,13,165,171,237,234,103,163,223,29,228,25],[8,71,136,89,85,79,169,252,108,24,201,196,174,18,101,202,194,98,142,218,219,166,112,3,96,34,219,213,147,195,106,197],[44,234,7,200,214,230,137,101,196,16,227,85,249,75,208,233,38,44,102,66,106,12,110,140,201,81,83,225,108,147,0,201],[217,110,94,150,1,198,98,143,58,86,56,193,35,253,69,233,45,244,222,219,10,235,237,127,187,176,3,50,156,212,204,132],[4,108,60,122,27,220,60,131,128,126,169,43,143,125,189,102,103,139,218,177,123,1,23,52,186,109,163,24,175,229,156,85],[34,245,85,216,75,116,166,137,51,82,116,212,244,43,72,184,91,199,144,174,195,70,102,193,81,61,238,83,48,244,112,145],[53,137,204,130,213,227,101,144,50,173,6,232,115,4,50,134,186,196,99,138,2,109,101,90,59,128,166,7,150,196,217,135],[228,212,229,129,100,129,245,78,255,120,137,101,108,233,242,94,48,60,95,41,180,3,94,7,215,251,149,22,93,207,79,35],[148,115,202,98,37,174,52,100,9,137,232,84,183,183,241,69,53,5,26,251,126,122,56,127,58,114,106,4,147,254,146,20],[125,220,222,192,80,10,72,252,84,60,255,87,170,141,242,165,130,205,54,82,128,29,203,153,201,29,145,193,27,58,78,25],[253,58,55,24,107,182,118,54,9,70,165,78,119,178,191,1,252,143,196,247,49,150,23,26,17,116,92,73,189,39,145,114],[36,147,168,175,222,248,100,32,128,0,89,115,10,239,228,80,104,129,44,43,41,236,252,84,75,156,172,61,1,200,6,29],[23,73,96,91,242,65,255,84,163,200,16,67,221,28,58,182,137,20,93,136,251,106,172,225,59,169,171,238,132,191,116,161],[136,126,234,209,56,60,230,74,176,155,177,94,140,159,163,139,203,22,29,70,135,240,144,247,42,165,17,26,223,64,251,105],[22,195,21,181,220,15,239,5,168,63,147,180,135,18,17,127,109,118,202,141,186,136,159,87,96,62,24,215,15,48,40,34],[32,185,162,111,114,217,56,64,131,125,72,221,201,155,171,254,109,118,8,30,22,244,56,83,124,126,57,188,6,186,249,254],[80,173,238,84,243,117,153,61,202,210,236,44,212,245,151,211,63,162,45,196,101,196,73,189,237,156,89,205,176,252,212,232],[43,4,68,172,107,177,66,76,31,251,98,174,228,234,117,82,179,199,195,134,157,72,203,63,99,28,211,99,78,22,188,108],[17,4,15,255,164,84,205,195,42,249,254,73,48,252,163,16,3,61,50,12,75,130,5,123,28,214,255,76,238,101,178,250],[226,76,137,74,41,221,47,24,178,224,87,159,208,102,191,245,199,176,193,160,65,198,132,43,99,243,74,217,18,223,2,220],[251,2,57,221,153,180,17,251,46,36,182,0,183,57,6,173,69,30,185,134,164,63,101,107,88,189,205,159,80,8,242,141],[89,151,255,136,63,83,1,34,224,96,126,207,6,43,42,123,36,168,226,191,208,224,74,31,104,107,215,48,247,88,126,66],[175,171,50,98,12,236,126,108,146,120,26,48,96,12,238,126,93,12,127,211,156,222,211,14,12,224,63,194,128,217,129,113],[55,151,124,20,194,249,112,209,27,174,48,164,237,143,161,34,172,9,232,28,93,10,229,78,59,254,80,177,112,206,210,200],[46,208,214,74,240,41,113,26,110,188,95,186,202,241,235,113,204,165,116,116,53,159,101,150,54,11,73,127,49,183,55,21],[203,238,161,100,89,78,184,121,30,229,238,194,115,43,4,181,233,74,59,35,170,106,119,110,143,185,225,204,4,203,171,155],[7,225,169,181,78,167,45,199,14,69,184,90,132,196,161,11,171,43,131,70,221,97,246,80,144,53,137,252,184,104,207,31],[7,225,169,181,78,167,45,199,14,69,184,90,132,196,161,11,171,43,131,70,221,97,246,80,144,53,137,252,184,104,207,31],[7,225,169,181,78,167,45,199,14,69,184,90,132,196,161,11,171,43,131,70,221,97,246,80,144,53,137,252,184,104,207,31],[120,45,184,181,111,211,239,235,11,61,190,63,191,118,188,70,131,5,103,13,64,119,77,217,37,193,42,204,25,142,186,7],[139,191,86,94,125,105,28,151,84,194,190,193,158,30,187,124,54,152,131,179,74,46,137,219,183,136,127,162,18,92,86,163],[38,208,113,172,61,62,174,191,185,187,125,247,93,57,87,122,169,230,236,194,170,60,195,167,44,123,67,64,182,154,32,199],[227,76,188,87,83,23,248,212,112,220,245,66,119,12,244,130,237,24,52,75,62,73,110,56,98,32,66,57,133,226,185,243],[246,254,215,66,88,22,244,175,64,112,176,202,223,191,72,30,212,0,62,190,111,133,25,138,237,111,99,242,169,73,16,14],[42,183,14,159,127,78,199,151,88,142,65,126,167,145,34,130,40,252,103,244,133,223,202,11,183,35,222,222,188,250,208,76],[4,103,176,35,202,179,22,177,198,17,211,0,247,240,148,170,155,32,218,102,249,176,108,16,223,238,213,10,134,219,248,93],[180,41,72,197,88,162,128,102,157,242,59,144,38,21,109,97,193,244,238,65,81,159,131,115,87,214,184,82,28,60,231,154],[240,217,139,79,109,117,212,216,164,82,82,32,100,127,76,143,192,157,216,138,134,40,206,32,165,42,169,219,204,116,31,54],[73,193,182,153,193,169,59,171,21,156,61,149,32,253,17,72,207,229,166,183,160,133,0,151,35,183,87,115,188,173,72,96],[137,59,0,183,25,158,168,131,129,187,49,132,210,33,59,70,109,248,190,217,60,140,134,67,83,134,188,128,135,60,237,195],[85,77,178,169,120,209,33,49,141,227,77,94,114,51,239,56,228,91,94,143,91,31,138,171,254,126,249,18,96,190,166,239],[62,246,21,231,189,95,115,191,243,105,167,96,53,211,72,66,102,216,17,95,82,243,135,159,102,157,116,174,24,101,195,253],[66,226,154,33,137,51,158,142,213,42,104,19,195,183,154,162,36,112,98,242,131,62,206,95,134,158,76,200,198,177,185,83],[243,23,59,236,193,228,181,111,191,76,184,141,110,175,108,199,53,24,59,55,38,118,199,133,171,124,230,83,51,40,128,66],[24,198,101,180,196,179,190,37,61,131,210,97,156,71,135,15,168,238,248,73,1,52,127,249,150,48,60,222,194,67,33,7],[0,198,217,205,213,208,39,47,178,155,154,109,109,139,18,123,163,133,101,14,98,69,249,136,149,162,247,203,245,171,159,14],[57,220,162,108,98,32,241,176,98,18,171,233,61,47,151,208,191,211,244,218,101,210,68,207,76,78,232,199,187,111,128,223],[105,37,125,222,131,144,93,55,239,158,32,225,137,106,233,47,83,67,230,108,172,80,87,252,192,197,185,63,195,228,109,72],[10,164,141,59,108,31,90,85,34,183,197,5,10,78,176,73,157,68,135,156,233,190,153,219,75,168,21,208,24,213,226,52],[73,148,178,70,65,129,226,218,231,225,81,187,79,144,81,207,167,112,187,106,8,176,144,11,7,36,238,203,121,61,205,137],[247,179,143,199,24,225,89,203,64,102,220,43,17,146,39,62,0,148,58,65,64,246,17,44,112,107,228,204,115,232,135,229],[220,72,190,160,100,223,24,237,47,45,95,247,74,5,132,49,250,163,35,235,29,23,115,160,143,207,184,158,183,145,233,111],[95,16,172,12,76,61,193,178,218,5,0,108,93,6,35,87,239,90,228,237,64,147,203,12,198,190,196,105,47,41,123,215],[205,34,235,204,118,174,146,241,87,204,183,50,43,53,77,216,42,104,43,172,198,94,66,134,153,79,138,22,83,25,7,28],[50,238,135,223,178,162,55,61,142,4,197,34,251,104,40,45,154,203,74,64,3,10,120,215,108,62,49,100,63,233,33,239],[89,209,233,66,136,254,121,97,76,75,249,115,169,205,138,192,53,112,49,134,223,113,182,87,32,41,31,218,21,222,150,199],[124,86,185,202,145,34,46,241,50,204,99,104,85,146,41,223,101,63,29,183,55,183,44,30,58,7,106,44,132,232,221,11],[90,62,74,198,250,173,210,122,14,2,205,196,107,117,26,207,113,153,177,3,96,45,128,249,240,94,147,93,70,62,179,5],[65,96,28,250,31,71,118,178,237,183,237,141,141,155,204,118,121,61,38,215,243,158,235,145,71,176,4,75,119,2,200,99],[81,127,252,14,225,47,248,197,106,17,44,153,103,35,64,44,106,125,39,104,247,93,29,255,209,58,19,202,224,32,136,161],[252,147,187,209,189,183,240,82,244,118,93,220,212,108,189,46,156,82,76,39,130,49,34,67,139,127,97,152,169,215,164,147],[148,169,194,99,114,139,188,166,44,237,71,170,249,185,158,75,105,253,78,70,251,142,149,24,143,71,241,156,99,13,195,222],[11,33,99,76,77,92,155,185,239,130,189,162,251,247,138,49,65,86,42,138,241,47,3,220,124,23,55,56,98,175,64,230],[11,33,99,76,77,92,155,185,239,130,189,162,251,247,138,49,65,86,42,138,241,47,3,220,124,23,55,56,98,175,64,230],[11,33,99,76,77,92,155,185,239,130,189,162,251,247,138,49,65,86,42,138,241,47,3,220,124,23,55,56,98,175,64,230],[11,33,99,76,77,92,155,185,239,130,189,162,251,247,138,49,65,86,42,138,241,47,3,220,124,23,55,56,98,175,64,230],[155,187,65,137,158,38,108,223,80,120,15,15,226,116,118,222,73,52,91,57,16,217,97,72,40,142,152,231,171,118,170,201],[179,227,131,137,154,124,45,157,99,194,149,163,202,114,103,94,122,203,20,219,177,246,43,149,104,129,135,173,191,102,188,31],[194,108,4,86,236,114,177,210,5,57,139,87,107,208,60,101,164,107,115,205,155,52,100,136,210,205,173,235,130,210,234,40],[152,94,10,241,106,37,17,18,217,179,36,230,138,179,97,47,173,50,180,206,182,26,218,235,190,0,237,68,184,163,92,124],[16,87,213,69,120,54,235,7,125,28,144,252,201,119,47,51,188,247,246,126,103,235,152,110,148,192,88,184,144,104,34,240],[180,177,54,112,2,38,4,5,2,47,44,191,157,195,17,220,221,176,98,96,215,99,157,13,229,20,242,193,123,123,194,148],[198,134,41,158,165,4,25,244,124,114,89,174,68,177,128,200,12,187,21,52,199,199,35,79,225,170,2,194,147,224,86,230],[82,192,178,187,155,42,38,156,131,12,153,37,66,40,197,167,87,70,178,201,240,108,209,200,205,102,143,20,136,74,62,122],[14,237,42,177,106,86,216,249,115,193,209,223,77,14,212,46,166,11,180,147,134,72,105,196,227,168,133,156,22,195,186,243],[75,252,29,212,166,110,65,236,129,45,64,172,20,135,39,198,16,106,195,249,176,49,246,125,194,86,74,159,132,173,179,206],[122,142,59,249,216,35,157,110,5,77,113,37,194,20,38,198,118,246,228,102,205,243,187,108,233,26,207,2,10,41,189,111],[1,166,85,206,77,8,219,164,92,58,50,81,242,70,183,38,66,31,27,80,8,31,238,43,39,254,200,206,172,72,34,82],[24,165,120,192,225,248,80,16,81,125,105,175,244,149,124,165,103,121,34,106,210,225,164,22,175,116,87,91,140,4,84,136],[180,228,160,57,55,195,48,77,136,187,250,58,111,224,139,45,242,4,176,124,59,37,75,9,227,52,113,189,160,95,127,56],[136,186,125,138,179,161,21,25,240,146,58,187,247,65,149,184,32,229,79,186,186,131,172,18,27,41,247,220,161,43,32,25],[167,101,220,106,129,151,118,13,70,161,104,241,46,56,110,171,94,99,78,127,74,82,161,56,203,12,186,175,15,153,75,194],[239,86,25,85,134,43,12,41,228,39,204,93,20,240,60,226,87,236,185,40,141,21,5,47,135,190,93,8,63,253,250,153],[223,201,241,213,94,208,134,254,70,168,185,40,43,31,53,124,4,90,177,37,112,48,16,228,71,30,29,252,149,233,205,153],[183,147,153,134,211,77,6,87,237,4,183,180,79,107,66,35,178,45,248,115,97,148,93,34,133,66,155,30,158,173,180,72],[229,56,203,41,237,121,238,45,53,20,19,161,143,199,247,196,191,158,124,243,195,179,61,69,207,102,150,191,175,91,61,223],[10,141,27,217,154,186,98,193,109,10,180,228,93,193,235,197,187,186,192,82,35,236,137,249,245,202,97,161,92,29,26,27],[228,66,199,216,217,150,83,140,117,11,71,164,172,48,134,213,150,86,250,249,118,97,18,83,232,157,213,231,230,3,23,193],[17,30,70,17,44,153,129,86,16,50,140,109,202,101,216,68,174,253,217,127,247,164,6,96,142,48,156,180,227,201,60,254],[242,184,216,100,111,28,132,110,207,210,144,255,111,234,198,186,235,93,189,107,35,159,96,199,173,79,36,216,43,226,62,83],[169,80,56,15,134,76,15,105,96,99,58,161,190,142,34,52,160,181,172,200,67,94,78,61,117,63,233,15,198,84,179,76],[210,26,127,0,162,156,101,25,217,204,17,12,24,229,59,225,5,108,109,126,158,59,224,79,7,217,179,100,63,174,32,207],[89,58,103,24,90,64,217,209,169,55,226,149,84,154,160,253,204,133,248,208,185,177,108,49,250,199,206,219,27,24,109,183],[217,152,47,94,153,171,55,152,129,116,207,164,11,26,188,80,117,232,4,214,22,173,44,221,170,146,168,168,70,46,77,185],[37,144,103,41,5,129,109,114,115,239,7,68,70,235,221,222,24,119,160,174,252,148,105,119,42,179,15,104,62,78,18,155],[128,222,190,149,151,44,47,211,221,134,93,215,246,62,233,251,124,196,119,247,130,23,47,43,57,19,177,251,42,37,46,218],[48,213,116,154,31,36,200,35,43,213,197,161,226,80,176,190,106,48,44,237,151,61,153,171,196,46,168,161,122,171,189,132],[152,200,167,167,128,83,47,166,48,106,130,104,20,147,24,219,37,58,98,97,207,168,134,216,34,75,39,53,154,250,236,173],[18,27,161,60,125,244,33,232,134,99,113,184,63,171,110,103,139,72,202,178,253,92,197,104,78,134,130,93,23,241,27,150],[250,65,206,215,204,152,197,111,74,145,144,201,214,28,215,243,164,132,55,79,224,98,157,24,241,176,242,65,66,120,58,129],[2,90,62,138,72,22,189,211,206,148,214,217,224,182,160,1,233,91,74,93,147,197,248,216,243,239,76,124,247,166,151,139],[198,116,105,22,43,86,86,82,104,246,163,174,173,11,207,46,41,104,61,178,106,219,86,150,36,85,85,235,222,15,20,150],[103,30,70,36,250,57,3,157,89,186,83,216,180,79,77,118,169,139,150,76,68,205,159,229,112,128,29,76,89,79,206,178],[82,153,131,94,126,51,196,187,4,179,170,42,199,31,200,192,59,181,251,35,49,27,203,12,103,187,166,191,219,226,92,94],[68,111,101,77,178,110,49,235,154,218,159,213,146,130,163,175,39,2,181,177,4,110,112,12,137,96,218,70,190,220,109,50],[86,68,77,77,246,161,135,143,217,101,146,214,139,248,146,235,215,69,182,66,101,158,152,109,77,43,236,75,83,73,250,93],[25,29,41,228,91,14,155,122,149,57,145,154,126,165,41,163,206,234,167,9,156,162,214,110,199,179,170,36,129,168,176,250]]},"StartState":{"machineHash":[111,17,227,235,48,226,181,27,201,26,80,119,4,3,135,207,29,128,63,23,195,112,100,184,198,150,223,237,187,191,41,254],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":816759,"sendCount":0,"logCount":1,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[220,9,133,16,46,65,66,31,213,113,151,134,218,108,161,87,213,48,0,194,33,145,235,24,250,16,37,255,78,177,73,106]},"SegmentToChallenge":283,"InconsistentSegment":{"Start":816749,"Length":175},"SubCuts":[[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[14,241,15,203,251,243,159,96,39,251,233,115,146,249,69,149,3,61,102,203,209,242,157,31,229,148,129,218,217,51,91,245],[222,98,147,218,223,4,141,45,160,139,15,72,17,216,240,223,157,25,129,103,80,21,173,86,249,122,209,115,0,135,224,179],[222,98,147,218,223,4,141,45,160,139,15,72,17,216,240,223,157,25,129,103,80,21,173,86,249,122,209,115,0,135,224,179],[177,226,147,6,162,24,222,159,7,252,152,96,172,192,139,199,117,203,77,15,107,34,63,217,104,49,161,191,161,66,83,112],[177,226,147,6,162,24,222,159,7,252,152,96,172,192,139,199,117,203,77,15,107,34,63,217,104,49,161,191,161,66,83,112],[59,28,38,236,113,175,81,246,179,232,96,43,163,20,128,150,140,141,204,171,240,168,156,6,246,174,43,33,237,191,70,164],[213,143,4,36,185,93,22,157,104,150,231,188,1,149,194,236,94,71,84,114,128,188,66,26,74,245,128,28,37,56,191,236],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[179,215,201,219,222,94,30,210,242,4,26,240,140,231,124,39,17,229,52,235,141,181,51,78,228,6,209,95,68,233,37,11],[155,216,137,151,154,243,188,143,85,35,202,99,175,195,253,103,35,215,120,239,137,215,166,188,113,221,244,164,95,162,66,125],[106,154,225,200,97,197,218,172,246,36,21,73,224,149,102,211,37,29,49,139,187,119,32,12,158,189,132,226,150,121,76,87],[12,214,7,49,230,117,136,207,103,63,46,115,32,72,162,63,153,74,123,72,147,120,101,172,40,91,230,13,244,63,94,46],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[79,227,185,213,117,184,149,158,208,243,211,215,141,145,155,245,20,78,156,105,175,217,159,106,118,133,234,78,194,217,97,81],[87,5,219,65,209,172,35,201,132,163,222,38,5,55,94,57,94,142,138,108,182,65,221,255,40,28,212,215,15,255,32,135],[174,150,115,254,243,41,239,19,226,28,184,156,0,58,87,8,198,229,181,62,144,208,87,125,12,67,213,202,71,226,82,134],[69,3,124,65,187,241,70,246,193,80,75,247,50,134,22,193,223,236,194,21,179,245,97,82,250,87,237,247,114,244,73,145],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[135,179,160,3,234,60,69,136,181,137,24,181,95,36,88,95,217,139,109,214,241,116,105,119,124,65,211,245,142,194,43,131],[142,132,69,187,239,106,233,174,75,187,176,30,174,199,249,118,154,77,216,96,8,41,10,134,104,6,232,226,97,32,29,253],[162,219,188,129,229,177,39,75,64,158,148,142,170,252,124,201,76,66,154,122,139,115,42,17,115,63,28,95,72,111,92,129],[231,61,115,9,22,215,2,193,17,139,224,95,136,40,164,160,125,189,175,82,2,202,21,104,215,125,236,158,80,239,29,131],[231,61,115,9,22,215,2,193,17,139,224,95,136,40,164,160,125,189,175,82,2,202,21,104,215,125,236,158,80,239,29,131],[168,9,140,105,135,144,106,63,5,254,61,22,159,182,223,202,235,55,192,22,64,201,59,109,180,51,214,173,62,125,90,206],[10,104,81,47,23,15,21,180,216,156,11,115,187,120,151,78,170,152,187,255,185,239,50,192,146,143,8,240,236,153,190,4],[10,104,81,47,23,15,21,180,216,156,11,115,187,120,151,78,170,152,187,255,185,239,50,192,146,143,8,240,236,153,190,4],[147,184,80,141,8,181,85,147,187,212,72,230,115,35,51,53,42,133,247,120,144,247,168,116,103,40,142,100,152,233,232,176],[147,184,80,141,8,181,85,147,187,212,72,230,115,35,51,53,42,133,247,120,144,247,168,116,103,40,142,100,152,233,232,176],[50,153,96,225,195,53,95,5,205,57,101,2,240,236,40,177,162,165,141,233,169,123,36,113,145,150,140,65,217,147,180,140],[106,85,112,151,6,14,190,64,80,181,212,108,134,124,184,25,2,18,13,150,252,164,9,205,9,231,72,184,119,233,204,19],[125,205,197,99,79,85,227,176,106,114,104,240,96,63,75,78,144,249,60,74,215,82,30,134,254,157,130,16,50,71,224,32],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[34,62,125,100,93,167,131,115,27,234,139,38,79,57,167,168,156,98,94,234,247,249,160,175,134,164,114,133,53,24,9,190],[27,72,62,58,5,12,97,195,199,222,249,46,26,106,70,236,168,50,33,81,140,138,120,53,50,18,165,71,216,44,255,16],[93,73,58,91,159,11,92,199,153,134,144,149,238,136,234,195,79,31,98,51,207,198,120,6,7,160,235,21,125,69,237,118],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[213,1,181,38,145,138,94,90,103,226,16,119,83,131,204,247,127,164,225,117,219,197,186,240,15,58,121,47,221,161,71,72],[197,17,74,211,108,22,195,197,66,237,242,129,154,64,99,181,80,143,130,22,10,30,74,8,142,128,64,193,1,87,81,126],[78,161,89,193,13,52,113,186,69,18,36,187,184,200,85,82,159,219,33,3,193,128,94,156,208,94,187,190,167,85,238,249],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[227,132,81,198,57,4,138,161,153,88,185,84,127,84,108,201,168,117,243,254,171,127,149,172,130,18,12,23,33,111,0,13],[227,132,81,198,57,4,138,161,153,88,185,84,127,84,108,201,168,117,243,254,171,127,149,172,130,18,12,23,33,111,0,13],[227,132,81,198,57,4,138,161,153,88,185,84,127,84,108,201,168,117,243,254,171,127,149,172,130,18,12,23,33,111,0,13],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[107,233,54,178,213,173,79,3,206,78,103,30,93,5,242,137,204,113,119,50,112,114,70,139,212,227,49,78,76,226,165,195],[60,104,53,215,233,224,188,78,134,214,15,97,219,243,252,51,66,136,80,173,221,63,179,71,224,34,125,228,164,62,217,113],[60,104,53,215,233,224,188,78,134,214,15,97,219,243,252,51,66,136,80,173,221,63,179,71,224,34,125,228,164,62,217,113],[213,178,84,81,253,73,115,177,35,81,55,42,0,156,114,208,195,209,95,72,114,145,240,69,236,158,143,183,187,65,191,125],[76,34,125,155,100,216,90,104,93,181,201,237,40,208,9,112,32,21,164,202,138,161,137,122,253,242,188,254,255,251,38,75],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[14,32,179,93,39,175,97,96,208,167,103,22,223,225,126,138,140,238,185,229,156,113,238,25,210,188,191,237,8,213,21,86],[253,82,244,210,171,253,138,2,103,180,212,202,69,13,151,121,104,147,155,184,216,244,223,2,219,11,137,228,86,87,242,40],[195,167,187,76,183,39,121,112,57,41,186,68,150,94,156,53,224,84,224,82,46,133,108,213,35,8,32,128,196,220,181,106],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[8,217,83,182,90,69,185,118,221,219,94,96,244,20,217,66,42,201,235,202,41,197,228,251,36,91,41,249,252,100,37,202],[8,217,83,182,90,69,185,118,221,219,94,96,244,20,217,66,42,201,235,202,41,197,228,251,36,91,41,249,252,100,37,202],[21,64,24,82,155,32,247,165,83,6,115,54,129,103,255,133,187,77,103,122,21,146,175,224,19,149,168,20,15,88,173,236],[186,13,131,38,188,110,203,69,164,197,134,211,11,247,170,131,63,207,209,233,41,226,5,179,131,164,45,103,121,126,85,25],[186,13,131,38,188,110,203,69,164,197,134,211,11,247,170,131,63,207,209,233,41,226,5,179,131,164,45,103,121,126,85,25],[195,86,130,239,229,246,203,220,84,18,115,196,211,245,18,61,5,187,197,97,201,186,177,229,26,178,156,185,210,78,133,135],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[50,126,39,134,205,138,78,180,21,117,183,187,19,145,70,11,15,233,11,7,160,111,69,217,192,145,12,157,49,137,62,52],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74]]},{"Kind":"OneStepProof","Assertion":{"beforeState":{"machineHash":[143,98,77,89,7,174,68,16,102,217,175,184,111,255,113,119,81,83,45,86,204,184,69,156,19,9,87,11,247,164,133,59],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":766873,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"afterState":{"machineHash":[222,173,190,239,39,103,33,82,24,144,250,144,214,103,82,143,107,231,41,239,49,231,187,94,93,252,109,243,17,5,190,91],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":837224,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]}},"PrevBisection":{"ChallengedSegment":{"Start":816749,"Length":175},"Cuts":[[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[14,241,15,203,251,243,159,96,39,251,233,115,146,249,69,149,3,61,102,203,209,242,157,31,229,148,129,218,217,51,91,245],[222,98,147,218,223,4,141,45,160,139,15,72,17,216,240,223,157,25,129,103,80,21,173,86,249,122,209,115,0,135,224,179],[222,98,147,218,223,4,141,45,160,139,15,72,17,216,240,223,157,25,129,103,80,21,173,86,249,122,209,115,0,135,224,179],[177,226,147,6,162,24,222,159,7,252,152,96,172,192,139,199,117,203,77,15,107,34,63,217,104,49,161,191,161,66,83,112],[177,226,147,6,162,24,222,159,7,252,152,96,172,192,139,199,117,203,77,15,107,34,63,217,104,49,161,191,161,66,83,112],[59,28,38,236,113,175,81,246,179,232,96,43,163,20,128,150,140,141,204,171,240,168,156,6,246,174,43,33,237,191,70,164],[213,143,4,36,185,93,22,157,104,150,231,188,1,149,194,236,94,71,84,114,128,188,66,26,74,245,128,28,37,56,191,236],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[179,215,201,219,222,94,30,210,242,4,26,240,140,231,124,39,17,229,52,235,141,181,51,78,228,6,209,95,68,233,37,11],[155,216,137,151,154,243,188,143,85,35,202,99,175,195,253,103,35,215,120,239,137,215,166,188,113,221,244,164,95,162,66,125],[106,154,225,200,97,197,218,172,246,36,21,73,224,149,102,211,37,29,49,139,187,119,32,12,158,189,132,226,150,121,76,87],[12,214,7,49,230,117,136,207,103,63,46,115,32,72,162,63,153,74,123,72,147,120,101,172,40,91,230,13,244,63,94,46],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[79,227,185,213,117,184,149,158,208,243,211,215,141,145,155,245,20,78,156,105,175,217,159,106,118,133,234,78,194,217,97,81],[87,5,219,65,209,172,35,201,132,163,222,38,5,55,94,57,94,142,138,108,182,65,221,255,40,28,212,215,15,255,32,135],[174,150,115,254,243,41,239,19,226,28,184,156,0,58,87,8,198,229,181,62,144,208,87,125,12,67,213,202,71,226,82,134],[69,3,124,65,187,241,70,246,193,80,75,247,50,134,22,193,223,236,194,21,179,245,97,82,250,87,237,247,114,244,73,145],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[135,179,160,3,234,60,69,136,181,137,24,181,95,36,88,95,217,139,109,214,241,116,105,119,124,65,211,245,142,194,43,131],[142,132,69,187,239,106,233,174,75,187,176,30,174,199,249,118,154,77,216,96,8,41,10,134,104,6,232,226,97,32,29,253],[162,219,188,129,229,177,39,75,64,158,148,142,170,252,124,201,76,66,154,122,139,115,42,17,115,63,28,95,72,111,92,129],[231,61,115,9,22,215,2,193,17,139,224,95,136,40,164,160,125,189,175,82,2,202,21,104,215,125,236,158,80,239,29,131],[231,61,115,9,22,215,2,193,17,139,224,95,136,40,164,160,125,189,175,82,2,202,21,104,215,125,236,158,80,239,29,131],[168,9,140,105,135,144,106,63,5,254,61,22,159,182,223,202,235,55,192,22,64,201,59,109,180,51,214,173,62,125,90,206],[10,104,81,47,23,15,21,180,216,156,11,115,187,120,151,78,170,152,187,255,185,239,50,192,146,143,8,240,236,153,190,4],[10,104,81,47,23,15,21,180,216,156,11,115,187,120,151,78,170,152,187,255,185,239,50,192,146,143,8,240,236,153,190,4],[147,184,80,141,8,181,85,147,187,212,72,230,115,35,51,53,42,133,247,120,144,247,168,116,103,40,142,100,152,233,232,176],[147,184,80,141,8,181,85,147,187,212,72,230,115,35,51,53,42,133,247,120,144,247,168,116,103,40,142,100,152,233,232,176],[50,153,96,225,195,53,95,5,205,57,101,2,240,236,40,177,162,165,141,233,169,123,36,113,145,150,140,65,217,147,180,140],[106,85,112,151,6,14,190,64,80,181,212,108,134,124,184,25,2,18,13,150,252,164,9,205,9,231,72,184,119,233,204,19],[125,205,197,99,79,85,227,176,106,114,104,240,96,63,75,78,144,249,60,74,215,82,30,134,254,157,130,16,50,71,224,32],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[34,62,125,100,93,167,131,115,27,234,139,38,79,57,167,168,156,98,94,234,247,249,160,175,134,164,114,133,53,24,9,190],[27,72,62,58,5,12,97,195,199,222,249,46,26,106,70,236,168,50,33,81,140,138,120,53,50,18,165,71,216,44,255,16],[93,73,58,91,159,11,92,199,153,134,144,149,238,136,234,195,79,31,98,51,207,198,120,6,7,160,235,21,125,69,237,118],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[213,1,181,38,145,138,94,90,103,226,16,119,83,131,204,247,127,164,225,117,219,197,186,240,15,58,121,47,221,161,71,72],[197,17,74,211,108,22,195,197,66,237,242,129,154,64,99,181,80,143,130,22,10,30,74,8,142,128,64,193,1,87,81,126],[78,161,89,193,13,52,113,186,69,18,36,187,184,200,85,82,159,219,33,3,193,128,94,156,208,94,187,190,167,85,238,249],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[227,132,81,198,57,4,138,161,153,88,185,84,127,84,108,201,168,117,243,254,171,127,149,172,130,18,12,23,33,111,0,13],[227,132,81,198,57,4,138,161,153,88,185,84,127,84,108,201,168,117,243,254,171,127,149,172,130,18,12,23,33,111,0,13],[227,132,81,198,57,4,138,161,153,88,185,84,127,84,108,201,168,117,243,254,171,127,149,172,130,18,12,23,33,111,0,13],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[107,233,54,178,213,173,79,3,206,78,103,30,93,5,242,137,204,113,119,50,112,114,70,139,212,227,49,78,76,226,165,195],[60,104,53,215,233,224,188,78,134,214,15,97,219,243,252,51,66,136,80,173,221,63,179,71,224,34,125,228,164,62,217,113],[60,104,53,215,233,224,188,78,134,214,15,97,219,243,252,51,66,136,80,173,221,63,179,71,224,34,125,228,164,62,217,113],[213,178,84,81,253,73,115,177,35,81,55,42,0,156,114,208,195,209,95,72,114,145,240,69,236,158,143,183,187,65,191,125],[76,34,125,155,100,216,90,104,93,181,201,237,40,208,9,112,32,21,164,202,138,161,137,122,253,242,188,254,255,251,38,75],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[14,32,179,93,39,175,97,96,208,167,103,22,223,225,126,138,140,238,185,229,156,113,238,25,210,188,191,237,8,213,21,86],[253,82,244,210,171,253,138,2,103,180,212,202,69,13,151,121,104,147,155,184,216,244,223,2,219,11,137,228,86,87,242,40],[195,167,187,76,183,39,121,112,57,41,186,68,150,94,156,53,224,84,224,82,46,133,108,213,35,8,32,128,196,220,181,106],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[8,217,83,182,90,69,185,118,221,219,94,96,244,20,217,66,42,201,235,202,41,197,228,251,36,91,41,249,252,100,37,202],[8,217,83,182,90,69,185,118,221,219,94,96,244,20,217,66,42,201,235,202,41,197,228,251,36,91,41,249,252,100,37,202],[21,64,24,82,155,32,247,165,83,6,115,54,129,103,255,133,187,77,103,122,21,146,175,224,19,149,168,20,15,88,173,236],[186,13,131,38,188,110,203,69,164,197,134,211,11,247,170,131,63,207,209,233,41,226,5,179,131,164,45,103,121,126,85,25],[186,13,131,38,188,110,203,69,164,197,134,211,11,247,170,131,63,207,209,233,41,226,5,179,131,164,45,103,121,126,85,25],[195,86,130,239,229,246,203,220,84,18,115,196,211,245,18,61,5,187,197,97,201,186,177,229,26,178,156,185,210,78,133,135],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[50,126,39,134,205,138,78,180,21,117,183,187,19,145,70,11,15,233,11,7,160,111,69,217,192,145,12,157,49,137,62,52],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74],[158,159,26,223,112,129,33,201,53,61,34,253,175,95,196,29,45,42,164,113,204,73,136,46,238,252,16,91,119,18,180,74]]},"SegmentToChallenge":143,"ChallengedSegment":{"Start":816892,"Length":1},"PreviousCut":{"machineHash":[154,243,196,26,172,228,162,15,70,255,41,175,103,225,109,122,190,181,217,208,77,41,154,53,57,151,57,212,67,22,211,122],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":816892,"sendCount":0,"logCount":1,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[220,9,133,16,46,65,66,31,213,113,151,134,218,108,161,87,213,48,0,194,33,145,235,24,250,16,37,255,78,177,73,106]},"ProofData":"0x72010000000000000000000000000000000000000000000000000000000000000000000093662bba7ab00e3c7fa8f91b369126b02fc54cbde9e33acc3c372171ca0c4457bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a00000000000000000000000000000000000000000000000000000000000000013054ce0625b17394ee20df9871897a9c0f94580e452827640ee662a85fcdf87c00000000000000000000000000000000000000000000000000000000000000340215849ddac22de02d1d3d337d1f8ed506fba4de25de2fc374a26c0a7924347b97000000000000000000000000000000000000000000000000000000000000080b02bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a0000000000000000000000000000000000000000000000000000000000000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff38903c6f76ccec3c469f951a7713aacd53d246162cd94d315a29d4d1037dd1bce62e2010b9be6b9f6b0ec4ad126c429961f3951773f7381b700000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000231f401d00000000000000000000000000000000000000000000000000000000000000c0ece83efd40ff2c9c69c406a49cbd4e7019fc5807db782ea78e3ee698923a412c000000000000000000000000000000000000000000000000000000000000000344edde536e3f4df60ef7ec43bc928f7438fa9804cb64ef42045ab4781bbc0bb300000000000000000000000000000000000000000000000000000000000000001567aa7175e04611d194275bb504cc64e920959dd01df9d86ab047367aa4c53400000000000000000000000035248943dcb4b8e5dbbb67d1f7d3ab1bc36ce9a8000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100ec7a56f92696a470fa3ced485f2121e5e76d10284cbc247d1fef07203bf7a37dc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47002","BufferProofData":"0x"},null,null,null,null,null,null,null,null,null,null,{"Kind":"Timeout"}],"AsserterError":null} \ No newline at end of file diff --git a/packages/arb-bridge-eth/test/challenges/TestChallengeToUnreachable.json b/packages/arb-bridge-eth/test/challenges/TestChallengeToUnreachable.json index 882a519815..75cb86ab1c 100755 --- a/packages/arb-bridge-eth/test/challenges/TestChallengeToUnreachable.json +++ b/packages/arb-bridge-eth/test/challenges/TestChallengeToUnreachable.json @@ -1 +1 @@ -{"ChallengedAssertion":{"beforeState":{"machineHash":[240,192,227,118,84,230,156,203,61,223,23,132,232,48,159,241,229,133,210,100,96,157,71,163,141,174,30,29,197,65,193,214],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":766873,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"afterState":{"machineHash":[186,166,207,173,26,158,255,82,238,77,82,93,135,94,59,41,57,223,67,92,158,68,231,247,8,33,172,61,160,6,57,103],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":0,"gasUsed":835637,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]}},"Messages":[{"Kind":11,"Sender":"0x9be6b9f6b0ec4ad126c429961f3951773f7381b7","InboxSeqNum":0,"GasPrice":589250589,"Data":"0xece83efd40ff2c9c69c406a49cbd4e7019fc5807db782ea78e3ee698923a412c000000000000000000000000000000000000000000000000000000000000000344edde536e3f4df60ef7ec43bc928f7438fa9804cb64ef42045ab4781bbc0bb300000000000000000000000000000000000000000000000000000000000000001567aa7175e04611d194275bb504cc64e920959dd01df9d86ab047367aa4c53400000000000000000000000035248943dcb4b8e5dbbb67d1f7d3ab1bc36ce9a8","ChainTime":{"BlockNum":4,"Timestamp":40}}],"Moves":[{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":766873,"Length":68764},"Cuts":[[96,0,95,40,141,16,235,22,130,222,209,47,56,193,177,5,33,39,241,90,21,244,104,117,98,142,41,140,30,72,195,149],[130,80,127,126,61,10,25,71,28,145,25,23,193,210,215,135,19,128,76,62,139,10,219,49,82,230,108,251,242,79,12,37]]},"StartState":{"machineHash":[240,192,227,118,84,230,156,203,61,223,23,132,232,48,159,241,229,133,210,100,96,157,71,163,141,174,30,29,197,65,193,214],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":766873,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"SegmentToChallenge":0,"InconsistentSegment":{"Start":766873,"Length":68764},"SubCuts":[[96,0,95,40,141,16,235,22,130,222,209,47,56,193,177,5,33,39,241,90,21,244,104,117,98,142,41,140,30,72,195,149],[65,103,65,37,116,27,60,47,143,173,137,115,54,114,39,148,133,18,25,68,107,141,29,223,131,131,64,149,236,231,66,226],[54,162,42,138,45,141,237,157,184,150,218,29,109,82,19,48,32,238,248,131,238,101,197,121,158,123,109,103,110,45,158,107],[159,232,79,68,64,109,189,237,151,253,89,51,49,3,144,24,172,32,240,19,63,155,75,47,230,130,62,250,27,72,210,69],[134,164,118,69,139,234,74,74,69,38,196,172,80,173,190,151,170,33,181,122,146,107,167,230,203,224,102,251,5,131,89,145],[24,87,91,185,61,235,143,236,211,65,103,81,159,206,33,171,88,37,183,153,212,69,152,135,17,225,70,223,46,4,102,124],[183,215,35,118,133,171,228,45,130,130,79,82,127,20,64,207,157,255,84,126,149,181,109,250,92,243,23,21,119,59,125,99],[226,164,102,58,162,71,170,217,153,200,188,153,233,121,135,53,70,137,10,195,223,72,206,166,90,230,125,177,189,51,249,248],[161,239,112,21,227,243,85,199,99,90,144,71,153,122,188,127,255,69,181,239,160,180,58,178,23,145,97,16,46,124,106,163],[225,191,33,160,30,174,165,154,39,169,72,120,7,150,57,2,28,147,239,192,0,128,228,32,131,241,176,216,85,245,15,131],[59,225,75,253,151,224,190,17,209,176,232,212,111,121,128,122,8,117,108,50,240,72,210,209,52,252,110,33,184,159,145,130],[103,117,194,243,84,254,93,159,118,42,163,81,170,6,200,104,132,241,38,71,2,180,121,47,18,139,43,151,57,199,29,246],[132,19,140,246,129,51,236,219,35,164,40,238,34,78,235,23,240,241,72,190,101,151,87,38,149,202,140,222,170,64,169,153],[38,123,232,169,73,118,153,185,117,193,53,254,71,66,231,196,113,28,84,166,136,165,104,85,200,164,79,23,64,150,15,112],[230,71,178,88,135,241,93,238,33,120,175,120,221,125,42,27,178,46,240,81,237,113,134,97,218,142,43,106,181,44,8,1],[60,110,175,124,207,173,60,168,25,7,146,183,206,129,158,168,30,101,30,206,170,52,141,205,176,97,211,216,185,156,95,237],[252,37,234,31,65,30,65,146,226,21,103,128,102,163,185,130,192,64,26,83,216,41,190,83,184,58,123,164,83,151,243,51],[115,3,232,225,41,160,248,174,15,91,182,148,104,69,46,28,27,133,15,4,95,220,75,110,173,136,72,2,165,54,46,64],[182,105,62,36,28,15,199,206,254,28,205,122,24,14,227,153,117,92,19,23,30,225,62,217,151,4,124,241,199,225,37,1],[165,63,28,78,233,194,12,160,34,122,19,47,130,175,194,172,110,104,152,223,106,149,122,252,4,95,143,92,129,131,49,56],[54,168,159,106,44,121,88,61,184,197,203,198,40,22,59,90,95,10,6,226,139,47,119,176,118,74,41,64,57,41,34,44],[4,241,150,53,246,207,131,75,101,1,234,67,227,107,102,167,1,81,186,146,58,238,187,187,92,25,222,187,28,163,168,189],[227,140,168,9,254,93,155,94,88,181,202,208,177,213,0,113,154,133,100,1,250,214,111,59,217,13,40,147,71,151,10,139],[108,4,42,15,40,124,21,137,119,16,116,11,16,59,245,72,94,127,14,255,199,140,103,60,79,192,0,35,93,137,132,42],[159,188,66,165,94,195,45,206,98,162,142,60,73,205,5,75,34,106,196,10,242,24,209,189,25,238,22,250,215,110,131,195],[66,218,16,62,118,3,109,130,130,51,104,114,88,248,228,232,154,7,90,52,101,143,60,52,246,190,11,49,107,188,186,214],[85,197,56,239,59,140,38,241,168,102,19,45,194,136,170,208,124,242,199,78,193,146,61,157,245,12,239,190,176,58,13,114],[46,154,163,180,201,15,119,74,134,65,17,87,71,222,86,243,93,126,153,8,97,252,204,18,159,157,133,168,81,155,171,75],[37,105,235,55,67,172,188,169,107,4,173,11,20,32,117,33,104,142,99,52,15,19,132,210,128,241,43,248,87,252,27,168],[0,138,210,6,205,222,142,53,188,109,211,50,137,74,252,170,224,212,127,143,97,40,36,52,248,219,234,20,243,219,189,172],[37,96,221,109,31,135,105,214,242,234,167,255,67,232,59,126,4,170,114,97,245,203,98,246,200,142,194,29,229,78,35,142],[181,233,233,190,33,172,148,227,140,19,33,236,38,247,212,43,187,5,239,184,163,35,208,37,81,160,156,129,67,174,24,230],[180,153,248,48,248,189,70,68,103,30,133,28,79,8,174,72,223,239,48,21,159,62,98,219,165,136,139,62,59,83,55,211],[219,159,52,58,12,72,41,237,209,17,111,210,183,142,250,183,139,77,22,245,4,243,26,238,95,185,103,219,226,13,112,229],[122,208,82,197,179,194,108,63,85,71,10,11,134,46,148,48,219,148,156,111,5,177,225,166,22,168,25,167,47,231,13,136],[142,185,177,43,66,114,188,176,208,116,26,74,171,154,225,76,190,22,116,140,1,189,246,198,72,247,138,165,107,136,32,25],[39,158,18,189,75,214,17,132,118,52,200,54,255,111,109,8,174,186,55,154,87,163,222,57,141,245,32,66,138,83,89,135],[212,217,217,26,7,193,107,157,182,191,72,232,213,203,161,95,120,191,28,116,36,222,89,220,104,128,45,115,112,44,196,223],[101,28,246,9,5,137,176,78,129,184,30,111,97,252,84,215,59,131,201,137,150,184,49,192,10,87,150,15,131,245,82,20],[35,218,14,240,146,155,244,85,231,124,9,141,225,136,195,208,191,27,67,208,29,239,101,70,168,87,81,99,115,133,189,216],[33,126,130,252,81,135,199,195,58,68,109,234,253,18,167,147,232,116,245,77,153,174,2,5,252,79,0,157,148,210,23,116],[157,24,222,166,41,90,104,179,3,185,112,93,38,52,153,206,19,58,108,169,2,246,121,113,57,64,129,171,162,133,73,34],[24,16,216,12,64,197,191,132,240,125,208,186,147,43,1,84,109,185,223,101,129,19,231,5,159,11,239,254,211,237,233,106],[45,77,204,73,210,209,21,88,169,99,31,141,189,150,156,234,230,3,206,37,76,111,85,20,125,111,128,227,210,1,222,63],[39,64,35,158,37,192,62,227,36,4,164,219,112,164,155,219,3,212,134,51,5,165,153,20,93,69,236,146,158,38,224,103],[107,216,206,26,188,218,18,83,2,189,210,160,2,130,231,75,42,95,57,75,39,131,96,168,24,112,79,249,38,224,197,23],[24,7,106,85,88,9,65,202,10,159,109,15,59,143,12,244,126,217,1,89,202,157,40,150,1,222,169,252,73,239,50,112],[13,116,15,244,112,176,113,74,230,1,95,101,78,5,238,148,85,11,81,129,157,86,90,214,249,132,44,111,209,76,203,133],[221,157,249,95,234,223,76,62,147,159,184,197,57,127,161,176,182,89,42,168,83,47,81,109,173,124,194,244,57,37,213,196],[86,13,118,164,194,57,240,125,177,81,101,129,40,52,140,106,43,207,233,172,111,112,67,180,127,43,64,184,14,218,2,211],[73,235,156,38,3,91,182,67,82,147,114,238,113,36,122,201,13,244,238,60,224,67,80,79,212,182,57,128,185,240,38,166],[46,3,115,64,13,182,132,187,141,49,110,37,249,191,153,152,70,34,225,132,83,54,57,21,13,211,227,157,115,194,62,3],[56,99,110,173,250,158,115,63,211,215,225,20,102,131,69,115,111,37,40,116,178,136,107,239,187,56,213,107,208,40,207,211],[78,177,249,112,205,196,28,209,171,194,115,108,142,101,21,187,2,99,49,28,213,140,182,101,103,222,188,68,79,191,217,175],[134,194,5,248,248,5,77,202,173,241,191,27,153,48,22,12,127,88,48,205,160,198,202,58,62,43,73,93,64,130,254,224],[117,177,152,212,177,148,183,161,203,65,174,19,37,206,233,202,39,236,82,188,232,238,212,173,244,208,130,148,32,32,122,224],[75,68,46,13,206,25,139,5,73,98,13,89,122,207,82,85,123,124,65,64,19,140,104,238,43,241,187,188,79,129,244,141],[241,30,225,22,101,184,73,121,121,112,112,31,255,81,140,16,28,154,148,29,148,146,163,44,12,151,177,4,110,27,32,6],[22,97,157,63,29,203,163,41,26,33,127,147,45,135,187,102,37,221,191,114,244,222,156,42,154,28,47,218,228,52,202,59],[49,212,66,41,219,83,26,174,15,182,191,172,254,40,194,213,9,48,14,6,234,33,148,95,201,234,200,169,56,24,74,48],[235,101,114,188,9,168,199,18,147,75,21,132,202,87,166,230,213,63,110,206,66,172,62,156,159,105,8,18,194,119,171,64],[102,2,117,160,117,49,202,71,214,15,47,14,150,152,85,4,11,62,163,186,129,72,60,62,145,67,110,130,21,177,143,3],[11,31,167,175,127,50,94,62,133,152,149,223,193,39,77,210,235,46,24,200,17,200,91,220,106,217,45,112,45,98,248,134],[117,33,250,213,188,98,86,11,134,244,252,12,87,250,42,203,1,9,241,240,249,222,5,16,110,88,226,14,35,179,163,55],[117,161,127,199,14,41,44,212,175,99,87,37,113,114,199,164,55,111,28,51,249,150,43,137,248,136,218,27,180,133,77,244],[121,83,41,35,8,144,157,151,58,91,223,170,243,60,28,209,207,85,22,147,236,3,227,163,138,73,17,245,219,166,61,121],[182,192,82,175,0,237,58,21,106,41,121,115,11,133,152,198,96,206,107,19,32,216,32,143,194,41,178,115,18,69,104,117],[130,96,62,17,11,203,105,134,60,208,216,206,11,51,141,209,109,38,122,49,230,3,132,58,202,188,247,254,241,172,69,114],[141,108,21,96,31,87,244,197,218,207,174,1,214,40,61,29,152,104,108,0,180,149,198,25,234,195,179,157,110,140,74,17],[186,153,141,113,1,79,200,24,103,160,99,26,174,101,201,216,162,119,1,158,12,92,226,26,82,122,20,255,159,88,208,115],[104,85,21,134,21,32,226,250,193,221,237,100,146,81,178,64,169,117,231,131,241,178,192,123,5,8,247,149,210,206,46,187],[9,144,210,143,108,196,228,206,243,164,5,55,239,37,175,246,107,34,3,25,245,73,61,42,72,86,75,110,80,188,214,85],[193,177,210,118,54,155,166,173,184,3,201,242,196,243,51,246,255,107,248,197,152,195,213,158,136,149,92,252,103,245,151,31],[125,187,89,240,89,48,111,178,15,45,221,6,143,5,218,46,44,25,119,191,110,72,253,192,1,24,236,29,181,7,102,93],[216,159,50,145,246,137,189,40,154,69,57,22,89,246,222,29,48,3,57,29,170,156,36,126,183,158,123,149,172,171,38,123],[87,242,148,227,107,65,36,6,210,38,62,237,230,109,41,226,100,200,175,140,98,22,213,23,132,125,116,16,78,133,180,236],[205,111,4,182,108,27,224,61,36,23,186,113,189,98,145,213,91,94,237,94,126,163,184,143,232,251,120,238,226,190,213,166],[143,82,249,9,49,240,85,121,141,197,93,76,25,179,146,142,53,31,16,47,246,35,38,40,82,151,23,168,121,195,241,154],[166,18,250,170,78,255,203,85,178,48,25,76,43,207,159,210,191,61,244,209,137,13,199,12,162,199,196,172,78,222,0,71],[222,120,118,179,24,59,32,226,91,205,130,15,215,174,188,231,101,132,72,150,220,111,127,64,138,109,72,41,10,181,230,132],[32,67,46,1,82,111,123,220,124,181,244,191,142,21,53,193,154,40,157,105,240,32,112,104,115,62,248,137,111,118,136,115],[247,174,190,137,148,140,154,102,108,122,38,12,21,138,153,178,36,229,214,198,243,230,39,234,175,95,157,53,236,250,81,22],[183,210,57,181,250,124,23,203,97,155,227,11,128,125,149,186,102,77,151,185,8,57,37,134,41,182,8,106,136,209,241,52],[83,51,38,159,38,233,111,74,212,150,147,244,152,79,235,85,109,245,219,156,247,3,146,125,38,197,8,137,98,253,42,80],[12,135,100,194,19,230,166,244,82,69,73,149,180,24,203,206,154,120,16,116,198,180,243,172,231,235,80,57,7,68,187,224],[92,102,240,250,243,194,137,104,20,229,143,123,9,163,201,83,191,152,141,130,234,178,84,233,110,40,119,172,170,214,2,217],[22,188,43,165,230,91,62,123,72,100,210,83,94,121,184,215,211,196,186,72,13,153,52,208,78,137,133,118,79,178,224,57],[173,59,232,5,138,255,11,72,76,67,82,94,92,15,244,222,111,6,227,135,77,210,218,36,65,128,218,148,224,236,19,199],[101,83,164,70,180,107,106,185,204,24,81,144,202,208,169,120,26,120,229,162,113,101,142,146,42,17,220,147,81,217,228,170],[137,239,222,90,198,68,215,47,48,27,251,57,36,36,93,0,236,254,240,217,119,59,249,150,224,58,130,20,137,207,38,121],[117,40,101,177,114,83,193,232,193,30,124,123,182,239,140,47,189,139,107,28,17,138,213,221,119,169,234,212,29,217,157,100],[4,245,85,83,183,194,189,192,193,161,239,83,154,146,176,87,8,144,230,143,57,142,202,156,5,127,43,165,46,69,164,32],[109,43,86,172,228,4,206,236,102,51,56,215,142,108,22,62,87,229,165,39,167,61,207,96,89,100,192,165,115,68,184,166],[197,245,5,214,36,42,227,194,68,161,102,60,176,231,217,220,5,140,121,66,198,231,4,215,156,9,123,124,43,240,173,55],[245,96,184,173,80,78,197,164,190,1,152,193,243,111,27,248,9,116,215,78,229,226,53,57,30,145,120,253,118,207,67,54],[14,111,99,141,135,174,211,80,24,69,224,93,248,41,34,67,141,96,201,94,98,98,209,219,49,36,44,121,210,239,155,248],[86,18,245,82,222,98,145,254,210,3,154,91,132,188,247,96,95,161,88,229,82,32,209,223,13,41,242,120,243,221,19,68],[108,220,209,234,152,32,99,49,190,242,33,61,195,228,32,73,122,218,50,6,196,73,41,169,168,242,124,2,186,246,200,116],[94,166,106,15,93,70,93,35,188,250,71,65,226,145,219,181,231,173,87,102,215,151,87,36,12,168,106,59,16,184,43,91],[170,59,59,72,123,92,210,122,203,239,131,181,135,232,103,167,128,124,66,145,145,49,184,236,145,170,218,176,129,49,254,67],[0,108,99,163,48,93,218,30,188,161,214,110,140,67,32,81,63,207,9,249,253,223,193,195,33,232,137,53,196,248,73,29],[231,237,78,209,55,208,45,217,44,68,105,59,245,253,20,113,124,10,90,112,1,118,129,229,94,4,48,252,65,33,65,240],[72,101,233,28,27,29,9,236,196,126,187,4,223,62,225,226,236,64,70,232,123,123,154,71,200,27,167,228,206,52,177,79],[16,2,14,152,231,231,219,28,22,128,77,215,181,47,205,133,164,18,66,133,55,53,182,198,150,241,247,207,244,77,142,155],[153,49,88,50,47,55,171,185,130,11,10,145,160,167,44,132,114,163,46,149,60,166,192,164,37,148,1,0,81,51,176,169],[182,158,12,154,47,191,143,34,253,224,173,207,102,88,34,136,23,69,76,115,2,217,42,20,80,217,207,69,100,2,248,85],[13,96,65,153,53,202,12,242,218,62,239,86,138,196,240,220,233,210,165,229,81,185,238,63,182,19,55,35,20,213,67,219],[216,229,217,251,240,19,226,111,209,160,32,17,64,25,217,241,187,234,132,148,77,190,209,249,52,237,255,95,138,140,83,41],[253,166,35,185,121,166,52,228,79,65,235,124,69,13,3,130,126,55,31,175,70,136,25,37,196,103,43,144,146,226,176,174],[111,144,165,251,212,159,213,45,38,174,96,59,172,255,34,146,249,186,152,205,255,9,86,231,120,214,185,101,182,42,46,108],[101,13,79,206,232,70,133,253,115,49,188,114,41,110,43,61,232,238,152,225,195,214,174,150,7,137,162,33,18,97,238,72],[152,62,53,17,207,21,222,125,137,49,253,90,56,202,5,7,26,52,73,211,46,103,138,224,178,123,224,153,155,116,35,2],[155,36,105,217,60,130,249,13,30,197,91,210,26,171,19,6,6,85,48,36,159,154,35,73,202,33,192,121,58,88,83,34],[170,129,154,56,109,253,176,103,40,15,101,199,224,132,158,65,242,20,126,128,194,163,173,185,29,90,79,162,8,117,27,50],[104,28,152,193,53,84,158,137,141,209,15,145,27,21,127,220,115,127,132,161,216,31,180,95,215,245,186,49,146,9,30,28],[10,78,89,21,117,165,26,4,110,202,226,190,140,251,126,107,149,68,90,44,82,96,4,32,15,149,221,42,247,200,218,12],[105,104,7,223,230,196,63,52,197,216,244,23,215,40,75,6,99,80,224,80,75,70,175,86,100,123,76,140,214,208,251,74],[141,227,14,103,241,176,138,22,144,103,177,182,165,79,228,168,136,221,186,104,101,44,81,96,209,196,212,30,62,170,193,101],[132,68,32,218,187,193,235,158,51,167,157,157,96,79,58,95,37,159,239,40,176,32,148,39,65,7,42,88,200,208,101,15],[88,183,249,149,246,106,126,200,170,241,246,92,131,236,144,140,10,148,233,212,10,60,80,139,142,171,51,4,94,65,154,188],[232,44,163,1,249,67,11,167,236,89,180,124,171,13,93,236,120,84,200,94,244,215,120,154,165,12,198,248,100,15,80,24],[76,184,198,182,26,146,159,175,21,53,199,173,150,104,40,221,126,149,255,153,188,254,5,225,233,18,25,84,153,149,216,54],[110,96,50,229,211,110,249,246,71,161,6,9,17,6,146,17,248,136,102,234,127,32,252,181,75,158,12,111,68,213,243,94],[220,72,109,147,222,111,158,122,139,104,123,127,49,127,175,222,169,34,179,141,137,168,149,225,133,166,42,208,77,125,251,120],[159,205,159,118,237,217,100,68,94,221,92,226,118,175,22,53,26,212,221,81,47,65,105,252,88,207,142,62,12,133,220,87],[45,220,114,65,195,192,131,218,157,87,126,86,170,211,82,149,196,219,62,100,46,237,182,184,181,181,193,241,3,125,40,196],[47,186,58,231,212,212,227,60,165,47,49,182,154,122,145,127,32,226,188,209,253,1,212,73,236,159,188,201,31,214,6,62],[239,229,249,151,250,237,231,222,253,27,157,221,135,92,247,138,60,92,205,242,156,253,177,156,236,12,118,250,72,70,164,92],[149,99,244,89,169,167,228,217,105,178,91,217,175,141,18,67,79,8,16,201,132,192,247,226,202,250,186,92,30,57,24,223],[236,39,129,146,241,57,146,250,173,146,187,228,232,203,42,147,29,205,157,64,17,75,88,10,136,158,63,40,71,69,129,63],[222,242,149,87,126,74,40,31,63,28,49,95,112,233,205,248,197,49,116,253,166,191,173,109,185,65,234,44,253,42,144,244],[119,37,210,68,202,28,171,7,50,118,15,242,255,53,237,52,8,238,3,205,137,118,187,7,143,148,2,65,205,118,117,10],[225,147,115,253,189,215,245,51,133,123,232,201,222,155,29,80,231,83,21,161,96,129,115,129,160,137,33,69,218,76,129,127],[77,200,51,152,123,122,176,174,64,248,30,148,200,76,78,188,163,84,123,38,102,129,126,226,24,180,96,231,79,44,235,58],[229,223,29,35,139,180,186,243,191,78,70,246,145,239,250,207,160,139,91,151,95,112,219,254,26,113,82,209,49,170,94,167],[112,236,179,15,215,200,229,253,253,48,237,100,111,253,24,165,205,205,141,122,205,87,78,124,83,125,81,210,122,83,86,223],[40,90,131,121,93,152,49,221,222,115,124,44,98,229,107,251,16,42,7,7,3,67,9,91,132,104,96,101,22,9,202,57],[123,53,183,153,75,253,63,87,182,62,53,108,190,117,64,209,58,223,189,196,109,162,175,142,23,96,32,205,138,238,161,1],[114,122,75,238,145,70,233,71,217,54,118,210,67,180,135,187,103,185,173,181,16,164,44,187,109,32,146,251,130,175,8,221],[5,116,6,96,156,66,10,15,152,187,73,22,8,76,31,251,145,29,153,40,137,30,59,74,249,17,53,225,250,157,221,181],[217,173,155,0,122,54,177,218,192,163,169,183,180,51,172,223,33,210,92,127,144,212,153,11,224,91,111,217,18,211,15,110],[15,244,183,139,51,200,101,150,127,248,154,154,1,237,78,12,207,200,104,114,111,72,187,118,172,234,97,134,137,83,162,227],[158,30,44,208,182,96,207,166,209,27,164,224,247,100,225,14,94,206,194,54,205,138,44,177,203,92,139,173,183,188,120,151],[74,195,100,192,0,149,56,240,234,73,234,78,230,108,36,183,183,8,146,66,70,129,220,192,59,126,155,242,109,145,29,169],[22,183,88,83,199,24,6,172,92,255,213,237,137,127,124,99,160,52,82,28,104,220,87,65,57,252,203,213,117,102,96,203],[252,45,113,113,31,154,131,188,79,77,159,132,183,91,172,226,84,195,104,224,169,70,69,80,180,194,97,34,235,14,183,12],[121,177,84,182,57,235,79,228,117,174,95,99,1,187,194,31,25,27,20,86,18,106,85,57,31,153,12,239,171,39,203,157],[238,183,223,146,12,25,59,127,224,11,86,36,60,182,1,204,255,172,150,12,89,132,139,110,187,88,140,68,90,217,155,28],[92,242,19,24,34,127,97,217,20,3,32,106,113,43,203,222,111,166,242,59,253,195,231,18,255,209,7,19,163,59,86,183],[108,76,226,230,120,203,223,85,120,210,205,210,197,76,14,10,127,62,81,242,151,253,208,145,137,62,236,164,68,51,196,92],[26,30,167,247,26,136,17,139,183,80,4,121,58,209,18,135,133,155,163,177,218,179,247,13,71,216,195,138,213,36,25,218],[11,105,196,72,23,213,65,115,190,179,161,76,30,13,209,4,123,8,207,2,119,81,230,131,138,229,195,122,174,37,224,241],[189,138,114,67,187,220,174,150,226,213,126,81,151,21,89,34,168,183,231,75,138,234,57,164,206,214,4,49,204,211,223,110],[220,30,62,192,219,69,250,248,44,127,255,153,149,19,246,168,167,59,45,111,243,28,235,1,233,12,172,40,90,232,6,242],[179,81,118,204,194,254,155,0,252,128,104,188,169,88,182,244,39,39,121,163,102,45,85,104,18,255,132,255,101,123,183,73],[95,199,209,41,172,146,225,140,199,194,222,159,168,59,114,185,51,47,177,13,189,187,69,218,43,0,5,43,233,160,40,22],[129,52,45,193,33,120,242,24,138,228,171,152,26,38,218,35,69,55,224,215,41,100,202,244,188,41,234,54,180,83,21,217],[103,52,97,217,110,197,100,84,210,60,16,200,63,169,105,155,168,14,128,213,50,28,207,40,199,204,37,174,127,182,91,130],[63,134,138,34,57,54,48,113,135,183,30,98,164,123,82,85,175,177,197,75,199,11,41,149,196,246,220,212,28,193,140,103],[126,208,29,143,119,75,147,55,82,3,11,157,65,85,222,247,118,122,137,56,133,4,165,42,7,125,253,150,125,105,245,29],[73,65,58,127,203,46,221,255,244,152,60,186,144,252,202,213,72,4,237,127,214,3,204,244,160,92,2,181,137,72,47,140],[248,104,148,43,166,93,240,24,171,211,154,245,82,1,220,35,52,177,172,164,227,139,81,140,113,177,72,98,233,239,124,76],[238,139,73,250,152,73,207,135,187,201,30,8,206,85,103,89,209,227,53,220,57,189,63,3,102,140,117,96,135,255,67,41],[218,20,209,153,16,166,235,181,41,235,101,243,21,141,40,70,191,139,13,143,217,52,118,209,90,185,117,127,4,68,38,79],[42,39,214,74,20,0,154,4,223,223,63,235,30,156,195,223,83,74,91,247,200,28,101,68,147,196,44,4,146,61,99,108],[184,230,43,184,207,170,190,178,8,1,213,139,247,42,49,66,231,102,110,178,240,175,90,174,230,168,76,116,106,234,132,85],[251,230,194,196,179,119,125,240,31,227,185,166,134,185,111,105,111,71,106,70,179,250,110,24,191,4,114,188,174,9,1,247],[173,249,157,164,2,4,86,244,186,33,10,166,174,84,1,128,21,140,107,177,224,3,3,213,37,36,122,47,32,227,62,253],[55,181,47,209,248,136,163,27,103,149,37,150,162,209,126,114,162,217,17,137,203,133,46,163,219,80,123,11,120,141,125,66],[65,42,172,46,15,244,221,182,87,198,56,88,4,120,51,48,5,49,131,68,206,122,21,130,181,128,214,249,46,118,158,14],[200,151,185,51,136,102,221,213,158,40,100,118,147,83,208,142,118,235,232,182,60,0,33,1,135,230,80,29,222,169,209,185],[156,77,179,37,26,23,38,106,20,21,82,38,177,62,36,18,145,150,40,251,178,245,51,36,238,123,36,255,163,10,74,79],[183,101,164,11,243,214,210,232,212,138,238,233,37,106,32,58,94,104,120,124,51,214,235,7,111,195,227,91,77,107,17,150],[246,235,133,252,219,111,129,27,241,177,178,33,162,254,76,91,145,158,155,163,47,226,30,251,90,155,82,49,83,218,238,4],[169,200,140,192,35,42,228,205,243,234,176,4,107,232,16,136,37,29,54,32,113,217,137,165,157,187,186,235,117,96,150,181],[169,94,157,86,251,45,132,82,0,115,192,138,120,139,216,238,12,218,155,135,126,47,190,127,26,12,1,107,152,101,253,115],[154,137,94,150,79,123,187,28,199,186,14,10,68,145,151,225,244,211,142,90,198,190,52,57,246,119,13,6,50,195,98,58],[84,241,33,133,16,253,45,45,53,245,219,163,36,12,65,65,160,212,190,73,38,94,1,251,82,185,122,44,134,161,255,232],[223,89,124,94,121,179,13,125,225,198,244,182,29,202,221,31,74,233,2,181,64,202,176,137,168,37,100,152,56,128,38,237],[157,7,143,87,204,123,8,85,119,29,208,62,237,121,91,218,46,74,108,17,40,4,220,204,142,214,181,10,205,33,25,167],[171,195,60,254,152,183,84,84,64,133,5,3,73,181,32,170,204,15,221,99,107,6,81,20,63,30,230,123,30,70,106,123],[141,82,30,77,247,42,217,99,60,29,141,80,240,84,82,1,106,165,152,35,54,255,198,10,25,193,130,119,19,240,87,248],[87,62,185,221,165,213,235,170,29,6,165,228,58,41,178,128,54,75,95,189,96,103,166,36,177,230,210,54,190,62,226,250],[24,49,134,192,185,127,250,148,93,184,234,162,47,10,6,36,13,202,18,229,74,220,32,255,231,175,115,43,39,71,73,184],[175,52,224,254,202,175,146,148,181,28,112,253,48,224,201,19,24,190,198,176,253,27,7,68,38,131,70,248,6,52,222,164],[218,42,56,145,251,90,34,171,116,27,247,84,169,222,205,225,160,191,81,133,12,86,12,80,34,242,164,190,46,177,179,10],[55,83,32,177,69,238,188,22,245,218,14,154,97,62,29,85,3,230,127,66,173,242,108,44,41,184,236,140,224,201,37,144],[163,6,245,248,19,68,208,159,69,59,4,243,123,50,210,81,8,233,1,85,185,34,97,169,197,232,228,204,148,202,210,66],[224,49,179,44,208,252,246,107,108,188,107,175,24,92,207,72,40,86,98,243,37,103,103,208,126,163,83,7,10,250,81,168],[116,211,32,122,136,196,92,233,189,142,184,170,10,166,173,193,19,219,107,214,238,186,66,245,63,156,90,232,127,189,48,106],[223,95,3,81,121,160,217,116,118,106,19,155,247,151,211,234,164,102,63,12,112,30,196,33,157,2,232,51,239,240,50,155],[123,233,128,144,136,190,183,252,25,219,195,179,130,140,111,204,136,252,61,53,100,8,36,188,197,165,34,181,95,118,125,154],[66,18,95,21,224,112,118,63,241,152,165,105,234,182,243,84,253,187,225,98,15,60,49,176,173,59,132,163,77,18,192,190],[43,187,23,207,86,203,224,193,44,28,148,255,211,68,95,199,224,171,197,68,104,173,154,185,133,32,229,122,213,126,149,189],[9,111,124,74,219,105,41,142,4,155,106,253,89,80,245,187,53,242,246,100,226,7,243,3,178,69,193,66,61,28,225,248],[217,226,56,35,180,239,185,165,173,170,238,37,46,195,41,14,153,146,160,193,78,106,129,53,198,111,129,111,216,224,104,132],[173,235,124,244,45,62,57,198,126,255,58,89,208,156,168,136,18,242,213,91,154,225,23,134,211,65,97,29,59,133,113,109],[99,71,227,238,238,65,62,169,239,35,45,253,8,26,105,83,160,36,84,12,9,138,92,100,44,104,203,14,155,190,99,6],[137,239,188,64,253,125,193,198,243,13,248,32,175,248,175,93,99,219,148,15,220,250,240,208,88,35,176,89,242,180,148,134],[108,209,162,192,178,85,190,214,180,158,189,146,50,91,96,116,71,223,24,106,98,157,71,165,112,143,114,90,103,144,193,181],[154,41,218,138,248,159,63,94,73,174,10,249,52,152,253,26,251,183,12,167,200,232,219,120,214,241,187,0,37,137,187,72],[222,63,202,152,113,203,168,223,247,125,193,132,186,218,186,9,10,182,27,105,46,177,217,249,176,163,114,212,250,112,96,87],[128,124,27,16,154,84,234,182,68,130,24,209,138,186,197,8,173,55,128,242,100,105,238,17,106,127,100,74,195,53,255,105],[241,27,142,72,246,61,184,174,55,14,250,255,61,81,190,239,70,245,93,38,137,104,167,156,224,84,36,93,100,188,68,164],[206,85,28,164,77,67,14,100,194,6,70,15,34,16,96,249,185,45,178,196,146,211,23,124,211,67,20,58,237,89,98,27],[116,243,106,157,203,135,214,223,88,142,126,29,147,198,72,71,152,56,59,167,243,62,84,118,200,255,68,114,9,196,184,108],[223,69,3,171,119,78,69,135,69,9,148,171,151,16,87,228,212,83,199,78,207,13,183,67,58,168,249,37,219,52,134,208],[212,49,127,101,168,149,71,45,233,152,205,12,9,28,231,69,196,121,180,182,5,80,183,241,16,7,15,125,62,148,77,173],[150,149,253,96,188,216,243,218,3,38,220,106,44,106,99,168,56,127,7,49,63,161,143,146,126,110,195,215,196,82,20,176],[250,234,183,221,199,132,91,155,216,82,194,199,198,225,200,234,198,182,25,239,189,140,213,96,29,45,86,154,206,82,247,114],[188,140,127,131,215,215,178,123,147,130,11,246,112,86,108,28,140,176,205,204,242,116,181,150,65,16,3,135,125,146,143,64],[125,106,32,15,8,53,116,83,49,156,91,166,251,210,25,72,128,253,191,252,188,15,176,87,28,57,97,50,202,6,169,51],[14,120,220,52,103,148,150,28,225,218,191,118,228,174,25,150,22,199,208,78,130,41,167,220,151,64,228,128,217,46,238,43],[46,39,74,44,144,91,150,199,89,253,238,145,228,164,226,232,121,128,15,87,49,19,136,167,42,76,159,22,127,74,65,158],[190,10,202,157,148,30,116,157,19,151,66,147,138,212,199,204,58,177,184,103,166,140,193,102,152,161,70,74,165,3,206,96],[251,202,238,71,94,224,233,181,66,129,70,117,143,35,66,225,111,154,75,131,205,12,173,64,85,154,93,184,19,245,113,0],[45,202,125,133,53,123,12,157,171,6,38,145,199,69,22,59,144,226,247,162,143,174,226,58,99,191,62,51,151,32,191,1],[216,178,133,160,40,127,89,247,62,188,66,118,43,125,238,82,168,71,130,142,234,35,92,139,181,24,34,221,142,44,123,129],[42,20,73,59,138,119,240,150,107,128,139,176,58,24,19,68,114,191,134,31,92,10,121,85,253,182,225,253,98,135,4,162],[246,40,80,189,112,72,207,216,252,43,133,44,198,168,118,254,142,159,194,172,40,215,23,70,192,216,84,96,112,211,30,177],[160,143,145,42,255,212,206,148,27,198,174,3,220,12,216,45,138,216,245,43,242,67,59,119,92,88,12,15,205,104,156,238],[237,173,236,163,43,250,4,109,133,247,100,217,113,163,146,30,178,248,243,162,213,123,200,227,108,176,137,100,214,187,51,23],[238,227,183,250,53,225,172,216,109,192,153,12,182,29,216,248,141,117,137,234,69,27,148,243,7,77,102,106,57,53,121,138],[74,46,197,90,243,6,57,30,192,224,39,58,104,203,253,254,217,163,192,92,180,46,235,2,46,19,115,159,49,91,253,6],[12,41,90,22,1,214,13,251,192,203,199,191,200,135,98,17,164,111,128,234,253,168,148,110,22,34,23,252,119,215,84,223],[105,136,46,11,124,201,165,27,96,30,203,26,236,127,230,19,205,35,83,97,12,112,79,140,0,42,86,200,0,223,126,15],[63,155,157,119,15,174,164,58,252,90,136,23,87,162,191,254,25,100,2,210,139,196,229,53,45,40,255,25,87,19,37,90],[144,99,85,207,3,12,147,214,170,106,234,60,14,94,14,159,216,48,242,126,100,253,15,97,60,15,12,253,192,8,173,43],[175,177,217,35,67,31,215,145,2,153,165,120,222,17,33,168,164,69,163,191,103,179,21,53,91,50,165,222,19,224,159,162],[236,166,203,96,149,164,151,116,13,4,237,209,223,231,110,169,122,168,149,227,240,36,46,63,217,84,142,220,34,51,195,42],[114,8,192,243,70,54,229,161,230,184,32,19,247,172,11,2,61,159,187,212,109,65,126,49,163,205,52,247,139,81,199,246],[175,55,254,240,225,18,75,197,251,128,188,118,40,233,236,233,110,144,104,22,64,106,246,2,159,220,125,49,78,80,40,43],[124,103,133,56,108,221,109,169,56,177,144,15,21,210,39,133,221,50,55,125,231,247,36,11,76,96,154,150,179,192,194,213],[25,137,1,48,138,200,76,182,69,191,39,221,132,55,233,148,115,150,238,217,159,201,152,205,150,71,174,111,90,51,7,114],[214,90,110,137,219,135,130,120,70,72,72,128,234,50,187,129,224,146,42,212,209,214,178,9,109,40,160,35,20,88,37,83],[152,138,90,164,112,223,156,34,233,115,230,155,115,67,32,116,46,141,148,250,162,221,122,136,159,42,48,99,133,58,199,229],[181,207,75,130,243,228,77,100,57,92,39,188,43,53,70,202,190,188,147,78,6,141,164,175,152,63,16,245,239,179,75,16],[66,181,227,231,175,83,108,23,0,106,132,119,17,103,239,196,148,81,5,33,216,126,252,170,202,155,116,91,130,116,150,144],[93,228,219,177,116,190,134,139,138,31,171,63,234,220,107,76,251,182,248,106,17,123,8,94,0,157,241,248,230,185,172,243],[205,170,3,172,197,188,24,41,138,46,52,39,33,3,180,189,243,67,225,160,160,112,81,184,251,217,108,66,69,244,170,138],[50,77,62,198,110,198,98,238,46,3,41,97,233,82,22,193,176,119,206,219,134,16,27,103,156,134,203,191,164,124,18,225],[144,106,8,233,10,32,63,229,180,238,238,104,6,50,14,220,98,210,75,55,157,205,228,74,202,17,83,232,239,184,239,204],[127,70,199,194,19,16,160,226,19,155,75,126,102,146,251,147,125,136,235,207,157,200,221,161,32,129,0,6,244,187,233,140],[26,211,252,193,79,39,248,225,168,5,183,242,92,126,167,136,241,195,129,18,87,231,112,16,90,213,102,217,114,210,126,146],[199,114,97,128,122,136,19,154,66,199,122,187,66,62,193,209,77,197,23,122,92,227,158,92,165,217,235,121,179,104,48,190],[78,245,8,241,4,112,217,232,103,63,13,120,231,179,167,75,67,111,207,204,70,80,230,84,114,217,164,11,161,33,153,212],[139,73,52,67,189,146,194,97,6,52,51,223,228,72,163,165,219,112,104,110,223,194,57,186,76,160,162,90,61,118,128,84],[90,38,139,31,124,171,10,8,66,90,38,195,27,185,240,227,28,253,208,149,244,67,235,251,105,134,131,159,7,0,192,243],[74,9,43,189,37,8,31,205,244,159,173,108,103,58,124,99,209,27,239,91,121,226,237,74,250,249,31,203,170,175,129,62],[148,237,162,27,191,142,216,23,101,216,108,27,153,5,166,74,68,177,154,187,42,53,108,117,5,65,43,152,135,226,63,101],[0,246,3,123,245,51,219,145,223,84,203,230,235,97,254,100,41,151,123,224,241,248,15,24,127,237,123,28,98,48,98,23],[245,89,57,125,199,41,226,152,143,98,61,35,118,47,45,130,58,206,201,17,146,63,39,80,242,7,72,23,157,139,226,51],[175,176,16,140,38,227,23,222,212,157,17,75,240,104,4,116,159,193,84,215,210,151,142,130,154,114,194,73,191,196,107,231],[227,23,34,169,176,17,162,247,245,210,160,80,54,102,54,240,155,31,210,124,181,203,205,115,154,176,136,69,108,155,159,206],[199,236,69,125,182,200,78,25,35,228,110,208,19,198,176,221,251,30,244,189,147,143,115,138,93,164,173,46,187,149,238,168],[161,2,166,154,172,159,80,106,8,1,26,24,184,36,10,248,117,218,155,174,212,239,237,171,114,243,9,157,31,234,60,171],[145,169,34,179,237,122,156,233,86,156,169,12,182,86,155,29,145,183,94,13,4,53,80,196,10,168,165,254,236,43,199,138],[88,226,199,217,171,5,124,82,206,28,43,133,249,28,18,104,26,33,91,43,201,178,82,24,146,116,111,208,203,128,114,116],[41,139,193,103,144,52,135,55,128,214,162,100,79,8,224,39,131,233,172,38,178,81,5,120,26,135,9,72,71,114,221,101],[145,1,5,99,120,125,184,104,29,221,243,138,249,12,185,55,1,229,118,206,154,156,195,196,45,111,237,113,78,136,248,92],[45,223,43,155,229,161,247,116,74,82,105,253,89,126,59,19,162,60,87,67,231,18,154,217,78,137,39,176,180,105,56,51],[143,187,217,111,195,135,219,175,254,73,68,196,109,212,57,37,190,177,172,113,160,135,91,94,170,171,44,216,83,233,220,31],[152,73,242,79,57,137,4,74,227,121,249,220,210,92,234,71,238,75,74,189,184,99,229,177,93,136,129,139,248,200,241,41],[61,24,238,28,234,141,168,118,37,71,124,156,254,233,134,52,91,246,255,42,229,240,162,63,209,55,200,1,230,55,88,79],[145,97,140,45,0,110,46,121,79,74,133,175,210,138,0,63,54,22,81,71,142,34,254,18,46,239,104,57,187,238,11,1],[0,212,30,244,203,4,49,81,113,131,114,224,152,243,45,198,158,164,103,100,84,228,55,158,221,252,77,71,51,173,208,136],[170,12,230,246,120,248,168,158,58,198,115,243,84,10,235,52,228,201,93,254,177,176,197,223,101,12,49,104,197,247,53,77],[21,221,249,128,199,107,91,14,67,163,173,163,98,200,94,252,238,43,175,116,251,20,31,99,148,205,65,233,26,87,53,35],[25,48,133,120,179,109,109,180,69,73,239,145,86,11,64,242,178,177,54,91,226,25,43,241,58,59,6,110,145,240,163,74],[45,143,176,167,87,172,25,222,203,90,30,147,23,54,248,149,109,135,209,91,99,82,44,53,85,84,163,224,188,22,16,75],[238,9,106,156,216,245,45,144,143,192,217,161,123,173,63,174,54,21,29,18,29,239,36,91,91,70,243,187,118,220,70,171],[126,150,75,203,69,99,91,247,5,192,163,54,164,254,125,48,30,116,123,249,69,22,164,180,128,168,222,106,197,65,142,136],[27,121,31,71,55,35,217,224,188,229,210,78,102,6,213,129,139,243,77,225,133,21,163,72,42,127,193,255,38,59,97,91],[134,215,144,218,114,194,59,68,149,150,23,24,141,199,9,79,103,235,178,232,127,90,218,212,32,251,14,74,210,6,241,161],[79,96,224,70,162,8,184,235,179,175,171,93,211,34,133,208,98,125,153,218,194,183,204,47,214,144,130,244,117,98,198,117],[82,127,174,29,65,32,163,170,111,222,162,0,21,60,148,134,226,174,105,92,169,13,186,248,65,49,52,211,194,221,155,242],[0,173,73,108,65,134,158,159,230,111,182,138,248,93,85,134,253,100,236,181,204,32,189,18,211,95,171,224,56,131,79,36],[197,222,196,238,55,24,80,183,126,124,91,237,174,95,80,178,165,116,233,12,83,10,145,46,239,136,127,207,217,99,231,120],[193,27,228,178,141,146,149,40,113,90,229,48,148,67,34,198,103,143,216,156,14,57,184,122,136,6,129,123,195,12,211,41],[194,130,60,24,132,55,199,6,227,234,144,9,43,70,171,159,173,41,97,29,144,166,161,28,160,133,0,220,204,218,242,238],[231,50,103,228,56,204,190,38,204,20,186,131,112,9,121,19,28,2,19,100,46,232,70,223,58,76,167,161,128,62,94,147],[131,107,127,110,120,76,150,86,151,53,169,86,79,225,78,200,175,176,249,37,57,156,107,246,91,245,209,34,247,53,122,59],[144,12,184,76,170,196,4,27,229,221,238,60,71,232,158,193,201,23,193,78,61,156,211,198,228,194,62,250,157,220,96,174],[17,52,123,255,96,126,205,141,106,61,18,246,66,50,16,24,41,244,183,48,129,101,114,34,108,84,155,141,173,102,214,102],[195,156,155,183,171,90,39,9,49,19,164,130,137,71,132,98,3,77,128,247,77,147,24,107,90,192,171,104,9,137,65,23],[2,185,83,114,77,158,89,167,57,3,30,4,17,121,122,235,132,53,148,43,123,9,62,180,140,172,172,91,43,184,112,113],[180,4,142,105,7,0,0,121,25,139,211,238,255,125,125,159,219,97,6,43,251,176,64,139,97,250,58,118,80,142,23,137],[109,200,126,151,135,66,0,35,210,4,109,35,182,36,193,18,112,111,150,24,18,169,198,198,167,51,119,184,194,224,194,158],[170,250,216,6,122,2,219,220,160,101,3,203,177,126,118,165,221,255,241,104,182,208,242,224,174,182,154,105,159,101,59,245],[49,195,15,129,58,151,191,211,25,0,188,18,255,154,196,187,19,100,45,44,81,126,77,252,255,215,46,17,178,31,149,28],[190,161,139,202,164,74,166,50,6,36,108,230,137,4,31,127,116,123,68,180,140,180,226,119,227,66,181,4,99,56,54,131],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":766873,"Length":68764},"Cuts":[[96,0,95,40,141,16,235,22,130,222,209,47,56,193,177,5,33,39,241,90,21,244,104,117,98,142,41,140,30,72,195,149],[65,103,65,37,116,27,60,47,143,173,137,115,54,114,39,148,133,18,25,68,107,141,29,223,131,131,64,149,236,231,66,226],[54,162,42,138,45,141,237,157,184,150,218,29,109,82,19,48,32,238,248,131,238,101,197,121,158,123,109,103,110,45,158,107],[159,232,79,68,64,109,189,237,151,253,89,51,49,3,144,24,172,32,240,19,63,155,75,47,230,130,62,250,27,72,210,69],[134,164,118,69,139,234,74,74,69,38,196,172,80,173,190,151,170,33,181,122,146,107,167,230,203,224,102,251,5,131,89,145],[24,87,91,185,61,235,143,236,211,65,103,81,159,206,33,171,88,37,183,153,212,69,152,135,17,225,70,223,46,4,102,124],[183,215,35,118,133,171,228,45,130,130,79,82,127,20,64,207,157,255,84,126,149,181,109,250,92,243,23,21,119,59,125,99],[226,164,102,58,162,71,170,217,153,200,188,153,233,121,135,53,70,137,10,195,223,72,206,166,90,230,125,177,189,51,249,248],[161,239,112,21,227,243,85,199,99,90,144,71,153,122,188,127,255,69,181,239,160,180,58,178,23,145,97,16,46,124,106,163],[225,191,33,160,30,174,165,154,39,169,72,120,7,150,57,2,28,147,239,192,0,128,228,32,131,241,176,216,85,245,15,131],[59,225,75,253,151,224,190,17,209,176,232,212,111,121,128,122,8,117,108,50,240,72,210,209,52,252,110,33,184,159,145,130],[103,117,194,243,84,254,93,159,118,42,163,81,170,6,200,104,132,241,38,71,2,180,121,47,18,139,43,151,57,199,29,246],[132,19,140,246,129,51,236,219,35,164,40,238,34,78,235,23,240,241,72,190,101,151,87,38,149,202,140,222,170,64,169,153],[38,123,232,169,73,118,153,185,117,193,53,254,71,66,231,196,113,28,84,166,136,165,104,85,200,164,79,23,64,150,15,112],[230,71,178,88,135,241,93,238,33,120,175,120,221,125,42,27,178,46,240,81,237,113,134,97,218,142,43,106,181,44,8,1],[60,110,175,124,207,173,60,168,25,7,146,183,206,129,158,168,30,101,30,206,170,52,141,205,176,97,211,216,185,156,95,237],[252,37,234,31,65,30,65,146,226,21,103,128,102,163,185,130,192,64,26,83,216,41,190,83,184,58,123,164,83,151,243,51],[115,3,232,225,41,160,248,174,15,91,182,148,104,69,46,28,27,133,15,4,95,220,75,110,173,136,72,2,165,54,46,64],[182,105,62,36,28,15,199,206,254,28,205,122,24,14,227,153,117,92,19,23,30,225,62,217,151,4,124,241,199,225,37,1],[165,63,28,78,233,194,12,160,34,122,19,47,130,175,194,172,110,104,152,223,106,149,122,252,4,95,143,92,129,131,49,56],[54,168,159,106,44,121,88,61,184,197,203,198,40,22,59,90,95,10,6,226,139,47,119,176,118,74,41,64,57,41,34,44],[4,241,150,53,246,207,131,75,101,1,234,67,227,107,102,167,1,81,186,146,58,238,187,187,92,25,222,187,28,163,168,189],[227,140,168,9,254,93,155,94,88,181,202,208,177,213,0,113,154,133,100,1,250,214,111,59,217,13,40,147,71,151,10,139],[108,4,42,15,40,124,21,137,119,16,116,11,16,59,245,72,94,127,14,255,199,140,103,60,79,192,0,35,93,137,132,42],[159,188,66,165,94,195,45,206,98,162,142,60,73,205,5,75,34,106,196,10,242,24,209,189,25,238,22,250,215,110,131,195],[66,218,16,62,118,3,109,130,130,51,104,114,88,248,228,232,154,7,90,52,101,143,60,52,246,190,11,49,107,188,186,214],[85,197,56,239,59,140,38,241,168,102,19,45,194,136,170,208,124,242,199,78,193,146,61,157,245,12,239,190,176,58,13,114],[46,154,163,180,201,15,119,74,134,65,17,87,71,222,86,243,93,126,153,8,97,252,204,18,159,157,133,168,81,155,171,75],[37,105,235,55,67,172,188,169,107,4,173,11,20,32,117,33,104,142,99,52,15,19,132,210,128,241,43,248,87,252,27,168],[0,138,210,6,205,222,142,53,188,109,211,50,137,74,252,170,224,212,127,143,97,40,36,52,248,219,234,20,243,219,189,172],[37,96,221,109,31,135,105,214,242,234,167,255,67,232,59,126,4,170,114,97,245,203,98,246,200,142,194,29,229,78,35,142],[181,233,233,190,33,172,148,227,140,19,33,236,38,247,212,43,187,5,239,184,163,35,208,37,81,160,156,129,67,174,24,230],[180,153,248,48,248,189,70,68,103,30,133,28,79,8,174,72,223,239,48,21,159,62,98,219,165,136,139,62,59,83,55,211],[219,159,52,58,12,72,41,237,209,17,111,210,183,142,250,183,139,77,22,245,4,243,26,238,95,185,103,219,226,13,112,229],[122,208,82,197,179,194,108,63,85,71,10,11,134,46,148,48,219,148,156,111,5,177,225,166,22,168,25,167,47,231,13,136],[142,185,177,43,66,114,188,176,208,116,26,74,171,154,225,76,190,22,116,140,1,189,246,198,72,247,138,165,107,136,32,25],[39,158,18,189,75,214,17,132,118,52,200,54,255,111,109,8,174,186,55,154,87,163,222,57,141,245,32,66,138,83,89,135],[212,217,217,26,7,193,107,157,182,191,72,232,213,203,161,95,120,191,28,116,36,222,89,220,104,128,45,115,112,44,196,223],[101,28,246,9,5,137,176,78,129,184,30,111,97,252,84,215,59,131,201,137,150,184,49,192,10,87,150,15,131,245,82,20],[35,218,14,240,146,155,244,85,231,124,9,141,225,136,195,208,191,27,67,208,29,239,101,70,168,87,81,99,115,133,189,216],[33,126,130,252,81,135,199,195,58,68,109,234,253,18,167,147,232,116,245,77,153,174,2,5,252,79,0,157,148,210,23,116],[157,24,222,166,41,90,104,179,3,185,112,93,38,52,153,206,19,58,108,169,2,246,121,113,57,64,129,171,162,133,73,34],[24,16,216,12,64,197,191,132,240,125,208,186,147,43,1,84,109,185,223,101,129,19,231,5,159,11,239,254,211,237,233,106],[45,77,204,73,210,209,21,88,169,99,31,141,189,150,156,234,230,3,206,37,76,111,85,20,125,111,128,227,210,1,222,63],[39,64,35,158,37,192,62,227,36,4,164,219,112,164,155,219,3,212,134,51,5,165,153,20,93,69,236,146,158,38,224,103],[107,216,206,26,188,218,18,83,2,189,210,160,2,130,231,75,42,95,57,75,39,131,96,168,24,112,79,249,38,224,197,23],[24,7,106,85,88,9,65,202,10,159,109,15,59,143,12,244,126,217,1,89,202,157,40,150,1,222,169,252,73,239,50,112],[13,116,15,244,112,176,113,74,230,1,95,101,78,5,238,148,85,11,81,129,157,86,90,214,249,132,44,111,209,76,203,133],[221,157,249,95,234,223,76,62,147,159,184,197,57,127,161,176,182,89,42,168,83,47,81,109,173,124,194,244,57,37,213,196],[86,13,118,164,194,57,240,125,177,81,101,129,40,52,140,106,43,207,233,172,111,112,67,180,127,43,64,184,14,218,2,211],[73,235,156,38,3,91,182,67,82,147,114,238,113,36,122,201,13,244,238,60,224,67,80,79,212,182,57,128,185,240,38,166],[46,3,115,64,13,182,132,187,141,49,110,37,249,191,153,152,70,34,225,132,83,54,57,21,13,211,227,157,115,194,62,3],[56,99,110,173,250,158,115,63,211,215,225,20,102,131,69,115,111,37,40,116,178,136,107,239,187,56,213,107,208,40,207,211],[78,177,249,112,205,196,28,209,171,194,115,108,142,101,21,187,2,99,49,28,213,140,182,101,103,222,188,68,79,191,217,175],[134,194,5,248,248,5,77,202,173,241,191,27,153,48,22,12,127,88,48,205,160,198,202,58,62,43,73,93,64,130,254,224],[117,177,152,212,177,148,183,161,203,65,174,19,37,206,233,202,39,236,82,188,232,238,212,173,244,208,130,148,32,32,122,224],[75,68,46,13,206,25,139,5,73,98,13,89,122,207,82,85,123,124,65,64,19,140,104,238,43,241,187,188,79,129,244,141],[241,30,225,22,101,184,73,121,121,112,112,31,255,81,140,16,28,154,148,29,148,146,163,44,12,151,177,4,110,27,32,6],[22,97,157,63,29,203,163,41,26,33,127,147,45,135,187,102,37,221,191,114,244,222,156,42,154,28,47,218,228,52,202,59],[49,212,66,41,219,83,26,174,15,182,191,172,254,40,194,213,9,48,14,6,234,33,148,95,201,234,200,169,56,24,74,48],[235,101,114,188,9,168,199,18,147,75,21,132,202,87,166,230,213,63,110,206,66,172,62,156,159,105,8,18,194,119,171,64],[102,2,117,160,117,49,202,71,214,15,47,14,150,152,85,4,11,62,163,186,129,72,60,62,145,67,110,130,21,177,143,3],[11,31,167,175,127,50,94,62,133,152,149,223,193,39,77,210,235,46,24,200,17,200,91,220,106,217,45,112,45,98,248,134],[117,33,250,213,188,98,86,11,134,244,252,12,87,250,42,203,1,9,241,240,249,222,5,16,110,88,226,14,35,179,163,55],[117,161,127,199,14,41,44,212,175,99,87,37,113,114,199,164,55,111,28,51,249,150,43,137,248,136,218,27,180,133,77,244],[121,83,41,35,8,144,157,151,58,91,223,170,243,60,28,209,207,85,22,147,236,3,227,163,138,73,17,245,219,166,61,121],[182,192,82,175,0,237,58,21,106,41,121,115,11,133,152,198,96,206,107,19,32,216,32,143,194,41,178,115,18,69,104,117],[130,96,62,17,11,203,105,134,60,208,216,206,11,51,141,209,109,38,122,49,230,3,132,58,202,188,247,254,241,172,69,114],[141,108,21,96,31,87,244,197,218,207,174,1,214,40,61,29,152,104,108,0,180,149,198,25,234,195,179,157,110,140,74,17],[186,153,141,113,1,79,200,24,103,160,99,26,174,101,201,216,162,119,1,158,12,92,226,26,82,122,20,255,159,88,208,115],[104,85,21,134,21,32,226,250,193,221,237,100,146,81,178,64,169,117,231,131,241,178,192,123,5,8,247,149,210,206,46,187],[9,144,210,143,108,196,228,206,243,164,5,55,239,37,175,246,107,34,3,25,245,73,61,42,72,86,75,110,80,188,214,85],[193,177,210,118,54,155,166,173,184,3,201,242,196,243,51,246,255,107,248,197,152,195,213,158,136,149,92,252,103,245,151,31],[125,187,89,240,89,48,111,178,15,45,221,6,143,5,218,46,44,25,119,191,110,72,253,192,1,24,236,29,181,7,102,93],[216,159,50,145,246,137,189,40,154,69,57,22,89,246,222,29,48,3,57,29,170,156,36,126,183,158,123,149,172,171,38,123],[87,242,148,227,107,65,36,6,210,38,62,237,230,109,41,226,100,200,175,140,98,22,213,23,132,125,116,16,78,133,180,236],[205,111,4,182,108,27,224,61,36,23,186,113,189,98,145,213,91,94,237,94,126,163,184,143,232,251,120,238,226,190,213,166],[143,82,249,9,49,240,85,121,141,197,93,76,25,179,146,142,53,31,16,47,246,35,38,40,82,151,23,168,121,195,241,154],[166,18,250,170,78,255,203,85,178,48,25,76,43,207,159,210,191,61,244,209,137,13,199,12,162,199,196,172,78,222,0,71],[222,120,118,179,24,59,32,226,91,205,130,15,215,174,188,231,101,132,72,150,220,111,127,64,138,109,72,41,10,181,230,132],[32,67,46,1,82,111,123,220,124,181,244,191,142,21,53,193,154,40,157,105,240,32,112,104,115,62,248,137,111,118,136,115],[247,174,190,137,148,140,154,102,108,122,38,12,21,138,153,178,36,229,214,198,243,230,39,234,175,95,157,53,236,250,81,22],[183,210,57,181,250,124,23,203,97,155,227,11,128,125,149,186,102,77,151,185,8,57,37,134,41,182,8,106,136,209,241,52],[83,51,38,159,38,233,111,74,212,150,147,244,152,79,235,85,109,245,219,156,247,3,146,125,38,197,8,137,98,253,42,80],[12,135,100,194,19,230,166,244,82,69,73,149,180,24,203,206,154,120,16,116,198,180,243,172,231,235,80,57,7,68,187,224],[92,102,240,250,243,194,137,104,20,229,143,123,9,163,201,83,191,152,141,130,234,178,84,233,110,40,119,172,170,214,2,217],[22,188,43,165,230,91,62,123,72,100,210,83,94,121,184,215,211,196,186,72,13,153,52,208,78,137,133,118,79,178,224,57],[173,59,232,5,138,255,11,72,76,67,82,94,92,15,244,222,111,6,227,135,77,210,218,36,65,128,218,148,224,236,19,199],[101,83,164,70,180,107,106,185,204,24,81,144,202,208,169,120,26,120,229,162,113,101,142,146,42,17,220,147,81,217,228,170],[137,239,222,90,198,68,215,47,48,27,251,57,36,36,93,0,236,254,240,217,119,59,249,150,224,58,130,20,137,207,38,121],[117,40,101,177,114,83,193,232,193,30,124,123,182,239,140,47,189,139,107,28,17,138,213,221,119,169,234,212,29,217,157,100],[4,245,85,83,183,194,189,192,193,161,239,83,154,146,176,87,8,144,230,143,57,142,202,156,5,127,43,165,46,69,164,32],[109,43,86,172,228,4,206,236,102,51,56,215,142,108,22,62,87,229,165,39,167,61,207,96,89,100,192,165,115,68,184,166],[197,245,5,214,36,42,227,194,68,161,102,60,176,231,217,220,5,140,121,66,198,231,4,215,156,9,123,124,43,240,173,55],[245,96,184,173,80,78,197,164,190,1,152,193,243,111,27,248,9,116,215,78,229,226,53,57,30,145,120,253,118,207,67,54],[14,111,99,141,135,174,211,80,24,69,224,93,248,41,34,67,141,96,201,94,98,98,209,219,49,36,44,121,210,239,155,248],[86,18,245,82,222,98,145,254,210,3,154,91,132,188,247,96,95,161,88,229,82,32,209,223,13,41,242,120,243,221,19,68],[108,220,209,234,152,32,99,49,190,242,33,61,195,228,32,73,122,218,50,6,196,73,41,169,168,242,124,2,186,246,200,116],[94,166,106,15,93,70,93,35,188,250,71,65,226,145,219,181,231,173,87,102,215,151,87,36,12,168,106,59,16,184,43,91],[170,59,59,72,123,92,210,122,203,239,131,181,135,232,103,167,128,124,66,145,145,49,184,236,145,170,218,176,129,49,254,67],[0,108,99,163,48,93,218,30,188,161,214,110,140,67,32,81,63,207,9,249,253,223,193,195,33,232,137,53,196,248,73,29],[231,237,78,209,55,208,45,217,44,68,105,59,245,253,20,113,124,10,90,112,1,118,129,229,94,4,48,252,65,33,65,240],[72,101,233,28,27,29,9,236,196,126,187,4,223,62,225,226,236,64,70,232,123,123,154,71,200,27,167,228,206,52,177,79],[16,2,14,152,231,231,219,28,22,128,77,215,181,47,205,133,164,18,66,133,55,53,182,198,150,241,247,207,244,77,142,155],[153,49,88,50,47,55,171,185,130,11,10,145,160,167,44,132,114,163,46,149,60,166,192,164,37,148,1,0,81,51,176,169],[182,158,12,154,47,191,143,34,253,224,173,207,102,88,34,136,23,69,76,115,2,217,42,20,80,217,207,69,100,2,248,85],[13,96,65,153,53,202,12,242,218,62,239,86,138,196,240,220,233,210,165,229,81,185,238,63,182,19,55,35,20,213,67,219],[216,229,217,251,240,19,226,111,209,160,32,17,64,25,217,241,187,234,132,148,77,190,209,249,52,237,255,95,138,140,83,41],[253,166,35,185,121,166,52,228,79,65,235,124,69,13,3,130,126,55,31,175,70,136,25,37,196,103,43,144,146,226,176,174],[111,144,165,251,212,159,213,45,38,174,96,59,172,255,34,146,249,186,152,205,255,9,86,231,120,214,185,101,182,42,46,108],[101,13,79,206,232,70,133,253,115,49,188,114,41,110,43,61,232,238,152,225,195,214,174,150,7,137,162,33,18,97,238,72],[152,62,53,17,207,21,222,125,137,49,253,90,56,202,5,7,26,52,73,211,46,103,138,224,178,123,224,153,155,116,35,2],[155,36,105,217,60,130,249,13,30,197,91,210,26,171,19,6,6,85,48,36,159,154,35,73,202,33,192,121,58,88,83,34],[170,129,154,56,109,253,176,103,40,15,101,199,224,132,158,65,242,20,126,128,194,163,173,185,29,90,79,162,8,117,27,50],[104,28,152,193,53,84,158,137,141,209,15,145,27,21,127,220,115,127,132,161,216,31,180,95,215,245,186,49,146,9,30,28],[10,78,89,21,117,165,26,4,110,202,226,190,140,251,126,107,149,68,90,44,82,96,4,32,15,149,221,42,247,200,218,12],[105,104,7,223,230,196,63,52,197,216,244,23,215,40,75,6,99,80,224,80,75,70,175,86,100,123,76,140,214,208,251,74],[141,227,14,103,241,176,138,22,144,103,177,182,165,79,228,168,136,221,186,104,101,44,81,96,209,196,212,30,62,170,193,101],[132,68,32,218,187,193,235,158,51,167,157,157,96,79,58,95,37,159,239,40,176,32,148,39,65,7,42,88,200,208,101,15],[88,183,249,149,246,106,126,200,170,241,246,92,131,236,144,140,10,148,233,212,10,60,80,139,142,171,51,4,94,65,154,188],[232,44,163,1,249,67,11,167,236,89,180,124,171,13,93,236,120,84,200,94,244,215,120,154,165,12,198,248,100,15,80,24],[76,184,198,182,26,146,159,175,21,53,199,173,150,104,40,221,126,149,255,153,188,254,5,225,233,18,25,84,153,149,216,54],[110,96,50,229,211,110,249,246,71,161,6,9,17,6,146,17,248,136,102,234,127,32,252,181,75,158,12,111,68,213,243,94],[220,72,109,147,222,111,158,122,139,104,123,127,49,127,175,222,169,34,179,141,137,168,149,225,133,166,42,208,77,125,251,120],[159,205,159,118,237,217,100,68,94,221,92,226,118,175,22,53,26,212,221,81,47,65,105,252,88,207,142,62,12,133,220,87],[45,220,114,65,195,192,131,218,157,87,126,86,170,211,82,149,196,219,62,100,46,237,182,184,181,181,193,241,3,125,40,196],[47,186,58,231,212,212,227,60,165,47,49,182,154,122,145,127,32,226,188,209,253,1,212,73,236,159,188,201,31,214,6,62],[239,229,249,151,250,237,231,222,253,27,157,221,135,92,247,138,60,92,205,242,156,253,177,156,236,12,118,250,72,70,164,92],[149,99,244,89,169,167,228,217,105,178,91,217,175,141,18,67,79,8,16,201,132,192,247,226,202,250,186,92,30,57,24,223],[236,39,129,146,241,57,146,250,173,146,187,228,232,203,42,147,29,205,157,64,17,75,88,10,136,158,63,40,71,69,129,63],[222,242,149,87,126,74,40,31,63,28,49,95,112,233,205,248,197,49,116,253,166,191,173,109,185,65,234,44,253,42,144,244],[119,37,210,68,202,28,171,7,50,118,15,242,255,53,237,52,8,238,3,205,137,118,187,7,143,148,2,65,205,118,117,10],[225,147,115,253,189,215,245,51,133,123,232,201,222,155,29,80,231,83,21,161,96,129,115,129,160,137,33,69,218,76,129,127],[77,200,51,152,123,122,176,174,64,248,30,148,200,76,78,188,163,84,123,38,102,129,126,226,24,180,96,231,79,44,235,58],[229,223,29,35,139,180,186,243,191,78,70,246,145,239,250,207,160,139,91,151,95,112,219,254,26,113,82,209,49,170,94,167],[112,236,179,15,215,200,229,253,253,48,237,100,111,253,24,165,205,205,141,122,205,87,78,124,83,125,81,210,122,83,86,223],[40,90,131,121,93,152,49,221,222,115,124,44,98,229,107,251,16,42,7,7,3,67,9,91,132,104,96,101,22,9,202,57],[123,53,183,153,75,253,63,87,182,62,53,108,190,117,64,209,58,223,189,196,109,162,175,142,23,96,32,205,138,238,161,1],[114,122,75,238,145,70,233,71,217,54,118,210,67,180,135,187,103,185,173,181,16,164,44,187,109,32,146,251,130,175,8,221],[5,116,6,96,156,66,10,15,152,187,73,22,8,76,31,251,145,29,153,40,137,30,59,74,249,17,53,225,250,157,221,181],[217,173,155,0,122,54,177,218,192,163,169,183,180,51,172,223,33,210,92,127,144,212,153,11,224,91,111,217,18,211,15,110],[15,244,183,139,51,200,101,150,127,248,154,154,1,237,78,12,207,200,104,114,111,72,187,118,172,234,97,134,137,83,162,227],[158,30,44,208,182,96,207,166,209,27,164,224,247,100,225,14,94,206,194,54,205,138,44,177,203,92,139,173,183,188,120,151],[74,195,100,192,0,149,56,240,234,73,234,78,230,108,36,183,183,8,146,66,70,129,220,192,59,126,155,242,109,145,29,169],[22,183,88,83,199,24,6,172,92,255,213,237,137,127,124,99,160,52,82,28,104,220,87,65,57,252,203,213,117,102,96,203],[252,45,113,113,31,154,131,188,79,77,159,132,183,91,172,226,84,195,104,224,169,70,69,80,180,194,97,34,235,14,183,12],[121,177,84,182,57,235,79,228,117,174,95,99,1,187,194,31,25,27,20,86,18,106,85,57,31,153,12,239,171,39,203,157],[238,183,223,146,12,25,59,127,224,11,86,36,60,182,1,204,255,172,150,12,89,132,139,110,187,88,140,68,90,217,155,28],[92,242,19,24,34,127,97,217,20,3,32,106,113,43,203,222,111,166,242,59,253,195,231,18,255,209,7,19,163,59,86,183],[108,76,226,230,120,203,223,85,120,210,205,210,197,76,14,10,127,62,81,242,151,253,208,145,137,62,236,164,68,51,196,92],[26,30,167,247,26,136,17,139,183,80,4,121,58,209,18,135,133,155,163,177,218,179,247,13,71,216,195,138,213,36,25,218],[11,105,196,72,23,213,65,115,190,179,161,76,30,13,209,4,123,8,207,2,119,81,230,131,138,229,195,122,174,37,224,241],[189,138,114,67,187,220,174,150,226,213,126,81,151,21,89,34,168,183,231,75,138,234,57,164,206,214,4,49,204,211,223,110],[220,30,62,192,219,69,250,248,44,127,255,153,149,19,246,168,167,59,45,111,243,28,235,1,233,12,172,40,90,232,6,242],[179,81,118,204,194,254,155,0,252,128,104,188,169,88,182,244,39,39,121,163,102,45,85,104,18,255,132,255,101,123,183,73],[95,199,209,41,172,146,225,140,199,194,222,159,168,59,114,185,51,47,177,13,189,187,69,218,43,0,5,43,233,160,40,22],[129,52,45,193,33,120,242,24,138,228,171,152,26,38,218,35,69,55,224,215,41,100,202,244,188,41,234,54,180,83,21,217],[103,52,97,217,110,197,100,84,210,60,16,200,63,169,105,155,168,14,128,213,50,28,207,40,199,204,37,174,127,182,91,130],[63,134,138,34,57,54,48,113,135,183,30,98,164,123,82,85,175,177,197,75,199,11,41,149,196,246,220,212,28,193,140,103],[126,208,29,143,119,75,147,55,82,3,11,157,65,85,222,247,118,122,137,56,133,4,165,42,7,125,253,150,125,105,245,29],[73,65,58,127,203,46,221,255,244,152,60,186,144,252,202,213,72,4,237,127,214,3,204,244,160,92,2,181,137,72,47,140],[248,104,148,43,166,93,240,24,171,211,154,245,82,1,220,35,52,177,172,164,227,139,81,140,113,177,72,98,233,239,124,76],[238,139,73,250,152,73,207,135,187,201,30,8,206,85,103,89,209,227,53,220,57,189,63,3,102,140,117,96,135,255,67,41],[218,20,209,153,16,166,235,181,41,235,101,243,21,141,40,70,191,139,13,143,217,52,118,209,90,185,117,127,4,68,38,79],[42,39,214,74,20,0,154,4,223,223,63,235,30,156,195,223,83,74,91,247,200,28,101,68,147,196,44,4,146,61,99,108],[184,230,43,184,207,170,190,178,8,1,213,139,247,42,49,66,231,102,110,178,240,175,90,174,230,168,76,116,106,234,132,85],[251,230,194,196,179,119,125,240,31,227,185,166,134,185,111,105,111,71,106,70,179,250,110,24,191,4,114,188,174,9,1,247],[173,249,157,164,2,4,86,244,186,33,10,166,174,84,1,128,21,140,107,177,224,3,3,213,37,36,122,47,32,227,62,253],[55,181,47,209,248,136,163,27,103,149,37,150,162,209,126,114,162,217,17,137,203,133,46,163,219,80,123,11,120,141,125,66],[65,42,172,46,15,244,221,182,87,198,56,88,4,120,51,48,5,49,131,68,206,122,21,130,181,128,214,249,46,118,158,14],[200,151,185,51,136,102,221,213,158,40,100,118,147,83,208,142,118,235,232,182,60,0,33,1,135,230,80,29,222,169,209,185],[156,77,179,37,26,23,38,106,20,21,82,38,177,62,36,18,145,150,40,251,178,245,51,36,238,123,36,255,163,10,74,79],[183,101,164,11,243,214,210,232,212,138,238,233,37,106,32,58,94,104,120,124,51,214,235,7,111,195,227,91,77,107,17,150],[246,235,133,252,219,111,129,27,241,177,178,33,162,254,76,91,145,158,155,163,47,226,30,251,90,155,82,49,83,218,238,4],[169,200,140,192,35,42,228,205,243,234,176,4,107,232,16,136,37,29,54,32,113,217,137,165,157,187,186,235,117,96,150,181],[169,94,157,86,251,45,132,82,0,115,192,138,120,139,216,238,12,218,155,135,126,47,190,127,26,12,1,107,152,101,253,115],[154,137,94,150,79,123,187,28,199,186,14,10,68,145,151,225,244,211,142,90,198,190,52,57,246,119,13,6,50,195,98,58],[84,241,33,133,16,253,45,45,53,245,219,163,36,12,65,65,160,212,190,73,38,94,1,251,82,185,122,44,134,161,255,232],[223,89,124,94,121,179,13,125,225,198,244,182,29,202,221,31,74,233,2,181,64,202,176,137,168,37,100,152,56,128,38,237],[157,7,143,87,204,123,8,85,119,29,208,62,237,121,91,218,46,74,108,17,40,4,220,204,142,214,181,10,205,33,25,167],[171,195,60,254,152,183,84,84,64,133,5,3,73,181,32,170,204,15,221,99,107,6,81,20,63,30,230,123,30,70,106,123],[141,82,30,77,247,42,217,99,60,29,141,80,240,84,82,1,106,165,152,35,54,255,198,10,25,193,130,119,19,240,87,248],[87,62,185,221,165,213,235,170,29,6,165,228,58,41,178,128,54,75,95,189,96,103,166,36,177,230,210,54,190,62,226,250],[24,49,134,192,185,127,250,148,93,184,234,162,47,10,6,36,13,202,18,229,74,220,32,255,231,175,115,43,39,71,73,184],[175,52,224,254,202,175,146,148,181,28,112,253,48,224,201,19,24,190,198,176,253,27,7,68,38,131,70,248,6,52,222,164],[218,42,56,145,251,90,34,171,116,27,247,84,169,222,205,225,160,191,81,133,12,86,12,80,34,242,164,190,46,177,179,10],[55,83,32,177,69,238,188,22,245,218,14,154,97,62,29,85,3,230,127,66,173,242,108,44,41,184,236,140,224,201,37,144],[163,6,245,248,19,68,208,159,69,59,4,243,123,50,210,81,8,233,1,85,185,34,97,169,197,232,228,204,148,202,210,66],[224,49,179,44,208,252,246,107,108,188,107,175,24,92,207,72,40,86,98,243,37,103,103,208,126,163,83,7,10,250,81,168],[116,211,32,122,136,196,92,233,189,142,184,170,10,166,173,193,19,219,107,214,238,186,66,245,63,156,90,232,127,189,48,106],[223,95,3,81,121,160,217,116,118,106,19,155,247,151,211,234,164,102,63,12,112,30,196,33,157,2,232,51,239,240,50,155],[123,233,128,144,136,190,183,252,25,219,195,179,130,140,111,204,136,252,61,53,100,8,36,188,197,165,34,181,95,118,125,154],[66,18,95,21,224,112,118,63,241,152,165,105,234,182,243,84,253,187,225,98,15,60,49,176,173,59,132,163,77,18,192,190],[43,187,23,207,86,203,224,193,44,28,148,255,211,68,95,199,224,171,197,68,104,173,154,185,133,32,229,122,213,126,149,189],[9,111,124,74,219,105,41,142,4,155,106,253,89,80,245,187,53,242,246,100,226,7,243,3,178,69,193,66,61,28,225,248],[217,226,56,35,180,239,185,165,173,170,238,37,46,195,41,14,153,146,160,193,78,106,129,53,198,111,129,111,216,224,104,132],[173,235,124,244,45,62,57,198,126,255,58,89,208,156,168,136,18,242,213,91,154,225,23,134,211,65,97,29,59,133,113,109],[99,71,227,238,238,65,62,169,239,35,45,253,8,26,105,83,160,36,84,12,9,138,92,100,44,104,203,14,155,190,99,6],[137,239,188,64,253,125,193,198,243,13,248,32,175,248,175,93,99,219,148,15,220,250,240,208,88,35,176,89,242,180,148,134],[108,209,162,192,178,85,190,214,180,158,189,146,50,91,96,116,71,223,24,106,98,157,71,165,112,143,114,90,103,144,193,181],[154,41,218,138,248,159,63,94,73,174,10,249,52,152,253,26,251,183,12,167,200,232,219,120,214,241,187,0,37,137,187,72],[222,63,202,152,113,203,168,223,247,125,193,132,186,218,186,9,10,182,27,105,46,177,217,249,176,163,114,212,250,112,96,87],[128,124,27,16,154,84,234,182,68,130,24,209,138,186,197,8,173,55,128,242,100,105,238,17,106,127,100,74,195,53,255,105],[241,27,142,72,246,61,184,174,55,14,250,255,61,81,190,239,70,245,93,38,137,104,167,156,224,84,36,93,100,188,68,164],[206,85,28,164,77,67,14,100,194,6,70,15,34,16,96,249,185,45,178,196,146,211,23,124,211,67,20,58,237,89,98,27],[116,243,106,157,203,135,214,223,88,142,126,29,147,198,72,71,152,56,59,167,243,62,84,118,200,255,68,114,9,196,184,108],[223,69,3,171,119,78,69,135,69,9,148,171,151,16,87,228,212,83,199,78,207,13,183,67,58,168,249,37,219,52,134,208],[212,49,127,101,168,149,71,45,233,152,205,12,9,28,231,69,196,121,180,182,5,80,183,241,16,7,15,125,62,148,77,173],[150,149,253,96,188,216,243,218,3,38,220,106,44,106,99,168,56,127,7,49,63,161,143,146,126,110,195,215,196,82,20,176],[250,234,183,221,199,132,91,155,216,82,194,199,198,225,200,234,198,182,25,239,189,140,213,96,29,45,86,154,206,82,247,114],[188,140,127,131,215,215,178,123,147,130,11,246,112,86,108,28,140,176,205,204,242,116,181,150,65,16,3,135,125,146,143,64],[125,106,32,15,8,53,116,83,49,156,91,166,251,210,25,72,128,253,191,252,188,15,176,87,28,57,97,50,202,6,169,51],[14,120,220,52,103,148,150,28,225,218,191,118,228,174,25,150,22,199,208,78,130,41,167,220,151,64,228,128,217,46,238,43],[46,39,74,44,144,91,150,199,89,253,238,145,228,164,226,232,121,128,15,87,49,19,136,167,42,76,159,22,127,74,65,158],[190,10,202,157,148,30,116,157,19,151,66,147,138,212,199,204,58,177,184,103,166,140,193,102,152,161,70,74,165,3,206,96],[251,202,238,71,94,224,233,181,66,129,70,117,143,35,66,225,111,154,75,131,205,12,173,64,85,154,93,184,19,245,113,0],[45,202,125,133,53,123,12,157,171,6,38,145,199,69,22,59,144,226,247,162,143,174,226,58,99,191,62,51,151,32,191,1],[216,178,133,160,40,127,89,247,62,188,66,118,43,125,238,82,168,71,130,142,234,35,92,139,181,24,34,221,142,44,123,129],[42,20,73,59,138,119,240,150,107,128,139,176,58,24,19,68,114,191,134,31,92,10,121,85,253,182,225,253,98,135,4,162],[246,40,80,189,112,72,207,216,252,43,133,44,198,168,118,254,142,159,194,172,40,215,23,70,192,216,84,96,112,211,30,177],[160,143,145,42,255,212,206,148,27,198,174,3,220,12,216,45,138,216,245,43,242,67,59,119,92,88,12,15,205,104,156,238],[237,173,236,163,43,250,4,109,133,247,100,217,113,163,146,30,178,248,243,162,213,123,200,227,108,176,137,100,214,187,51,23],[238,227,183,250,53,225,172,216,109,192,153,12,182,29,216,248,141,117,137,234,69,27,148,243,7,77,102,106,57,53,121,138],[74,46,197,90,243,6,57,30,192,224,39,58,104,203,253,254,217,163,192,92,180,46,235,2,46,19,115,159,49,91,253,6],[12,41,90,22,1,214,13,251,192,203,199,191,200,135,98,17,164,111,128,234,253,168,148,110,22,34,23,252,119,215,84,223],[105,136,46,11,124,201,165,27,96,30,203,26,236,127,230,19,205,35,83,97,12,112,79,140,0,42,86,200,0,223,126,15],[63,155,157,119,15,174,164,58,252,90,136,23,87,162,191,254,25,100,2,210,139,196,229,53,45,40,255,25,87,19,37,90],[144,99,85,207,3,12,147,214,170,106,234,60,14,94,14,159,216,48,242,126,100,253,15,97,60,15,12,253,192,8,173,43],[175,177,217,35,67,31,215,145,2,153,165,120,222,17,33,168,164,69,163,191,103,179,21,53,91,50,165,222,19,224,159,162],[236,166,203,96,149,164,151,116,13,4,237,209,223,231,110,169,122,168,149,227,240,36,46,63,217,84,142,220,34,51,195,42],[114,8,192,243,70,54,229,161,230,184,32,19,247,172,11,2,61,159,187,212,109,65,126,49,163,205,52,247,139,81,199,246],[175,55,254,240,225,18,75,197,251,128,188,118,40,233,236,233,110,144,104,22,64,106,246,2,159,220,125,49,78,80,40,43],[124,103,133,56,108,221,109,169,56,177,144,15,21,210,39,133,221,50,55,125,231,247,36,11,76,96,154,150,179,192,194,213],[25,137,1,48,138,200,76,182,69,191,39,221,132,55,233,148,115,150,238,217,159,201,152,205,150,71,174,111,90,51,7,114],[214,90,110,137,219,135,130,120,70,72,72,128,234,50,187,129,224,146,42,212,209,214,178,9,109,40,160,35,20,88,37,83],[152,138,90,164,112,223,156,34,233,115,230,155,115,67,32,116,46,141,148,250,162,221,122,136,159,42,48,99,133,58,199,229],[181,207,75,130,243,228,77,100,57,92,39,188,43,53,70,202,190,188,147,78,6,141,164,175,152,63,16,245,239,179,75,16],[66,181,227,231,175,83,108,23,0,106,132,119,17,103,239,196,148,81,5,33,216,126,252,170,202,155,116,91,130,116,150,144],[93,228,219,177,116,190,134,139,138,31,171,63,234,220,107,76,251,182,248,106,17,123,8,94,0,157,241,248,230,185,172,243],[205,170,3,172,197,188,24,41,138,46,52,39,33,3,180,189,243,67,225,160,160,112,81,184,251,217,108,66,69,244,170,138],[50,77,62,198,110,198,98,238,46,3,41,97,233,82,22,193,176,119,206,219,134,16,27,103,156,134,203,191,164,124,18,225],[144,106,8,233,10,32,63,229,180,238,238,104,6,50,14,220,98,210,75,55,157,205,228,74,202,17,83,232,239,184,239,204],[127,70,199,194,19,16,160,226,19,155,75,126,102,146,251,147,125,136,235,207,157,200,221,161,32,129,0,6,244,187,233,140],[26,211,252,193,79,39,248,225,168,5,183,242,92,126,167,136,241,195,129,18,87,231,112,16,90,213,102,217,114,210,126,146],[199,114,97,128,122,136,19,154,66,199,122,187,66,62,193,209,77,197,23,122,92,227,158,92,165,217,235,121,179,104,48,190],[78,245,8,241,4,112,217,232,103,63,13,120,231,179,167,75,67,111,207,204,70,80,230,84,114,217,164,11,161,33,153,212],[139,73,52,67,189,146,194,97,6,52,51,223,228,72,163,165,219,112,104,110,223,194,57,186,76,160,162,90,61,118,128,84],[90,38,139,31,124,171,10,8,66,90,38,195,27,185,240,227,28,253,208,149,244,67,235,251,105,134,131,159,7,0,192,243],[74,9,43,189,37,8,31,205,244,159,173,108,103,58,124,99,209,27,239,91,121,226,237,74,250,249,31,203,170,175,129,62],[148,237,162,27,191,142,216,23,101,216,108,27,153,5,166,74,68,177,154,187,42,53,108,117,5,65,43,152,135,226,63,101],[0,246,3,123,245,51,219,145,223,84,203,230,235,97,254,100,41,151,123,224,241,248,15,24,127,237,123,28,98,48,98,23],[245,89,57,125,199,41,226,152,143,98,61,35,118,47,45,130,58,206,201,17,146,63,39,80,242,7,72,23,157,139,226,51],[175,176,16,140,38,227,23,222,212,157,17,75,240,104,4,116,159,193,84,215,210,151,142,130,154,114,194,73,191,196,107,231],[227,23,34,169,176,17,162,247,245,210,160,80,54,102,54,240,155,31,210,124,181,203,205,115,154,176,136,69,108,155,159,206],[199,236,69,125,182,200,78,25,35,228,110,208,19,198,176,221,251,30,244,189,147,143,115,138,93,164,173,46,187,149,238,168],[161,2,166,154,172,159,80,106,8,1,26,24,184,36,10,248,117,218,155,174,212,239,237,171,114,243,9,157,31,234,60,171],[145,169,34,179,237,122,156,233,86,156,169,12,182,86,155,29,145,183,94,13,4,53,80,196,10,168,165,254,236,43,199,138],[88,226,199,217,171,5,124,82,206,28,43,133,249,28,18,104,26,33,91,43,201,178,82,24,146,116,111,208,203,128,114,116],[41,139,193,103,144,52,135,55,128,214,162,100,79,8,224,39,131,233,172,38,178,81,5,120,26,135,9,72,71,114,221,101],[145,1,5,99,120,125,184,104,29,221,243,138,249,12,185,55,1,229,118,206,154,156,195,196,45,111,237,113,78,136,248,92],[45,223,43,155,229,161,247,116,74,82,105,253,89,126,59,19,162,60,87,67,231,18,154,217,78,137,39,176,180,105,56,51],[143,187,217,111,195,135,219,175,254,73,68,196,109,212,57,37,190,177,172,113,160,135,91,94,170,171,44,216,83,233,220,31],[152,73,242,79,57,137,4,74,227,121,249,220,210,92,234,71,238,75,74,189,184,99,229,177,93,136,129,139,248,200,241,41],[61,24,238,28,234,141,168,118,37,71,124,156,254,233,134,52,91,246,255,42,229,240,162,63,209,55,200,1,230,55,88,79],[145,97,140,45,0,110,46,121,79,74,133,175,210,138,0,63,54,22,81,71,142,34,254,18,46,239,104,57,187,238,11,1],[0,212,30,244,203,4,49,81,113,131,114,224,152,243,45,198,158,164,103,100,84,228,55,158,221,252,77,71,51,173,208,136],[170,12,230,246,120,248,168,158,58,198,115,243,84,10,235,52,228,201,93,254,177,176,197,223,101,12,49,104,197,247,53,77],[21,221,249,128,199,107,91,14,67,163,173,163,98,200,94,252,238,43,175,116,251,20,31,99,148,205,65,233,26,87,53,35],[25,48,133,120,179,109,109,180,69,73,239,145,86,11,64,242,178,177,54,91,226,25,43,241,58,59,6,110,145,240,163,74],[45,143,176,167,87,172,25,222,203,90,30,147,23,54,248,149,109,135,209,91,99,82,44,53,85,84,163,224,188,22,16,75],[238,9,106,156,216,245,45,144,143,192,217,161,123,173,63,174,54,21,29,18,29,239,36,91,91,70,243,187,118,220,70,171],[126,150,75,203,69,99,91,247,5,192,163,54,164,254,125,48,30,116,123,249,69,22,164,180,128,168,222,106,197,65,142,136],[27,121,31,71,55,35,217,224,188,229,210,78,102,6,213,129,139,243,77,225,133,21,163,72,42,127,193,255,38,59,97,91],[134,215,144,218,114,194,59,68,149,150,23,24,141,199,9,79,103,235,178,232,127,90,218,212,32,251,14,74,210,6,241,161],[79,96,224,70,162,8,184,235,179,175,171,93,211,34,133,208,98,125,153,218,194,183,204,47,214,144,130,244,117,98,198,117],[82,127,174,29,65,32,163,170,111,222,162,0,21,60,148,134,226,174,105,92,169,13,186,248,65,49,52,211,194,221,155,242],[0,173,73,108,65,134,158,159,230,111,182,138,248,93,85,134,253,100,236,181,204,32,189,18,211,95,171,224,56,131,79,36],[197,222,196,238,55,24,80,183,126,124,91,237,174,95,80,178,165,116,233,12,83,10,145,46,239,136,127,207,217,99,231,120],[193,27,228,178,141,146,149,40,113,90,229,48,148,67,34,198,103,143,216,156,14,57,184,122,136,6,129,123,195,12,211,41],[194,130,60,24,132,55,199,6,227,234,144,9,43,70,171,159,173,41,97,29,144,166,161,28,160,133,0,220,204,218,242,238],[231,50,103,228,56,204,190,38,204,20,186,131,112,9,121,19,28,2,19,100,46,232,70,223,58,76,167,161,128,62,94,147],[131,107,127,110,120,76,150,86,151,53,169,86,79,225,78,200,175,176,249,37,57,156,107,246,91,245,209,34,247,53,122,59],[144,12,184,76,170,196,4,27,229,221,238,60,71,232,158,193,201,23,193,78,61,156,211,198,228,194,62,250,157,220,96,174],[17,52,123,255,96,126,205,141,106,61,18,246,66,50,16,24,41,244,183,48,129,101,114,34,108,84,155,141,173,102,214,102],[195,156,155,183,171,90,39,9,49,19,164,130,137,71,132,98,3,77,128,247,77,147,24,107,90,192,171,104,9,137,65,23],[2,185,83,114,77,158,89,167,57,3,30,4,17,121,122,235,132,53,148,43,123,9,62,180,140,172,172,91,43,184,112,113],[180,4,142,105,7,0,0,121,25,139,211,238,255,125,125,159,219,97,6,43,251,176,64,139,97,250,58,118,80,142,23,137],[109,200,126,151,135,66,0,35,210,4,109,35,182,36,193,18,112,111,150,24,18,169,198,198,167,51,119,184,194,224,194,158],[170,250,216,6,122,2,219,220,160,101,3,203,177,126,118,165,221,255,241,104,182,208,242,224,174,182,154,105,159,101,59,245],[49,195,15,129,58,151,191,211,25,0,188,18,255,154,196,187,19,100,45,44,81,126,77,252,255,215,46,17,178,31,149,28],[190,161,139,202,164,74,166,50,6,36,108,230,137,4,31,127,116,123,68,180,140,180,226,119,227,66,181,4,99,56,54,131],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},"StartState":{"machineHash":[32,156,175,218,156,1,130,161,224,171,57,155,37,199,7,13,107,127,109,155,238,57,130,63,226,149,232,90,228,34,154,40],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":816828,"sendCount":0,"logCount":1,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[220,9,133,16,46,65,66,31,213,113,151,134,218,108,161,87,213,48,0,194,33,145,235,24,250,16,37,255,78,177,73,106]},"SegmentToChallenge":290,"InconsistentSegment":{"Start":816827,"Length":171},"SubCuts":[[190,161,139,202,164,74,166,50,6,36,108,230,137,4,31,127,116,123,68,180,140,180,226,119,227,66,181,4,99,56,54,131],[190,161,139,202,164,74,166,50,6,36,108,230,137,4,31,127,116,123,68,180,140,180,226,119,227,66,181,4,99,56,54,131],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[154,96,251,212,5,214,91,243,114,201,209,183,27,98,56,189,99,136,234,0,208,64,20,173,161,30,43,56,237,162,67,101],[255,111,50,246,210,53,135,87,211,175,35,252,205,224,16,214,182,238,166,185,12,31,68,223,19,90,83,125,74,175,216,230],[255,111,50,246,210,53,135,87,211,175,35,252,205,224,16,214,182,238,166,185,12,31,68,223,19,90,83,125,74,175,216,230],[81,231,238,48,84,191,47,239,145,195,48,34,237,104,124,248,71,97,34,113,54,19,158,163,21,88,92,74,99,18,16,135],[244,53,202,65,240,177,165,16,213,92,154,83,105,162,87,255,173,19,175,187,203,30,181,11,92,195,103,164,98,203,26,166],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[226,149,1,42,39,252,126,253,193,188,199,170,79,159,171,104,189,127,245,251,137,246,101,206,135,228,247,198,253,153,88,208],[166,212,178,58,163,60,77,40,154,151,227,246,248,4,149,176,104,91,212,172,246,214,53,71,190,212,208,138,234,23,98,156],[145,45,183,185,83,185,162,54,106,53,59,89,241,51,9,166,165,81,158,49,43,173,173,242,3,200,77,126,177,174,186,140],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[214,93,110,237,223,201,211,169,25,22,243,238,155,8,14,215,92,38,11,100,151,218,113,234,232,217,98,253,126,204,247,103],[214,93,110,237,223,201,211,169,25,22,243,238,155,8,14,215,92,38,11,100,151,218,113,234,232,217,98,253,126,204,247,103],[47,186,145,64,103,191,67,196,137,20,119,28,1,121,116,174,105,178,101,68,47,46,23,106,231,212,109,5,155,38,187,96],[199,112,21,142,217,225,200,0,201,68,137,143,87,173,51,50,95,200,159,63,239,166,246,37,210,138,250,106,47,67,156,235],[199,112,21,142,217,225,200,0,201,68,137,143,87,173,51,50,95,200,159,63,239,166,246,37,210,138,250,106,47,67,156,235],[173,227,105,0,237,180,160,107,175,244,6,61,234,188,254,105,182,136,141,126,133,48,11,82,70,117,85,102,94,21,254,227],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[131,94,48,23,197,13,198,78,191,136,58,7,163,70,136,234,219,182,217,5,76,120,172,42,193,135,27,126,163,108,117,68],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[60,222,233,91,51,67,103,234,154,66,180,135,93,86,55,227,164,184,134,84,32,79,82,175,238,161,41,167,245,57,90,110],[147,52,101,144,214,113,251,3,59,235,142,208,105,138,85,28,235,51,202,142,53,176,134,114,221,109,94,160,61,81,0,243],[143,229,253,25,219,98,136,127,33,70,200,252,144,205,230,134,159,229,225,10,21,122,87,59,231,167,201,179,190,181,46,104],[143,229,253,25,219,98,136,127,33,70,200,252,144,205,230,134,159,229,225,10,21,122,87,59,231,167,201,179,190,181,46,104],[143,229,253,25,219,98,136,127,33,70,200,252,144,205,230,134,159,229,225,10,21,122,87,59,231,167,201,179,190,181,46,104],[143,229,253,25,219,98,136,127,33,70,200,252,144,205,230,134,159,229,225,10,21,122,87,59,231,167,201,179,190,181,46,104],[240,151,223,202,195,78,105,78,23,97,176,186,92,145,91,93,132,21,155,207,70,13,198,152,7,157,186,239,202,190,126,161],[185,75,85,226,136,104,185,49,68,238,115,89,45,232,94,117,188,246,249,131,18,65,96,111,203,158,3,235,12,135,145,100],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[52,224,69,129,30,103,79,131,120,228,62,105,158,40,231,251,172,91,191,68,174,50,188,172,197,243,221,151,112,11,116,107],[114,173,8,21,44,123,70,249,236,224,83,210,54,0,240,110,86,219,66,194,237,193,229,16,128,225,125,239,240,232,207,193],[114,173,8,21,44,123,70,249,236,224,83,210,54,0,240,110,86,219,66,194,237,193,229,16,128,225,125,239,240,232,207,193],[114,173,8,21,44,123,70,249,236,224,83,210,54,0,240,110,86,219,66,194,237,193,229,16,128,225,125,239,240,232,207,193],[114,173,8,21,44,123,70,249,236,224,83,210,54,0,240,110,86,219,66,194,237,193,229,16,128,225,125,239,240,232,207,193],[23,58,181,82,23,204,29,253,204,246,84,232,29,150,183,47,85,64,200,185,165,7,210,121,59,114,45,152,232,76,4,2],[23,58,181,82,23,204,29,253,204,246,84,232,29,150,183,47,85,64,200,185,165,7,210,121,59,114,45,152,232,76,4,2],[23,58,181,82,23,204,29,253,204,246,84,232,29,150,183,47,85,64,200,185,165,7,210,121,59,114,45,152,232,76,4,2],[60,204,82,75,122,92,50,72,192,122,19,47,158,127,150,89,176,97,212,6,185,90,65,33,77,234,2,208,120,195,209,244],[60,204,82,75,122,92,50,72,192,122,19,47,158,127,150,89,176,97,212,6,185,90,65,33,77,234,2,208,120,195,209,244],[77,184,39,25,222,140,33,177,220,230,28,153,1,198,54,42,72,236,56,107,60,95,226,141,0,107,186,34,101,36,82,64],[77,184,39,25,222,140,33,177,220,230,28,153,1,198,54,42,72,236,56,107,60,95,226,141,0,107,186,34,101,36,82,64],[77,184,39,25,222,140,33,177,220,230,28,153,1,198,54,42,72,236,56,107,60,95,226,141,0,107,186,34,101,36,82,64]]},{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":816827,"Length":171},"Cuts":[[190,161,139,202,164,74,166,50,6,36,108,230,137,4,31,127,116,123,68,180,140,180,226,119,227,66,181,4,99,56,54,131],[190,161,139,202,164,74,166,50,6,36,108,230,137,4,31,127,116,123,68,180,140,180,226,119,227,66,181,4,99,56,54,131],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[82,96,231,60,223,41,224,112,9,228,137,186,229,88,183,148,134,19,25,139,214,114,169,46,212,147,21,33,183,91,150,102],[154,96,251,212,5,214,91,243,114,201,209,183,27,98,56,189,99,136,234,0,208,64,20,173,161,30,43,56,237,162,67,101],[255,111,50,246,210,53,135,87,211,175,35,252,205,224,16,214,182,238,166,185,12,31,68,223,19,90,83,125,74,175,216,230],[255,111,50,246,210,53,135,87,211,175,35,252,205,224,16,214,182,238,166,185,12,31,68,223,19,90,83,125,74,175,216,230],[81,231,238,48,84,191,47,239,145,195,48,34,237,104,124,248,71,97,34,113,54,19,158,163,21,88,92,74,99,18,16,135],[244,53,202,65,240,177,165,16,213,92,154,83,105,162,87,255,173,19,175,187,203,30,181,11,92,195,103,164,98,203,26,166],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[207,215,117,100,152,64,94,114,112,137,1,25,93,14,76,230,185,94,214,140,193,45,6,66,199,111,201,199,207,28,89,128],[226,149,1,42,39,252,126,253,193,188,199,170,79,159,171,104,189,127,245,251,137,246,101,206,135,228,247,198,253,153,88,208],[166,212,178,58,163,60,77,40,154,151,227,246,248,4,149,176,104,91,212,172,246,214,53,71,190,212,208,138,234,23,98,156],[145,45,183,185,83,185,162,54,106,53,59,89,241,51,9,166,165,81,158,49,43,173,173,242,3,200,77,126,177,174,186,140],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[149,48,173,0,154,194,178,199,69,7,58,225,197,137,148,54,253,153,33,66,46,135,161,28,99,226,179,83,32,222,146,112],[214,93,110,237,223,201,211,169,25,22,243,238,155,8,14,215,92,38,11,100,151,218,113,234,232,217,98,253,126,204,247,103],[214,93,110,237,223,201,211,169,25,22,243,238,155,8,14,215,92,38,11,100,151,218,113,234,232,217,98,253,126,204,247,103],[47,186,145,64,103,191,67,196,137,20,119,28,1,121,116,174,105,178,101,68,47,46,23,106,231,212,109,5,155,38,187,96],[199,112,21,142,217,225,200,0,201,68,137,143,87,173,51,50,95,200,159,63,239,166,246,37,210,138,250,106,47,67,156,235],[199,112,21,142,217,225,200,0,201,68,137,143,87,173,51,50,95,200,159,63,239,166,246,37,210,138,250,106,47,67,156,235],[173,227,105,0,237,180,160,107,175,244,6,61,234,188,254,105,182,136,141,126,133,48,11,82,70,117,85,102,94,21,254,227],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[140,68,80,191,253,86,99,218,188,116,109,2,104,56,180,245,201,141,107,95,180,37,210,25,22,142,118,125,233,233,191,248],[131,94,48,23,197,13,198,78,191,136,58,7,163,70,136,234,219,182,217,5,76,120,172,42,193,135,27,126,163,108,117,68],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[182,213,163,187,82,212,31,116,71,214,78,99,18,149,17,197,99,134,219,225,213,110,53,233,24,220,58,96,66,25,0,32],[60,222,233,91,51,67,103,234,154,66,180,135,93,86,55,227,164,184,134,84,32,79,82,175,238,161,41,167,245,57,90,110],[147,52,101,144,214,113,251,3,59,235,142,208,105,138,85,28,235,51,202,142,53,176,134,114,221,109,94,160,61,81,0,243],[143,229,253,25,219,98,136,127,33,70,200,252,144,205,230,134,159,229,225,10,21,122,87,59,231,167,201,179,190,181,46,104],[143,229,253,25,219,98,136,127,33,70,200,252,144,205,230,134,159,229,225,10,21,122,87,59,231,167,201,179,190,181,46,104],[143,229,253,25,219,98,136,127,33,70,200,252,144,205,230,134,159,229,225,10,21,122,87,59,231,167,201,179,190,181,46,104],[143,229,253,25,219,98,136,127,33,70,200,252,144,205,230,134,159,229,225,10,21,122,87,59,231,167,201,179,190,181,46,104],[240,151,223,202,195,78,105,78,23,97,176,186,92,145,91,93,132,21,155,207,70,13,198,152,7,157,186,239,202,190,126,161],[185,75,85,226,136,104,185,49,68,238,115,89,45,232,94,117,188,246,249,131,18,65,96,111,203,158,3,235,12,135,145,100],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[123,216,99,69,229,43,161,157,220,185,190,109,61,177,192,41,60,27,55,250,127,110,249,103,151,226,47,248,10,4,179,71],[52,224,69,129,30,103,79,131,120,228,62,105,158,40,231,251,172,91,191,68,174,50,188,172,197,243,221,151,112,11,116,107],[114,173,8,21,44,123,70,249,236,224,83,210,54,0,240,110,86,219,66,194,237,193,229,16,128,225,125,239,240,232,207,193],[114,173,8,21,44,123,70,249,236,224,83,210,54,0,240,110,86,219,66,194,237,193,229,16,128,225,125,239,240,232,207,193],[114,173,8,21,44,123,70,249,236,224,83,210,54,0,240,110,86,219,66,194,237,193,229,16,128,225,125,239,240,232,207,193],[114,173,8,21,44,123,70,249,236,224,83,210,54,0,240,110,86,219,66,194,237,193,229,16,128,225,125,239,240,232,207,193],[23,58,181,82,23,204,29,253,204,246,84,232,29,150,183,47,85,64,200,185,165,7,210,121,59,114,45,152,232,76,4,2],[23,58,181,82,23,204,29,253,204,246,84,232,29,150,183,47,85,64,200,185,165,7,210,121,59,114,45,152,232,76,4,2],[23,58,181,82,23,204,29,253,204,246,84,232,29,150,183,47,85,64,200,185,165,7,210,121,59,114,45,152,232,76,4,2],[60,204,82,75,122,92,50,72,192,122,19,47,158,127,150,89,176,97,212,6,185,90,65,33,77,234,2,208,120,195,209,244],[60,204,82,75,122,92,50,72,192,122,19,47,158,127,150,89,176,97,212,6,185,90,65,33,77,234,2,208,120,195,209,244],[77,184,39,25,222,140,33,177,220,230,28,153,1,198,54,42,72,236,56,107,60,95,226,141,0,107,186,34,101,36,82,64],[77,184,39,25,222,140,33,177,220,230,28,153,1,198,54,42,72,236,56,107,60,95,226,141,0,107,186,34,101,36,82,64],[77,184,39,25,222,140,33,177,220,230,28,153,1,198,54,42,72,236,56,107,60,95,226,141,0,107,186,34,101,36,82,64]]},"StartState":{"machineHash":[134,104,83,112,79,139,211,129,147,30,244,252,29,225,59,130,113,36,142,237,172,70,115,132,170,210,169,63,161,67,217,19],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":816896,"sendCount":0,"logCount":1,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[220,9,133,16,46,65,66,31,213,113,151,134,218,108,161,87,213,48,0,194,33,145,235,24,250,16,37,255,78,177,73,106]},"SegmentToChallenge":69,"InconsistentSegment":{"Start":816896,"Length":1},"SubCuts":[[131,94,48,23,197,13,198,78,191,136,58,7,163,70,136,234,219,182,217,5,76,120,172,42,193,135,27,126,163,108,117,68],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},{"Kind":"OneStepProof","Assertion":{"beforeState":{"machineHash":[240,192,227,118,84,230,156,203,61,223,23,132,232,48,159,241,229,133,210,100,96,157,71,163,141,174,30,29,197,65,193,214],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":766873,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"afterState":{"machineHash":[186,166,207,173,26,158,255,82,238,77,82,93,135,94,59,41,57,223,67,92,158,68,231,247,8,33,172,61,160,6,57,103],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":0,"gasUsed":835637,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]}},"PrevBisection":{"ChallengedSegment":{"Start":816896,"Length":1},"Cuts":[[131,94,48,23,197,13,198,78,191,136,58,7,163,70,136,234,219,182,217,5,76,120,172,42,193,135,27,126,163,108,117,68],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},"SegmentToChallenge":0,"ChallengedSegment":{"Start":816896,"Length":1},"PreviousCut":{"machineHash":[134,104,83,112,79,139,211,129,147,30,244,252,29,225,59,130,113,36,142,237,172,70,115,132,170,210,169,63,161,67,217,19],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":816896,"sendCount":0,"logCount":1,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[220,9,133,16,46,65,66,31,213,113,151,134,218,108,161,87,213,48,0,194,33,145,235,24,250,16,37,255,78,177,73,106]},"ProofData":"0x72010000000000000000000000000000000000000000000000000000000000000000000093d28997736f54200a316dec9b062720e8b0d6ddc00a82ddddea84bdfeb5e955bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a0000000000000000000000000000000000000000000000000000000000000001fa20c65d5c4489f816da005c7eb07bfbbee9cf1a55a6ea8039816f4633a1ea920000000000000000000000000000000000000000000000000000000000000034024cb10f609e0e48dda002713bce746f47193dc70d271089e0f3806ad3e494a6df000000000000000000000000000000000000000000000000000000000000080b02bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a0000000000000000000000000000000000000000000000000000000000000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff388ff993b51a98d92606ba2be0a3143b8d466344c42d96bb4188cdff3db67b3890272010b9be6b9f6b0ec4ad126c429961f3951773f7381b700000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000231f401d00000000000000000000000000000000000000000000000000000000000000c0ece83efd40ff2c9c69c406a49cbd4e7019fc5807db782ea78e3ee698923a412c000000000000000000000000000000000000000000000000000000000000000344edde536e3f4df60ef7ec43bc928f7438fa9804cb64ef42045ab4781bbc0bb300000000000000000000000000000000000000000000000000000000000000001567aa7175e04611d194275bb504cc64e920959dd01df9d86ab047367aa4c53400000000000000000000000035248943dcb4b8e5dbbb67d1f7d3ab1bc36ce9a8000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100ec7a56f92696a470fa3ced485f2121e5e76d10284cbc247d1fef07203bf7a37dc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47002","BufferProofData":"0x"}],"AsserterError":"execution reverted: TOO_MANY_MESSAGES"} \ No newline at end of file +{"ChallengedAssertion":{"beforeState":{"machineHash":[143,98,77,89,7,174,68,16,102,217,175,184,111,255,113,119,81,83,45,86,204,184,69,156,19,9,87,11,247,164,133,59],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":766873,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"afterState":{"machineHash":[110,178,70,119,39,103,33,82,24,144,250,144,214,103,82,143,107,231,41,239,49,231,187,94,93,252,109,243,17,5,190,91],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":0,"gasUsed":837224,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]}},"Messages":[{"Kind":11,"Sender":"0x9be6b9f6b0ec4ad126c429961f3951773f7381b7","InboxSeqNum":0,"GasPrice":589250589,"Data":"0xece83efd40ff2c9c69c406a49cbd4e7019fc5807db782ea78e3ee698923a412c000000000000000000000000000000000000000000000000000000000000000344edde536e3f4df60ef7ec43bc928f7438fa9804cb64ef42045ab4781bbc0bb300000000000000000000000000000000000000000000000000000000000000001567aa7175e04611d194275bb504cc64e920959dd01df9d86ab047367aa4c53400000000000000000000000035248943dcb4b8e5dbbb67d1f7d3ab1bc36ce9a8","ChainTime":{"BlockNum":4,"Timestamp":40}}],"Moves":[{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":766873,"Length":70351},"Cuts":[[200,75,219,152,177,44,152,161,216,94,150,235,74,175,88,46,163,169,174,157,186,8,114,5,17,80,247,221,136,3,5,143],[132,200,197,91,13,146,222,190,45,91,132,142,238,68,240,125,29,145,35,251,206,28,200,126,75,21,221,165,75,53,236,115]]},"StartState":{"machineHash":[143,98,77,89,7,174,68,16,102,217,175,184,111,255,113,119,81,83,45,86,204,184,69,156,19,9,87,11,247,164,133,59],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":766873,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"SegmentToChallenge":0,"InconsistentSegment":{"Start":766873,"Length":70351},"SubCuts":[[200,75,219,152,177,44,152,161,216,94,150,235,74,175,88,46,163,169,174,157,186,8,114,5,17,80,247,221,136,3,5,143],[14,205,36,68,87,134,232,231,43,42,160,198,93,7,142,239,130,52,205,120,63,210,35,102,182,10,118,239,34,74,14,90],[184,43,35,134,26,255,124,205,143,20,81,157,201,126,4,204,156,77,53,162,214,101,230,156,60,82,140,48,18,151,141,240],[116,241,113,224,118,114,82,16,222,191,191,141,111,143,227,15,185,76,231,251,201,250,144,116,203,214,132,31,173,152,86,151],[98,238,56,146,76,224,17,114,130,217,118,117,40,190,138,34,94,20,174,100,88,195,124,106,154,178,138,202,17,2,142,16],[152,109,161,104,221,137,27,146,222,55,190,95,25,157,224,24,82,239,253,132,82,135,159,158,239,11,136,208,35,126,193,94],[139,209,172,18,195,100,133,114,215,60,154,17,202,45,202,253,254,132,140,161,201,38,92,134,73,167,62,198,176,224,122,214],[74,106,254,149,184,138,134,120,155,225,10,231,29,73,125,90,209,172,146,9,26,68,0,246,16,112,226,201,107,162,157,138],[239,46,84,171,174,193,195,4,8,178,146,75,135,195,252,201,220,117,36,85,33,178,67,205,13,12,27,43,245,111,210,134],[251,43,153,133,212,18,131,100,40,226,11,177,60,126,19,48,95,228,169,0,45,141,191,176,148,98,205,240,253,131,233,93],[26,253,250,46,170,90,86,0,149,120,76,95,204,196,125,150,243,44,97,169,194,34,13,103,203,195,212,30,170,13,213,124],[135,196,232,235,104,28,21,15,28,12,107,6,79,245,193,91,125,27,127,168,152,200,191,2,184,110,174,61,74,115,98,242],[90,3,11,184,6,203,45,42,220,39,123,229,165,127,231,105,212,83,56,73,199,82,38,130,53,160,234,188,213,234,143,205],[248,189,170,227,236,102,84,93,245,176,238,10,243,158,186,163,228,1,222,11,81,171,52,0,39,221,152,191,62,159,243,40],[120,164,224,145,79,102,195,64,240,16,155,15,91,252,27,18,10,37,116,255,115,39,70,140,161,103,56,134,77,107,28,246],[140,120,59,103,20,163,198,72,209,162,239,171,122,248,150,248,189,104,244,166,251,174,40,58,102,235,252,115,128,87,214,250],[186,104,182,140,197,169,122,15,126,39,227,208,22,251,171,40,56,149,249,171,170,46,199,224,158,11,226,80,144,197,64,58],[106,56,201,96,203,104,16,224,16,217,46,51,131,36,49,135,69,175,244,34,189,56,87,145,137,174,40,247,198,12,202,161],[11,169,165,173,156,113,131,6,142,10,241,244,111,183,91,46,215,165,69,102,8,57,18,9,124,156,68,93,188,198,41,2],[30,142,106,140,161,125,239,206,38,124,220,193,82,77,89,176,142,244,6,74,111,128,236,233,114,180,35,219,65,236,102,18],[172,122,146,97,199,5,231,51,85,200,226,163,158,197,62,196,63,116,146,243,190,1,10,23,109,217,152,37,63,78,15,17],[251,146,66,75,75,89,186,1,231,111,191,156,223,218,192,72,189,102,220,169,43,102,20,149,237,180,28,175,171,61,25,239],[44,20,50,44,151,1,218,104,146,46,144,194,101,31,87,172,182,74,158,69,100,212,217,122,20,26,26,121,238,197,107,237],[166,222,14,198,143,82,171,255,22,249,180,98,232,104,154,225,91,70,201,35,201,91,86,155,193,43,191,122,253,87,46,240],[107,10,169,92,189,22,46,249,251,69,221,17,82,233,131,210,160,217,21,188,111,192,100,104,70,166,212,195,89,142,122,172],[134,151,216,224,170,192,200,87,155,247,181,114,109,54,114,191,194,134,52,53,210,27,205,28,126,75,224,202,119,111,226,217],[186,190,70,108,10,218,71,85,126,250,3,32,65,19,171,40,96,77,251,42,79,154,127,119,38,215,102,222,16,220,17,0],[222,89,148,14,101,120,147,220,14,42,185,98,189,109,108,88,10,9,173,16,92,40,167,235,51,195,3,176,26,228,58,196],[175,43,118,211,13,10,7,2,85,10,178,200,120,182,193,229,254,205,63,237,21,252,91,104,183,24,154,251,196,81,186,121],[32,67,179,165,26,97,37,118,148,153,23,124,90,195,32,45,135,169,58,197,103,34,215,217,218,58,11,64,104,48,207,129],[120,196,151,205,140,33,180,179,59,148,45,26,43,241,50,95,210,154,47,57,204,169,55,235,33,73,126,100,237,68,152,92],[82,190,141,96,53,145,173,247,228,76,147,73,61,29,63,99,154,22,29,242,254,228,19,48,59,168,164,62,141,33,242,184],[15,104,135,188,111,165,254,235,100,24,84,68,196,41,151,176,175,55,158,70,137,75,66,6,125,95,83,164,221,50,186,119],[255,220,122,34,18,148,57,232,71,137,95,161,224,101,188,88,254,113,137,57,7,53,74,182,136,63,237,72,164,83,192,127],[49,218,51,8,239,198,8,224,27,115,161,83,186,55,155,29,29,41,197,200,93,144,205,70,162,201,192,44,105,242,6,203],[228,39,32,21,31,55,91,103,69,140,87,69,227,85,79,208,166,72,10,38,149,245,238,239,242,123,46,224,25,100,138,101],[247,22,186,226,81,112,50,79,245,164,245,54,253,47,26,2,101,36,105,231,224,221,194,182,157,216,150,20,143,25,217,247],[5,110,84,196,197,247,69,144,210,68,153,161,178,219,60,10,15,164,173,142,233,251,215,252,238,224,105,205,180,109,214,53],[87,228,245,154,90,182,135,162,141,113,83,67,2,80,155,18,58,92,36,4,157,10,36,195,131,132,251,17,47,93,106,62],[64,21,115,164,17,169,192,199,22,173,119,38,1,11,241,143,76,105,2,6,170,47,38,104,95,166,66,193,14,172,55,92],[191,195,159,124,73,83,34,22,8,4,64,155,40,1,103,165,82,71,207,12,113,39,47,45,102,4,233,212,25,169,50,96],[140,85,22,239,170,126,69,70,29,204,31,212,158,19,144,186,174,189,192,29,97,81,69,173,150,64,254,63,83,52,110,139],[122,165,26,6,213,183,245,114,164,35,186,113,107,87,226,143,133,133,148,135,169,234,71,104,240,62,39,25,79,237,30,106],[103,244,13,211,44,196,131,236,136,155,163,236,234,60,135,201,167,245,5,112,115,107,47,154,34,163,15,39,158,72,69,153],[82,244,228,82,15,176,29,13,42,111,149,165,142,168,140,22,209,229,121,177,200,247,153,123,195,130,44,81,121,57,169,31],[134,40,140,128,76,240,80,186,89,246,161,76,27,178,65,85,10,57,114,107,139,223,47,38,183,108,70,128,130,93,237,21],[39,251,23,20,210,79,69,69,151,79,232,61,220,113,254,155,114,44,130,208,254,127,154,253,13,76,115,100,85,60,161,173],[244,189,127,180,202,0,157,64,206,223,17,168,224,101,199,141,58,224,73,131,45,7,98,106,95,66,193,51,17,150,250,4],[217,154,185,150,52,75,229,149,29,165,231,238,164,77,250,2,227,14,141,90,111,149,6,128,147,3,64,185,191,198,176,35],[33,119,112,238,186,99,181,59,36,84,140,165,56,224,208,89,9,102,73,114,106,110,59,68,171,66,189,36,90,195,123,210],[12,247,123,58,5,206,30,132,118,190,108,136,232,118,223,24,104,237,253,73,139,171,211,190,3,72,109,137,96,146,78,212],[37,246,83,104,195,182,90,6,206,193,154,127,210,88,179,134,210,5,77,103,113,192,4,3,156,158,119,119,64,82,186,68],[227,240,219,108,8,167,132,13,41,125,227,214,214,236,133,31,45,83,36,19,19,133,49,117,60,130,168,201,182,237,82,165],[192,23,15,118,26,171,245,85,52,208,114,127,163,70,30,26,193,217,90,120,195,83,90,118,49,208,202,180,67,192,149,195],[52,158,117,111,242,217,201,243,190,203,40,116,193,61,176,199,169,133,195,239,209,237,115,122,47,101,231,198,92,152,156,160],[75,127,154,10,157,124,172,156,232,107,108,79,46,156,162,113,20,67,146,241,170,169,1,111,127,130,38,251,214,222,76,79],[16,243,130,188,74,172,13,68,208,33,46,180,166,38,112,143,160,109,9,250,119,119,21,182,91,52,57,128,253,192,231,157],[185,101,177,29,14,22,21,48,99,132,242,208,228,86,29,101,168,213,47,168,88,254,200,198,182,39,214,6,203,226,79,207],[64,161,25,253,206,200,1,56,236,171,184,39,2,223,159,103,14,254,255,197,58,159,215,153,18,87,173,186,172,45,138,203],[43,73,57,19,216,172,33,89,74,224,64,195,133,154,95,47,181,212,129,38,167,219,218,8,13,115,188,172,57,184,245,125],[42,126,244,200,128,75,162,87,181,36,105,47,88,93,14,105,32,167,104,94,32,99,48,218,173,189,142,85,70,11,0,114],[5,68,44,48,219,56,136,55,89,61,11,116,91,168,235,17,0,13,7,48,112,57,221,198,222,131,38,54,240,49,86,243],[64,115,205,207,197,236,127,88,44,143,177,217,135,29,93,102,4,107,67,98,77,233,170,174,174,235,33,86,151,165,112,53],[147,175,231,148,19,200,29,98,178,20,133,15,17,223,8,21,71,16,1,145,112,149,66,232,42,131,247,104,114,147,54,216],[158,144,218,196,101,39,190,252,109,204,195,211,227,106,35,21,245,88,71,205,109,181,146,60,111,132,22,94,150,78,189,79],[78,189,156,182,107,175,142,96,58,125,196,14,133,55,63,199,72,111,29,255,183,33,232,180,249,148,45,109,54,213,183,114],[41,92,152,24,172,202,156,220,117,180,94,26,230,155,145,247,237,8,190,226,112,73,164,118,121,58,177,210,43,191,184,206],[10,170,199,36,151,26,108,33,61,93,191,96,97,192,48,213,162,28,177,181,60,185,97,98,44,43,203,21,2,70,130,39],[212,247,132,44,75,148,93,65,2,237,7,102,176,79,108,147,46,144,191,234,0,124,209,250,190,135,236,165,47,1,222,212],[100,205,225,255,163,110,252,94,151,228,208,148,176,174,174,99,61,37,170,66,185,176,79,139,7,162,227,158,118,213,59,198],[84,67,32,211,174,139,200,153,195,201,40,143,194,72,206,207,76,240,185,94,173,123,127,46,34,89,187,227,131,71,206,64],[100,232,125,71,12,65,156,2,119,61,185,27,10,107,100,118,94,69,198,228,234,54,63,253,181,139,175,175,247,126,180,0],[170,33,96,137,26,168,6,213,60,249,228,1,167,59,233,153,100,146,102,5,139,197,70,35,230,48,176,128,68,7,64,202],[48,1,155,219,85,92,193,45,17,32,21,209,146,1,28,190,3,250,35,253,141,64,153,31,6,107,182,165,131,78,201,53],[49,110,97,51,224,29,121,79,207,82,138,201,131,135,195,171,227,179,239,246,81,15,241,165,67,222,84,75,64,68,110,93],[183,238,159,92,89,116,244,226,78,110,111,232,136,193,239,47,72,248,139,104,14,173,147,114,28,11,84,158,147,93,62,171],[201,28,199,176,60,172,78,68,219,187,153,54,245,76,159,133,27,198,34,99,163,129,201,78,215,28,237,143,180,57,28,28],[128,236,226,119,194,161,11,113,128,130,32,25,76,119,39,130,113,212,8,186,142,73,243,89,123,132,116,140,79,59,108,166],[49,151,13,91,146,209,124,110,182,193,234,208,26,71,95,224,113,75,113,74,179,51,113,123,171,184,50,243,147,215,140,151],[230,126,183,141,198,209,152,97,127,35,8,102,250,73,179,14,253,76,139,54,49,232,93,175,109,234,235,232,120,196,41,191],[96,157,77,161,156,93,214,191,31,151,202,67,229,20,5,213,94,25,58,195,72,183,133,126,34,121,10,245,83,210,213,62],[103,70,124,248,1,19,136,168,248,194,228,19,87,163,236,153,98,234,227,174,67,212,43,132,120,241,147,75,15,139,104,81],[106,42,181,17,133,39,169,138,37,119,224,248,237,132,66,143,32,211,52,82,170,34,81,66,200,108,72,2,18,199,150,196],[55,42,98,141,243,127,99,5,127,148,173,240,156,235,7,173,222,254,111,146,80,35,166,179,182,151,245,98,62,234,155,85],[221,191,52,55,126,180,37,135,195,91,207,28,181,27,220,187,224,220,89,21,30,43,37,208,83,10,23,202,79,229,215,104],[239,129,208,80,49,189,160,214,205,139,47,76,118,191,247,90,155,11,222,135,74,84,183,232,226,255,83,5,72,104,243,123],[163,128,38,9,234,138,29,29,20,37,120,219,95,3,125,71,85,156,7,194,244,162,65,240,222,205,7,227,24,9,31,141],[98,177,9,30,199,109,116,24,21,147,97,169,183,58,128,187,32,233,135,65,117,60,141,78,236,32,46,235,95,168,61,147],[188,236,35,151,83,169,183,217,15,131,28,5,41,227,131,128,110,91,33,116,136,51,234,127,138,21,107,172,128,31,207,82],[193,131,64,143,71,27,73,69,248,63,170,41,70,150,248,252,240,59,224,57,97,70,227,85,162,77,142,11,123,180,173,206],[101,147,84,245,25,53,152,103,161,108,127,73,168,86,246,206,80,180,17,67,36,184,92,74,125,74,236,7,65,227,27,182],[177,125,14,61,232,69,131,194,210,247,74,136,67,201,246,230,55,65,16,65,0,80,32,153,196,231,78,228,36,92,20,22],[240,87,240,126,70,121,163,199,80,64,143,141,160,130,149,112,59,95,248,209,177,202,45,50,41,248,16,32,182,22,43,94],[148,172,43,165,188,186,112,21,33,214,103,47,165,189,140,57,169,22,17,41,249,187,233,141,65,72,255,191,177,199,186,19],[250,14,1,59,43,210,69,83,201,18,66,235,104,200,248,223,151,218,8,203,93,125,189,29,109,32,1,149,148,31,10,158],[14,182,45,168,17,141,249,231,138,249,66,76,86,15,12,78,170,146,172,199,113,61,249,183,142,169,215,221,231,199,10,29],[107,231,33,31,66,202,146,30,67,202,100,193,126,234,245,250,68,244,29,28,219,252,217,87,22,57,148,241,152,129,221,253],[119,172,248,55,104,101,97,34,28,191,177,33,141,248,237,7,157,125,95,25,196,122,120,26,186,236,97,242,179,64,219,26],[191,155,56,223,42,94,204,21,223,17,228,58,150,35,229,239,91,247,163,128,13,157,123,241,155,211,4,164,109,133,237,17],[122,5,115,216,53,110,144,213,90,89,168,78,147,190,170,84,24,216,83,219,238,248,128,232,104,237,116,61,208,115,199,217],[5,116,31,55,9,144,41,160,73,67,113,1,215,188,229,32,81,35,156,237,116,169,144,20,16,125,38,214,146,234,167,231],[129,251,65,188,178,128,182,15,20,231,61,49,5,42,253,162,155,122,154,177,217,35,98,15,38,175,140,152,253,112,31,0],[18,229,222,222,71,250,187,102,81,79,161,151,75,85,226,242,21,244,171,25,201,70,195,143,148,99,19,10,155,104,80,173],[62,186,187,89,142,72,235,143,84,221,205,193,249,90,218,113,95,46,170,175,27,69,87,93,127,49,172,195,101,1,255,228],[20,19,132,101,238,201,11,137,233,193,222,144,60,7,147,173,89,120,24,221,149,168,145,34,191,32,54,250,7,220,10,92],[138,107,201,95,3,228,62,248,30,132,189,216,153,243,130,183,146,75,89,164,215,201,120,49,97,145,188,21,219,201,141,125],[190,87,42,8,151,125,221,58,224,91,230,40,12,22,91,209,159,106,92,113,101,8,181,66,11,77,145,192,253,171,239,103],[236,66,173,70,14,50,6,23,104,122,83,239,28,128,212,112,42,103,73,17,182,20,234,50,211,26,17,25,171,139,110,122],[98,180,211,196,52,68,216,210,224,49,86,32,55,156,197,181,232,139,10,152,42,135,105,1,86,230,159,213,139,18,84,105],[108,197,32,208,94,214,110,188,252,105,246,182,239,55,65,230,205,185,44,45,192,243,70,169,132,52,215,208,176,228,167,155],[124,223,34,11,199,71,14,156,19,43,240,7,177,75,135,27,62,186,46,228,51,174,236,35,33,14,10,86,40,32,38,49],[215,146,237,8,169,209,14,156,165,31,198,226,86,251,97,67,244,156,52,14,114,156,254,164,127,181,171,20,179,163,198,178],[233,191,210,218,65,41,141,123,133,185,97,22,54,62,162,46,220,123,129,12,35,36,124,153,151,152,3,69,137,215,108,204],[129,104,158,210,39,238,195,2,125,190,201,229,79,226,165,91,134,237,15,190,229,94,41,9,64,29,76,82,126,15,110,214],[141,123,222,254,6,55,169,110,64,71,103,150,21,85,15,41,203,207,235,10,118,224,198,15,63,94,155,222,141,126,32,238],[64,87,159,199,18,178,215,170,46,37,35,108,33,221,162,69,158,99,4,43,236,91,123,189,25,150,144,136,77,64,24,178],[45,76,98,172,80,6,223,57,152,240,234,159,218,22,107,30,55,208,178,124,212,111,113,60,35,62,102,11,121,14,255,186],[15,118,47,98,98,20,28,246,213,179,135,157,17,160,201,122,141,202,171,80,112,133,133,134,23,248,187,26,164,61,15,183],[236,132,148,128,231,50,234,88,49,33,132,48,164,67,50,157,143,74,220,156,168,53,47,140,150,55,59,220,205,156,173,95],[95,84,175,196,73,16,202,50,160,168,200,98,163,193,147,42,23,25,163,6,158,22,231,207,163,133,214,49,183,60,199,17],[253,38,134,46,240,203,235,89,146,69,251,244,61,201,192,39,138,198,146,187,115,235,223,155,161,175,217,170,27,5,114,69],[248,154,233,252,203,194,4,164,116,39,86,6,241,74,23,208,192,20,8,17,50,180,133,222,239,109,57,125,105,89,20,70],[215,219,214,252,190,142,61,128,179,241,146,235,45,39,59,62,236,46,54,133,164,85,192,8,237,78,118,85,97,35,245,32],[8,98,168,212,53,110,77,185,114,109,155,170,160,24,232,173,104,225,141,59,215,158,148,148,25,224,0,205,48,121,92,63],[112,12,142,123,233,62,198,237,60,108,148,2,238,184,126,106,7,204,157,184,45,251,200,136,25,215,35,41,77,58,204,110],[126,132,205,128,129,46,146,220,42,162,245,74,146,118,226,159,244,253,162,9,185,72,94,118,183,193,147,196,40,150,118,109],[157,80,60,197,131,227,248,60,135,242,34,235,8,225,17,77,99,117,154,246,227,87,4,236,61,112,194,10,222,209,18,68],[223,193,253,187,179,237,133,33,190,31,224,61,230,107,81,242,202,214,240,178,193,143,102,99,111,141,182,199,192,10,65,128],[236,102,201,12,9,191,43,83,152,77,10,124,16,1,230,164,107,23,7,152,201,196,92,110,157,121,66,238,181,180,219,95],[91,161,147,235,211,182,101,137,88,78,42,228,44,132,226,45,244,88,143,83,223,229,125,82,144,71,242,116,9,242,201,161],[244,104,232,215,149,171,225,40,28,74,186,130,42,62,143,73,204,40,35,76,158,223,109,120,235,21,119,28,113,147,222,165],[33,163,224,139,231,247,1,165,186,202,209,167,2,253,57,213,236,239,68,198,24,105,40,130,172,169,229,193,166,4,234,72],[69,188,149,201,83,241,95,235,57,80,247,116,235,44,228,24,45,236,247,5,251,140,142,185,185,4,253,93,219,196,178,213],[150,226,106,10,18,224,157,179,169,199,5,44,128,78,104,228,252,84,130,19,226,217,23,195,4,41,133,110,84,248,161,6],[109,167,178,177,181,26,89,16,99,183,119,58,186,224,237,245,219,181,149,105,152,153,181,166,8,79,41,249,213,87,204,207],[245,79,98,55,181,225,71,51,162,153,143,8,41,141,127,237,187,180,112,98,181,114,214,224,54,48,138,187,69,110,195,209],[245,88,109,11,15,25,62,101,185,176,44,95,46,244,139,11,78,24,22,186,25,184,190,238,231,251,47,118,188,127,98,57],[214,60,143,3,120,191,97,38,69,84,159,5,87,53,146,146,205,160,35,135,212,0,167,216,35,23,146,237,128,63,152,42],[185,147,132,218,58,88,18,244,157,243,145,232,200,143,3,93,212,130,67,68,179,94,32,90,143,227,32,215,53,150,134,34],[197,206,33,243,211,182,88,53,150,212,213,239,236,215,242,22,142,84,120,7,46,119,21,24,1,2,39,144,33,112,246,125],[130,218,71,81,78,168,30,60,148,204,52,62,30,215,148,10,87,180,51,61,207,203,225,4,89,127,87,165,102,178,74,206],[239,131,33,219,162,214,50,65,189,214,210,216,11,112,1,119,3,174,33,135,77,43,221,53,44,73,41,67,227,36,49,222],[219,0,59,221,249,114,161,92,31,123,75,54,109,7,118,139,148,87,66,236,116,91,77,112,237,44,100,45,32,34,188,24],[59,127,254,231,97,254,245,0,101,89,33,36,87,154,121,103,191,19,71,55,105,48,186,27,98,210,188,13,15,238,178,27],[229,137,34,40,12,41,8,21,48,34,42,245,14,249,76,181,60,221,91,151,226,101,211,200,164,101,84,180,82,114,239,71],[182,56,166,116,240,218,52,105,13,183,200,71,81,215,77,127,52,102,210,92,158,78,49,248,116,47,162,152,74,236,104,199],[226,188,218,100,50,222,232,226,59,239,167,11,126,142,152,41,240,22,254,90,116,164,180,197,209,218,46,41,74,10,94,65],[10,29,30,3,236,114,216,81,180,44,149,104,119,147,123,52,104,183,165,94,78,166,15,146,38,119,208,23,216,46,192,74],[90,13,195,222,126,47,127,83,56,65,0,31,51,6,193,58,14,63,76,225,42,113,93,115,179,245,16,145,241,83,89,81],[47,202,241,22,80,172,70,217,17,77,250,56,175,196,93,222,150,188,39,233,207,26,144,224,117,69,24,2,53,159,243,202],[227,137,139,133,180,247,182,30,194,45,60,172,246,70,243,99,43,225,78,115,248,7,166,21,10,57,21,169,9,189,68,237],[96,100,14,34,31,12,147,20,138,0,29,238,46,112,145,226,143,243,16,85,70,69,213,253,48,146,236,165,80,10,147,116],[100,7,173,220,174,23,97,242,160,178,145,161,12,48,252,158,111,201,93,137,44,23,199,53,143,178,207,240,122,29,32,218],[93,168,190,8,1,148,178,146,121,125,172,34,47,75,214,198,134,177,211,24,255,46,116,40,17,195,132,0,118,230,86,184],[104,30,13,189,160,33,150,206,96,70,129,35,218,19,72,25,94,143,169,138,152,87,126,113,81,101,209,55,94,217,232,118],[116,199,223,78,242,226,179,76,241,25,104,57,254,139,8,246,228,214,247,190,101,57,139,175,74,175,224,45,83,110,204,251],[191,100,148,173,10,70,228,63,97,63,9,164,119,160,75,25,124,153,55,113,66,41,213,134,77,181,164,179,80,132,172,236],[236,186,212,83,181,91,181,51,4,205,45,212,20,53,20,122,148,251,125,193,133,77,89,14,97,34,234,16,113,17,126,17],[137,203,247,234,113,233,156,7,84,236,67,42,247,20,182,173,66,94,50,168,170,83,35,240,138,234,112,207,152,77,46,161],[166,141,12,227,67,19,143,166,220,159,131,165,168,15,14,109,218,174,197,44,84,157,220,244,74,2,51,146,191,222,64,171],[21,177,129,71,116,150,142,154,199,244,36,239,214,123,124,9,85,54,9,118,20,17,209,170,178,131,64,171,237,27,30,218],[153,13,30,101,70,43,213,184,23,81,141,167,236,80,170,66,47,34,86,0,183,8,211,51,20,0,68,224,182,228,124,113],[198,29,33,209,136,92,8,113,99,158,242,247,42,206,214,56,205,47,13,50,26,228,10,51,175,215,111,91,26,131,220,33],[36,159,226,144,54,147,11,183,249,0,13,211,184,21,251,55,57,140,167,107,114,151,242,44,87,240,135,5,142,115,139,179],[184,227,150,14,19,169,26,214,91,174,44,194,223,61,62,75,234,55,200,137,188,13,205,134,7,156,62,13,161,100,212,97],[224,168,184,31,202,216,144,186,58,32,8,114,213,225,149,149,94,161,114,5,235,79,66,119,17,80,57,27,164,76,245,34],[153,120,10,209,13,51,223,90,50,94,113,109,117,61,214,246,45,185,220,130,248,246,192,172,13,238,63,98,220,21,147,157],[135,138,122,225,205,37,25,83,56,131,102,8,53,142,110,95,104,58,98,159,254,156,49,177,218,201,221,181,231,86,84,180],[214,212,92,231,230,16,90,171,70,183,201,142,178,43,128,72,98,240,172,199,216,122,218,178,235,142,121,46,14,204,95,115],[58,165,252,245,37,250,53,12,14,148,168,67,123,33,145,172,247,0,187,225,20,109,168,51,28,97,26,164,253,254,35,201],[129,163,36,144,112,97,112,153,144,78,48,123,121,132,224,92,163,130,6,182,217,92,204,126,166,116,151,115,216,136,55,211],[121,81,130,87,160,171,102,61,222,95,30,252,17,96,32,135,162,80,243,200,140,33,150,167,20,42,138,53,112,162,86,93],[124,186,191,163,161,4,2,245,183,61,151,243,191,21,120,124,113,73,179,185,10,59,217,236,195,94,52,207,246,129,75,139],[205,211,169,190,143,176,99,13,221,16,50,91,68,59,173,196,187,146,186,54,134,4,134,19,110,148,67,64,146,171,98,245],[91,105,132,170,147,79,249,106,168,107,149,253,200,16,187,158,37,31,160,110,59,37,104,154,167,197,140,228,133,159,90,112],[30,159,33,60,47,235,51,11,205,243,108,38,195,2,156,221,19,193,44,57,19,114,32,213,219,240,255,153,79,128,8,174],[179,190,3,188,194,162,64,69,179,215,38,155,0,141,157,50,94,28,26,92,108,166,191,215,131,76,156,216,88,103,252,74],[161,245,47,218,169,230,160,179,239,189,156,71,43,129,92,215,227,86,23,94,221,132,193,16,189,79,5,245,46,231,60,165],[93,157,151,227,195,133,153,49,71,72,55,2,169,197,168,234,75,253,205,248,254,135,133,61,47,141,195,66,172,182,133,168],[189,178,146,64,120,25,34,14,169,73,4,119,58,97,175,107,46,33,42,24,21,166,161,186,169,216,237,21,184,165,58,197],[104,217,207,88,18,9,112,51,244,59,182,245,235,190,213,1,193,210,70,140,243,51,185,239,79,34,41,180,138,8,0,211],[173,167,93,189,78,252,120,46,167,180,83,218,84,117,6,26,65,226,150,137,224,112,74,74,23,171,214,62,157,96,242,167],[204,10,92,148,114,39,248,216,191,58,197,59,111,74,28,80,26,96,98,36,129,217,193,231,105,238,70,68,249,156,87,208],[117,13,88,243,160,100,64,185,60,48,183,51,186,105,152,90,203,35,25,46,239,117,139,204,107,5,230,255,146,203,18,132],[96,10,16,10,55,83,168,19,137,104,201,169,63,189,95,151,118,215,140,215,139,5,161,201,149,206,208,245,241,30,254,50],[100,221,162,141,168,160,237,74,218,226,111,19,24,229,34,96,151,244,35,145,211,121,244,248,10,128,170,162,83,156,8,43],[90,165,142,25,13,81,62,232,19,80,213,168,20,102,90,177,169,35,40,83,221,107,78,47,100,215,66,157,120,61,108,250],[129,124,183,134,217,23,14,254,245,6,157,26,166,188,191,138,240,203,201,72,139,176,54,47,88,41,181,244,64,183,118,126],[25,126,15,53,18,209,5,153,109,149,240,191,103,171,229,253,114,75,113,167,164,118,112,93,100,161,236,64,251,29,32,165],[240,46,237,8,56,157,232,159,40,228,146,65,198,114,63,137,128,197,248,73,252,213,197,118,167,133,212,40,184,237,27,149],[41,185,208,27,89,133,241,199,0,234,250,90,211,39,203,87,57,246,221,161,219,210,153,163,15,70,35,157,243,134,230,242],[129,113,199,227,14,3,206,119,26,227,186,0,206,91,167,226,64,65,170,136,49,2,91,24,92,230,224,141,52,118,185,188],[200,200,28,219,162,47,4,125,100,107,233,43,123,30,8,174,43,198,47,60,12,191,28,75,2,94,138,122,126,176,95,41],[105,116,168,25,0,175,222,95,7,215,91,80,76,195,13,122,186,26,25,223,225,244,54,140,177,185,181,168,116,248,58,191],[153,120,192,84,103,109,49,122,47,117,58,100,199,96,101,25,184,212,111,155,116,231,182,14,160,186,80,236,91,130,133,238],[229,85,80,252,237,212,181,123,11,76,255,15,67,201,103,250,248,26,142,209,235,13,179,82,81,13,107,227,136,3,141,185],[52,154,188,146,114,78,33,48,178,19,105,119,236,3,231,87,2,46,0,95,64,115,219,36,1,37,188,67,71,63,190,175],[34,130,38,119,197,151,248,93,156,21,84,220,118,6,210,63,63,229,86,217,147,16,125,148,103,245,143,43,170,43,132,21],[12,185,15,38,63,224,207,87,114,115,196,20,91,109,110,21,163,168,111,254,47,34,40,181,58,8,3,201,232,39,27,112],[174,167,144,184,174,146,156,56,231,111,5,72,254,161,169,192,168,148,169,208,90,131,161,203,62,217,158,226,96,55,132,128],[157,205,146,91,55,42,117,109,20,88,211,124,129,147,122,107,143,178,180,187,60,94,10,114,36,168,17,16,205,197,202,177],[119,121,74,178,230,116,16,145,124,134,70,35,95,104,50,62,221,108,240,126,202,93,139,1,20,156,121,223,150,169,178,32],[152,245,209,141,76,63,136,161,54,62,240,172,240,79,21,76,102,92,204,253,24,187,17,69,147,203,204,40,10,4,69,146],[52,153,221,141,88,181,163,46,23,136,131,177,94,206,55,9,87,1,170,49,208,84,205,42,28,77,13,222,144,131,158,210],[121,47,13,170,195,6,154,145,9,11,114,212,192,243,83,79,79,153,20,37,129,129,214,208,45,20,122,75,148,229,220,214],[172,30,117,242,241,42,58,255,134,187,232,99,186,240,9,190,100,17,33,115,83,165,116,184,218,114,58,44,139,210,29,237],[202,188,22,169,183,150,9,225,59,173,234,165,11,22,122,104,175,166,238,151,158,176,97,37,39,237,125,93,7,173,25,25],[165,63,147,52,112,106,222,90,156,235,143,226,95,156,186,228,176,59,62,226,130,75,206,188,234,182,236,161,70,216,4,139],[77,191,207,21,31,143,245,46,83,207,178,31,93,104,127,156,150,43,212,107,97,143,73,33,218,134,185,151,221,234,133,41],[128,213,124,203,63,190,203,96,243,117,116,9,250,125,163,192,42,178,151,209,188,251,73,42,96,120,136,40,221,167,38,110],[65,121,148,9,89,175,143,243,203,136,34,20,128,205,102,124,50,28,234,92,88,230,90,194,27,134,246,22,124,138,41,27],[234,143,185,66,160,118,235,182,197,185,112,6,76,190,161,245,94,65,32,62,106,84,24,160,216,186,36,123,160,60,170,253],[197,193,208,131,39,157,252,206,173,15,191,197,93,167,250,234,18,217,172,39,231,94,239,24,242,232,164,134,163,102,197,253],[106,23,71,26,106,67,17,132,120,64,14,205,29,222,203,214,92,171,27,137,29,204,0,127,113,67,160,44,86,74,10,137],[60,162,8,232,156,216,131,187,38,202,91,224,179,127,56,251,162,104,204,206,73,244,42,123,254,174,197,16,81,14,151,114],[28,19,48,249,231,17,124,174,48,216,171,110,5,8,90,149,230,189,205,227,17,57,204,89,242,239,166,184,17,105,89,101],[231,48,169,220,238,148,160,183,197,68,65,206,232,228,174,123,156,138,152,85,18,45,10,93,14,184,241,118,35,174,216,48],[42,237,251,37,64,129,232,164,34,63,52,172,211,208,176,78,116,173,68,192,91,134,159,248,80,104,82,12,223,73,96,242],[149,108,208,14,129,185,253,147,89,149,92,174,177,136,150,55,24,59,198,43,74,117,33,158,100,80,236,235,230,188,76,119],[238,116,232,118,10,16,161,142,95,246,1,139,117,12,111,244,177,244,51,72,137,76,96,176,195,129,188,68,101,189,219,63],[232,122,137,144,37,44,83,28,25,136,4,124,50,0,199,202,210,177,189,163,20,127,105,113,95,189,110,68,148,243,69,103],[227,164,116,190,228,118,84,31,159,195,38,162,140,69,92,165,6,32,252,25,110,60,124,210,139,178,191,219,42,187,23,183],[27,25,89,202,132,183,201,172,226,113,20,214,131,82,153,185,254,224,111,243,199,157,195,212,20,253,229,17,100,5,38,73],[7,173,95,57,4,115,172,44,198,219,2,40,195,171,198,222,226,52,142,76,167,243,210,17,104,238,13,228,109,33,37,251],[248,104,17,6,189,16,235,255,250,247,67,246,57,2,105,195,137,83,128,77,2,32,101,110,21,186,4,181,174,62,162,60],[19,34,145,90,26,134,16,4,232,248,193,28,114,145,102,96,239,110,129,158,156,154,61,154,129,231,4,211,192,211,238,149],[42,77,221,7,99,202,117,107,33,100,243,33,219,35,62,86,99,187,90,151,102,140,86,198,116,61,97,130,171,27,228,178],[115,165,159,51,73,101,65,27,140,151,6,36,3,237,116,86,50,154,75,209,86,29,188,185,68,139,94,195,124,177,153,197],[83,80,107,73,161,60,211,16,250,220,87,215,31,216,124,23,116,147,223,234,231,76,112,196,251,186,144,11,12,188,86,33],[236,3,25,10,178,229,157,152,192,153,180,56,216,112,216,76,178,158,21,18,3,205,84,229,33,160,180,63,189,41,20,244],[204,115,74,89,251,110,207,54,0,175,178,224,168,87,76,127,179,101,75,251,181,79,98,208,43,103,248,56,160,7,49,144],[106,177,19,90,18,210,11,70,193,136,35,13,34,16,2,156,140,25,80,163,81,2,228,238,216,143,164,76,218,6,120,47],[99,170,30,76,9,28,193,213,164,0,24,38,121,244,215,219,81,255,111,44,171,171,67,93,134,68,27,234,134,93,59,207],[226,237,195,72,216,154,102,104,81,80,143,76,60,239,229,80,57,110,24,156,51,78,85,249,76,250,79,130,185,206,26,14],[89,24,101,204,137,4,243,49,202,180,102,232,187,78,69,252,118,161,69,190,217,79,90,64,101,15,198,238,82,149,42,126],[174,5,33,147,219,56,134,89,114,37,18,240,183,235,134,200,10,110,15,190,70,165,65,229,230,61,159,71,84,70,93,45],[37,207,127,23,129,86,125,92,137,59,78,40,16,247,6,223,242,101,177,196,157,160,169,56,224,180,214,123,46,28,204,188],[92,190,10,136,236,71,99,86,7,80,142,129,230,186,194,217,11,109,238,159,224,129,129,162,95,136,103,213,141,50,86,42],[7,39,194,240,134,97,210,140,118,148,199,248,61,115,247,38,206,41,226,23,233,184,249,204,243,198,244,249,8,134,249,8],[81,113,103,138,216,227,140,151,115,119,248,172,22,232,184,76,138,168,179,178,148,26,92,36,117,200,142,229,76,5,215,43],[27,162,222,79,2,97,116,118,58,197,190,80,196,91,143,148,117,125,169,8,144,162,162,21,187,147,211,79,37,2,86,212],[180,236,12,92,17,152,29,135,91,121,99,225,7,53,24,163,58,148,178,219,159,75,179,31,91,169,215,245,20,174,123,143],[140,106,180,41,169,98,212,94,183,113,93,101,199,89,197,51,96,186,41,19,243,191,18,222,187,26,41,200,31,164,14,187],[192,255,240,223,15,99,239,157,214,68,167,24,21,147,93,225,117,206,13,86,213,53,135,209,51,180,94,12,240,174,81,26],[146,95,134,182,40,246,205,113,55,29,176,39,60,38,54,191,238,30,237,151,0,60,18,144,152,150,146,191,133,218,249,211],[16,121,58,244,87,156,230,132,195,181,110,49,159,52,119,85,132,82,95,76,105,19,152,41,189,100,233,47,144,13,183,29],[245,84,61,223,236,149,70,57,218,3,27,107,47,101,36,21,72,75,234,188,24,189,162,141,91,73,57,96,104,135,61,9],[196,123,46,147,161,132,98,243,145,121,181,160,54,44,47,142,29,61,250,62,112,193,57,242,163,130,58,98,251,92,207,17],[30,49,244,175,142,184,117,67,134,8,70,27,193,188,19,131,161,8,97,37,29,116,112,92,71,137,211,192,25,25,151,81],[155,97,62,53,52,15,153,47,158,196,55,100,234,157,182,161,247,122,165,177,119,171,146,125,115,157,82,193,59,10,161,246],[55,5,226,55,154,137,159,146,208,94,178,49,186,248,166,203,26,85,64,45,68,136,215,104,88,87,107,204,181,47,46,73],[120,53,3,42,251,6,30,69,169,199,179,11,69,58,203,189,218,10,140,106,243,66,155,123,120,11,116,186,157,12,198,51],[119,143,18,134,186,167,40,79,245,151,23,136,160,110,172,209,47,33,242,68,132,31,129,134,124,166,193,144,230,188,230,172],[89,34,20,232,250,27,182,122,195,88,230,158,243,81,178,154,163,22,189,131,8,251,75,144,136,232,186,28,72,216,85,10],[136,205,16,54,180,87,90,232,154,81,77,6,46,178,179,255,140,222,0,78,157,233,56,78,55,238,39,64,16,50,42,68],[70,188,63,171,118,161,112,69,206,201,62,106,172,196,129,63,108,15,59,201,163,125,165,0,205,242,169,15,117,14,172,226],[179,175,238,24,236,14,25,150,36,179,129,225,252,248,197,140,21,108,21,159,180,253,215,94,27,36,90,159,189,190,215,141],[108,242,137,202,82,231,207,136,227,85,251,126,218,212,81,152,94,35,253,157,11,38,167,211,160,116,32,34,41,225,154,73],[246,141,238,131,157,109,59,150,153,248,76,25,58,131,87,34,109,203,205,68,240,50,65,136,61,74,250,27,119,11,18,103],[128,55,218,216,51,49,135,101,9,76,36,199,105,244,163,252,62,165,24,63,176,233,114,30,160,34,218,34,41,214,174,48],[105,226,179,237,236,47,75,219,63,90,42,27,131,49,195,147,206,248,135,128,134,206,13,214,96,46,239,7,51,132,41,144],[190,20,55,68,179,198,208,92,128,83,12,160,17,128,195,40,103,33,21,198,52,164,220,168,142,102,7,195,158,38,196,238],[31,241,44,119,163,181,101,157,153,66,133,25,221,35,246,63,227,135,225,74,10,111,90,43,189,112,49,144,29,156,47,33],[54,45,74,171,152,34,78,244,86,9,152,174,92,205,0,10,111,107,171,46,205,228,228,109,166,46,104,235,185,250,173,98],[25,119,7,148,47,17,36,242,27,112,9,191,117,202,224,37,117,236,211,85,191,24,113,253,121,164,139,237,143,106,189,132],[194,53,19,93,36,230,235,38,40,9,85,254,141,138,13,156,43,125,246,115,181,235,124,167,239,164,54,254,127,18,6,228],[241,46,60,116,121,186,191,194,78,48,162,243,8,213,25,28,209,223,184,180,141,70,174,71,70,115,64,202,161,174,4,118],[12,185,242,47,227,181,247,142,74,253,51,226,228,184,80,194,66,3,35,174,193,170,69,231,254,215,141,12,0,76,149,139],[196,200,190,218,234,173,172,49,121,208,196,54,225,107,247,249,154,64,191,218,208,95,131,10,13,111,20,214,225,68,50,164],[3,0,41,199,158,176,139,121,81,101,92,255,48,13,233,37,181,62,214,230,145,135,106,130,83,196,220,221,91,162,165,171],[13,84,35,153,1,106,6,238,164,99,109,63,83,160,209,106,158,104,117,80,156,34,187,121,44,248,162,13,208,52,22,170],[222,174,102,239,39,53,58,10,237,163,222,248,143,20,49,150,68,78,15,106,192,153,132,42,116,154,185,196,33,34,236,34],[87,67,81,103,113,172,112,2,117,230,70,160,120,255,189,241,205,229,13,217,165,214,16,213,93,132,30,195,129,163,241,229],[137,187,224,254,95,11,62,30,109,239,224,84,170,52,167,44,59,159,126,18,122,64,162,255,142,157,62,49,235,112,92,50],[119,72,75,199,154,206,71,35,15,147,183,2,62,50,139,151,126,186,172,230,19,79,167,233,169,65,64,2,197,130,227,173],[161,119,18,145,49,244,85,210,77,92,123,96,130,43,178,207,93,82,220,96,232,81,175,187,216,63,147,90,162,5,60,223],[75,117,74,86,42,124,214,93,75,153,15,135,183,119,34,163,137,134,32,52,171,184,246,69,250,168,129,251,24,24,172,225],[164,143,125,73,9,136,224,83,206,208,218,50,227,132,228,182,208,226,184,188,239,221,123,190,214,45,156,84,64,78,244,183],[27,75,75,255,229,43,118,231,33,137,230,66,105,138,182,158,1,71,195,10,183,26,187,153,4,126,223,161,78,0,142,111],[40,222,30,107,167,105,85,49,223,13,105,127,179,244,121,121,153,0,187,202,2,157,63,254,189,214,33,139,18,158,11,98],[60,125,223,8,206,26,230,36,45,237,76,246,2,211,161,34,108,94,22,73,65,243,237,227,218,186,150,121,7,119,53,252],[128,205,82,208,5,215,138,132,132,232,139,114,65,18,153,180,179,222,195,228,21,105,98,170,175,171,100,207,46,77,252,148],[21,168,10,177,104,190,96,114,221,78,202,33,237,191,53,65,34,255,49,203,211,93,238,83,62,229,59,6,131,12,180,92],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":766873,"Length":70351},"Cuts":[[200,75,219,152,177,44,152,161,216,94,150,235,74,175,88,46,163,169,174,157,186,8,114,5,17,80,247,221,136,3,5,143],[14,205,36,68,87,134,232,231,43,42,160,198,93,7,142,239,130,52,205,120,63,210,35,102,182,10,118,239,34,74,14,90],[184,43,35,134,26,255,124,205,143,20,81,157,201,126,4,204,156,77,53,162,214,101,230,156,60,82,140,48,18,151,141,240],[116,241,113,224,118,114,82,16,222,191,191,141,111,143,227,15,185,76,231,251,201,250,144,116,203,214,132,31,173,152,86,151],[98,238,56,146,76,224,17,114,130,217,118,117,40,190,138,34,94,20,174,100,88,195,124,106,154,178,138,202,17,2,142,16],[152,109,161,104,221,137,27,146,222,55,190,95,25,157,224,24,82,239,253,132,82,135,159,158,239,11,136,208,35,126,193,94],[139,209,172,18,195,100,133,114,215,60,154,17,202,45,202,253,254,132,140,161,201,38,92,134,73,167,62,198,176,224,122,214],[74,106,254,149,184,138,134,120,155,225,10,231,29,73,125,90,209,172,146,9,26,68,0,246,16,112,226,201,107,162,157,138],[239,46,84,171,174,193,195,4,8,178,146,75,135,195,252,201,220,117,36,85,33,178,67,205,13,12,27,43,245,111,210,134],[251,43,153,133,212,18,131,100,40,226,11,177,60,126,19,48,95,228,169,0,45,141,191,176,148,98,205,240,253,131,233,93],[26,253,250,46,170,90,86,0,149,120,76,95,204,196,125,150,243,44,97,169,194,34,13,103,203,195,212,30,170,13,213,124],[135,196,232,235,104,28,21,15,28,12,107,6,79,245,193,91,125,27,127,168,152,200,191,2,184,110,174,61,74,115,98,242],[90,3,11,184,6,203,45,42,220,39,123,229,165,127,231,105,212,83,56,73,199,82,38,130,53,160,234,188,213,234,143,205],[248,189,170,227,236,102,84,93,245,176,238,10,243,158,186,163,228,1,222,11,81,171,52,0,39,221,152,191,62,159,243,40],[120,164,224,145,79,102,195,64,240,16,155,15,91,252,27,18,10,37,116,255,115,39,70,140,161,103,56,134,77,107,28,246],[140,120,59,103,20,163,198,72,209,162,239,171,122,248,150,248,189,104,244,166,251,174,40,58,102,235,252,115,128,87,214,250],[186,104,182,140,197,169,122,15,126,39,227,208,22,251,171,40,56,149,249,171,170,46,199,224,158,11,226,80,144,197,64,58],[106,56,201,96,203,104,16,224,16,217,46,51,131,36,49,135,69,175,244,34,189,56,87,145,137,174,40,247,198,12,202,161],[11,169,165,173,156,113,131,6,142,10,241,244,111,183,91,46,215,165,69,102,8,57,18,9,124,156,68,93,188,198,41,2],[30,142,106,140,161,125,239,206,38,124,220,193,82,77,89,176,142,244,6,74,111,128,236,233,114,180,35,219,65,236,102,18],[172,122,146,97,199,5,231,51,85,200,226,163,158,197,62,196,63,116,146,243,190,1,10,23,109,217,152,37,63,78,15,17],[251,146,66,75,75,89,186,1,231,111,191,156,223,218,192,72,189,102,220,169,43,102,20,149,237,180,28,175,171,61,25,239],[44,20,50,44,151,1,218,104,146,46,144,194,101,31,87,172,182,74,158,69,100,212,217,122,20,26,26,121,238,197,107,237],[166,222,14,198,143,82,171,255,22,249,180,98,232,104,154,225,91,70,201,35,201,91,86,155,193,43,191,122,253,87,46,240],[107,10,169,92,189,22,46,249,251,69,221,17,82,233,131,210,160,217,21,188,111,192,100,104,70,166,212,195,89,142,122,172],[134,151,216,224,170,192,200,87,155,247,181,114,109,54,114,191,194,134,52,53,210,27,205,28,126,75,224,202,119,111,226,217],[186,190,70,108,10,218,71,85,126,250,3,32,65,19,171,40,96,77,251,42,79,154,127,119,38,215,102,222,16,220,17,0],[222,89,148,14,101,120,147,220,14,42,185,98,189,109,108,88,10,9,173,16,92,40,167,235,51,195,3,176,26,228,58,196],[175,43,118,211,13,10,7,2,85,10,178,200,120,182,193,229,254,205,63,237,21,252,91,104,183,24,154,251,196,81,186,121],[32,67,179,165,26,97,37,118,148,153,23,124,90,195,32,45,135,169,58,197,103,34,215,217,218,58,11,64,104,48,207,129],[120,196,151,205,140,33,180,179,59,148,45,26,43,241,50,95,210,154,47,57,204,169,55,235,33,73,126,100,237,68,152,92],[82,190,141,96,53,145,173,247,228,76,147,73,61,29,63,99,154,22,29,242,254,228,19,48,59,168,164,62,141,33,242,184],[15,104,135,188,111,165,254,235,100,24,84,68,196,41,151,176,175,55,158,70,137,75,66,6,125,95,83,164,221,50,186,119],[255,220,122,34,18,148,57,232,71,137,95,161,224,101,188,88,254,113,137,57,7,53,74,182,136,63,237,72,164,83,192,127],[49,218,51,8,239,198,8,224,27,115,161,83,186,55,155,29,29,41,197,200,93,144,205,70,162,201,192,44,105,242,6,203],[228,39,32,21,31,55,91,103,69,140,87,69,227,85,79,208,166,72,10,38,149,245,238,239,242,123,46,224,25,100,138,101],[247,22,186,226,81,112,50,79,245,164,245,54,253,47,26,2,101,36,105,231,224,221,194,182,157,216,150,20,143,25,217,247],[5,110,84,196,197,247,69,144,210,68,153,161,178,219,60,10,15,164,173,142,233,251,215,252,238,224,105,205,180,109,214,53],[87,228,245,154,90,182,135,162,141,113,83,67,2,80,155,18,58,92,36,4,157,10,36,195,131,132,251,17,47,93,106,62],[64,21,115,164,17,169,192,199,22,173,119,38,1,11,241,143,76,105,2,6,170,47,38,104,95,166,66,193,14,172,55,92],[191,195,159,124,73,83,34,22,8,4,64,155,40,1,103,165,82,71,207,12,113,39,47,45,102,4,233,212,25,169,50,96],[140,85,22,239,170,126,69,70,29,204,31,212,158,19,144,186,174,189,192,29,97,81,69,173,150,64,254,63,83,52,110,139],[122,165,26,6,213,183,245,114,164,35,186,113,107,87,226,143,133,133,148,135,169,234,71,104,240,62,39,25,79,237,30,106],[103,244,13,211,44,196,131,236,136,155,163,236,234,60,135,201,167,245,5,112,115,107,47,154,34,163,15,39,158,72,69,153],[82,244,228,82,15,176,29,13,42,111,149,165,142,168,140,22,209,229,121,177,200,247,153,123,195,130,44,81,121,57,169,31],[134,40,140,128,76,240,80,186,89,246,161,76,27,178,65,85,10,57,114,107,139,223,47,38,183,108,70,128,130,93,237,21],[39,251,23,20,210,79,69,69,151,79,232,61,220,113,254,155,114,44,130,208,254,127,154,253,13,76,115,100,85,60,161,173],[244,189,127,180,202,0,157,64,206,223,17,168,224,101,199,141,58,224,73,131,45,7,98,106,95,66,193,51,17,150,250,4],[217,154,185,150,52,75,229,149,29,165,231,238,164,77,250,2,227,14,141,90,111,149,6,128,147,3,64,185,191,198,176,35],[33,119,112,238,186,99,181,59,36,84,140,165,56,224,208,89,9,102,73,114,106,110,59,68,171,66,189,36,90,195,123,210],[12,247,123,58,5,206,30,132,118,190,108,136,232,118,223,24,104,237,253,73,139,171,211,190,3,72,109,137,96,146,78,212],[37,246,83,104,195,182,90,6,206,193,154,127,210,88,179,134,210,5,77,103,113,192,4,3,156,158,119,119,64,82,186,68],[227,240,219,108,8,167,132,13,41,125,227,214,214,236,133,31,45,83,36,19,19,133,49,117,60,130,168,201,182,237,82,165],[192,23,15,118,26,171,245,85,52,208,114,127,163,70,30,26,193,217,90,120,195,83,90,118,49,208,202,180,67,192,149,195],[52,158,117,111,242,217,201,243,190,203,40,116,193,61,176,199,169,133,195,239,209,237,115,122,47,101,231,198,92,152,156,160],[75,127,154,10,157,124,172,156,232,107,108,79,46,156,162,113,20,67,146,241,170,169,1,111,127,130,38,251,214,222,76,79],[16,243,130,188,74,172,13,68,208,33,46,180,166,38,112,143,160,109,9,250,119,119,21,182,91,52,57,128,253,192,231,157],[185,101,177,29,14,22,21,48,99,132,242,208,228,86,29,101,168,213,47,168,88,254,200,198,182,39,214,6,203,226,79,207],[64,161,25,253,206,200,1,56,236,171,184,39,2,223,159,103,14,254,255,197,58,159,215,153,18,87,173,186,172,45,138,203],[43,73,57,19,216,172,33,89,74,224,64,195,133,154,95,47,181,212,129,38,167,219,218,8,13,115,188,172,57,184,245,125],[42,126,244,200,128,75,162,87,181,36,105,47,88,93,14,105,32,167,104,94,32,99,48,218,173,189,142,85,70,11,0,114],[5,68,44,48,219,56,136,55,89,61,11,116,91,168,235,17,0,13,7,48,112,57,221,198,222,131,38,54,240,49,86,243],[64,115,205,207,197,236,127,88,44,143,177,217,135,29,93,102,4,107,67,98,77,233,170,174,174,235,33,86,151,165,112,53],[147,175,231,148,19,200,29,98,178,20,133,15,17,223,8,21,71,16,1,145,112,149,66,232,42,131,247,104,114,147,54,216],[158,144,218,196,101,39,190,252,109,204,195,211,227,106,35,21,245,88,71,205,109,181,146,60,111,132,22,94,150,78,189,79],[78,189,156,182,107,175,142,96,58,125,196,14,133,55,63,199,72,111,29,255,183,33,232,180,249,148,45,109,54,213,183,114],[41,92,152,24,172,202,156,220,117,180,94,26,230,155,145,247,237,8,190,226,112,73,164,118,121,58,177,210,43,191,184,206],[10,170,199,36,151,26,108,33,61,93,191,96,97,192,48,213,162,28,177,181,60,185,97,98,44,43,203,21,2,70,130,39],[212,247,132,44,75,148,93,65,2,237,7,102,176,79,108,147,46,144,191,234,0,124,209,250,190,135,236,165,47,1,222,212],[100,205,225,255,163,110,252,94,151,228,208,148,176,174,174,99,61,37,170,66,185,176,79,139,7,162,227,158,118,213,59,198],[84,67,32,211,174,139,200,153,195,201,40,143,194,72,206,207,76,240,185,94,173,123,127,46,34,89,187,227,131,71,206,64],[100,232,125,71,12,65,156,2,119,61,185,27,10,107,100,118,94,69,198,228,234,54,63,253,181,139,175,175,247,126,180,0],[170,33,96,137,26,168,6,213,60,249,228,1,167,59,233,153,100,146,102,5,139,197,70,35,230,48,176,128,68,7,64,202],[48,1,155,219,85,92,193,45,17,32,21,209,146,1,28,190,3,250,35,253,141,64,153,31,6,107,182,165,131,78,201,53],[49,110,97,51,224,29,121,79,207,82,138,201,131,135,195,171,227,179,239,246,81,15,241,165,67,222,84,75,64,68,110,93],[183,238,159,92,89,116,244,226,78,110,111,232,136,193,239,47,72,248,139,104,14,173,147,114,28,11,84,158,147,93,62,171],[201,28,199,176,60,172,78,68,219,187,153,54,245,76,159,133,27,198,34,99,163,129,201,78,215,28,237,143,180,57,28,28],[128,236,226,119,194,161,11,113,128,130,32,25,76,119,39,130,113,212,8,186,142,73,243,89,123,132,116,140,79,59,108,166],[49,151,13,91,146,209,124,110,182,193,234,208,26,71,95,224,113,75,113,74,179,51,113,123,171,184,50,243,147,215,140,151],[230,126,183,141,198,209,152,97,127,35,8,102,250,73,179,14,253,76,139,54,49,232,93,175,109,234,235,232,120,196,41,191],[96,157,77,161,156,93,214,191,31,151,202,67,229,20,5,213,94,25,58,195,72,183,133,126,34,121,10,245,83,210,213,62],[103,70,124,248,1,19,136,168,248,194,228,19,87,163,236,153,98,234,227,174,67,212,43,132,120,241,147,75,15,139,104,81],[106,42,181,17,133,39,169,138,37,119,224,248,237,132,66,143,32,211,52,82,170,34,81,66,200,108,72,2,18,199,150,196],[55,42,98,141,243,127,99,5,127,148,173,240,156,235,7,173,222,254,111,146,80,35,166,179,182,151,245,98,62,234,155,85],[221,191,52,55,126,180,37,135,195,91,207,28,181,27,220,187,224,220,89,21,30,43,37,208,83,10,23,202,79,229,215,104],[239,129,208,80,49,189,160,214,205,139,47,76,118,191,247,90,155,11,222,135,74,84,183,232,226,255,83,5,72,104,243,123],[163,128,38,9,234,138,29,29,20,37,120,219,95,3,125,71,85,156,7,194,244,162,65,240,222,205,7,227,24,9,31,141],[98,177,9,30,199,109,116,24,21,147,97,169,183,58,128,187,32,233,135,65,117,60,141,78,236,32,46,235,95,168,61,147],[188,236,35,151,83,169,183,217,15,131,28,5,41,227,131,128,110,91,33,116,136,51,234,127,138,21,107,172,128,31,207,82],[193,131,64,143,71,27,73,69,248,63,170,41,70,150,248,252,240,59,224,57,97,70,227,85,162,77,142,11,123,180,173,206],[101,147,84,245,25,53,152,103,161,108,127,73,168,86,246,206,80,180,17,67,36,184,92,74,125,74,236,7,65,227,27,182],[177,125,14,61,232,69,131,194,210,247,74,136,67,201,246,230,55,65,16,65,0,80,32,153,196,231,78,228,36,92,20,22],[240,87,240,126,70,121,163,199,80,64,143,141,160,130,149,112,59,95,248,209,177,202,45,50,41,248,16,32,182,22,43,94],[148,172,43,165,188,186,112,21,33,214,103,47,165,189,140,57,169,22,17,41,249,187,233,141,65,72,255,191,177,199,186,19],[250,14,1,59,43,210,69,83,201,18,66,235,104,200,248,223,151,218,8,203,93,125,189,29,109,32,1,149,148,31,10,158],[14,182,45,168,17,141,249,231,138,249,66,76,86,15,12,78,170,146,172,199,113,61,249,183,142,169,215,221,231,199,10,29],[107,231,33,31,66,202,146,30,67,202,100,193,126,234,245,250,68,244,29,28,219,252,217,87,22,57,148,241,152,129,221,253],[119,172,248,55,104,101,97,34,28,191,177,33,141,248,237,7,157,125,95,25,196,122,120,26,186,236,97,242,179,64,219,26],[191,155,56,223,42,94,204,21,223,17,228,58,150,35,229,239,91,247,163,128,13,157,123,241,155,211,4,164,109,133,237,17],[122,5,115,216,53,110,144,213,90,89,168,78,147,190,170,84,24,216,83,219,238,248,128,232,104,237,116,61,208,115,199,217],[5,116,31,55,9,144,41,160,73,67,113,1,215,188,229,32,81,35,156,237,116,169,144,20,16,125,38,214,146,234,167,231],[129,251,65,188,178,128,182,15,20,231,61,49,5,42,253,162,155,122,154,177,217,35,98,15,38,175,140,152,253,112,31,0],[18,229,222,222,71,250,187,102,81,79,161,151,75,85,226,242,21,244,171,25,201,70,195,143,148,99,19,10,155,104,80,173],[62,186,187,89,142,72,235,143,84,221,205,193,249,90,218,113,95,46,170,175,27,69,87,93,127,49,172,195,101,1,255,228],[20,19,132,101,238,201,11,137,233,193,222,144,60,7,147,173,89,120,24,221,149,168,145,34,191,32,54,250,7,220,10,92],[138,107,201,95,3,228,62,248,30,132,189,216,153,243,130,183,146,75,89,164,215,201,120,49,97,145,188,21,219,201,141,125],[190,87,42,8,151,125,221,58,224,91,230,40,12,22,91,209,159,106,92,113,101,8,181,66,11,77,145,192,253,171,239,103],[236,66,173,70,14,50,6,23,104,122,83,239,28,128,212,112,42,103,73,17,182,20,234,50,211,26,17,25,171,139,110,122],[98,180,211,196,52,68,216,210,224,49,86,32,55,156,197,181,232,139,10,152,42,135,105,1,86,230,159,213,139,18,84,105],[108,197,32,208,94,214,110,188,252,105,246,182,239,55,65,230,205,185,44,45,192,243,70,169,132,52,215,208,176,228,167,155],[124,223,34,11,199,71,14,156,19,43,240,7,177,75,135,27,62,186,46,228,51,174,236,35,33,14,10,86,40,32,38,49],[215,146,237,8,169,209,14,156,165,31,198,226,86,251,97,67,244,156,52,14,114,156,254,164,127,181,171,20,179,163,198,178],[233,191,210,218,65,41,141,123,133,185,97,22,54,62,162,46,220,123,129,12,35,36,124,153,151,152,3,69,137,215,108,204],[129,104,158,210,39,238,195,2,125,190,201,229,79,226,165,91,134,237,15,190,229,94,41,9,64,29,76,82,126,15,110,214],[141,123,222,254,6,55,169,110,64,71,103,150,21,85,15,41,203,207,235,10,118,224,198,15,63,94,155,222,141,126,32,238],[64,87,159,199,18,178,215,170,46,37,35,108,33,221,162,69,158,99,4,43,236,91,123,189,25,150,144,136,77,64,24,178],[45,76,98,172,80,6,223,57,152,240,234,159,218,22,107,30,55,208,178,124,212,111,113,60,35,62,102,11,121,14,255,186],[15,118,47,98,98,20,28,246,213,179,135,157,17,160,201,122,141,202,171,80,112,133,133,134,23,248,187,26,164,61,15,183],[236,132,148,128,231,50,234,88,49,33,132,48,164,67,50,157,143,74,220,156,168,53,47,140,150,55,59,220,205,156,173,95],[95,84,175,196,73,16,202,50,160,168,200,98,163,193,147,42,23,25,163,6,158,22,231,207,163,133,214,49,183,60,199,17],[253,38,134,46,240,203,235,89,146,69,251,244,61,201,192,39,138,198,146,187,115,235,223,155,161,175,217,170,27,5,114,69],[248,154,233,252,203,194,4,164,116,39,86,6,241,74,23,208,192,20,8,17,50,180,133,222,239,109,57,125,105,89,20,70],[215,219,214,252,190,142,61,128,179,241,146,235,45,39,59,62,236,46,54,133,164,85,192,8,237,78,118,85,97,35,245,32],[8,98,168,212,53,110,77,185,114,109,155,170,160,24,232,173,104,225,141,59,215,158,148,148,25,224,0,205,48,121,92,63],[112,12,142,123,233,62,198,237,60,108,148,2,238,184,126,106,7,204,157,184,45,251,200,136,25,215,35,41,77,58,204,110],[126,132,205,128,129,46,146,220,42,162,245,74,146,118,226,159,244,253,162,9,185,72,94,118,183,193,147,196,40,150,118,109],[157,80,60,197,131,227,248,60,135,242,34,235,8,225,17,77,99,117,154,246,227,87,4,236,61,112,194,10,222,209,18,68],[223,193,253,187,179,237,133,33,190,31,224,61,230,107,81,242,202,214,240,178,193,143,102,99,111,141,182,199,192,10,65,128],[236,102,201,12,9,191,43,83,152,77,10,124,16,1,230,164,107,23,7,152,201,196,92,110,157,121,66,238,181,180,219,95],[91,161,147,235,211,182,101,137,88,78,42,228,44,132,226,45,244,88,143,83,223,229,125,82,144,71,242,116,9,242,201,161],[244,104,232,215,149,171,225,40,28,74,186,130,42,62,143,73,204,40,35,76,158,223,109,120,235,21,119,28,113,147,222,165],[33,163,224,139,231,247,1,165,186,202,209,167,2,253,57,213,236,239,68,198,24,105,40,130,172,169,229,193,166,4,234,72],[69,188,149,201,83,241,95,235,57,80,247,116,235,44,228,24,45,236,247,5,251,140,142,185,185,4,253,93,219,196,178,213],[150,226,106,10,18,224,157,179,169,199,5,44,128,78,104,228,252,84,130,19,226,217,23,195,4,41,133,110,84,248,161,6],[109,167,178,177,181,26,89,16,99,183,119,58,186,224,237,245,219,181,149,105,152,153,181,166,8,79,41,249,213,87,204,207],[245,79,98,55,181,225,71,51,162,153,143,8,41,141,127,237,187,180,112,98,181,114,214,224,54,48,138,187,69,110,195,209],[245,88,109,11,15,25,62,101,185,176,44,95,46,244,139,11,78,24,22,186,25,184,190,238,231,251,47,118,188,127,98,57],[214,60,143,3,120,191,97,38,69,84,159,5,87,53,146,146,205,160,35,135,212,0,167,216,35,23,146,237,128,63,152,42],[185,147,132,218,58,88,18,244,157,243,145,232,200,143,3,93,212,130,67,68,179,94,32,90,143,227,32,215,53,150,134,34],[197,206,33,243,211,182,88,53,150,212,213,239,236,215,242,22,142,84,120,7,46,119,21,24,1,2,39,144,33,112,246,125],[130,218,71,81,78,168,30,60,148,204,52,62,30,215,148,10,87,180,51,61,207,203,225,4,89,127,87,165,102,178,74,206],[239,131,33,219,162,214,50,65,189,214,210,216,11,112,1,119,3,174,33,135,77,43,221,53,44,73,41,67,227,36,49,222],[219,0,59,221,249,114,161,92,31,123,75,54,109,7,118,139,148,87,66,236,116,91,77,112,237,44,100,45,32,34,188,24],[59,127,254,231,97,254,245,0,101,89,33,36,87,154,121,103,191,19,71,55,105,48,186,27,98,210,188,13,15,238,178,27],[229,137,34,40,12,41,8,21,48,34,42,245,14,249,76,181,60,221,91,151,226,101,211,200,164,101,84,180,82,114,239,71],[182,56,166,116,240,218,52,105,13,183,200,71,81,215,77,127,52,102,210,92,158,78,49,248,116,47,162,152,74,236,104,199],[226,188,218,100,50,222,232,226,59,239,167,11,126,142,152,41,240,22,254,90,116,164,180,197,209,218,46,41,74,10,94,65],[10,29,30,3,236,114,216,81,180,44,149,104,119,147,123,52,104,183,165,94,78,166,15,146,38,119,208,23,216,46,192,74],[90,13,195,222,126,47,127,83,56,65,0,31,51,6,193,58,14,63,76,225,42,113,93,115,179,245,16,145,241,83,89,81],[47,202,241,22,80,172,70,217,17,77,250,56,175,196,93,222,150,188,39,233,207,26,144,224,117,69,24,2,53,159,243,202],[227,137,139,133,180,247,182,30,194,45,60,172,246,70,243,99,43,225,78,115,248,7,166,21,10,57,21,169,9,189,68,237],[96,100,14,34,31,12,147,20,138,0,29,238,46,112,145,226,143,243,16,85,70,69,213,253,48,146,236,165,80,10,147,116],[100,7,173,220,174,23,97,242,160,178,145,161,12,48,252,158,111,201,93,137,44,23,199,53,143,178,207,240,122,29,32,218],[93,168,190,8,1,148,178,146,121,125,172,34,47,75,214,198,134,177,211,24,255,46,116,40,17,195,132,0,118,230,86,184],[104,30,13,189,160,33,150,206,96,70,129,35,218,19,72,25,94,143,169,138,152,87,126,113,81,101,209,55,94,217,232,118],[116,199,223,78,242,226,179,76,241,25,104,57,254,139,8,246,228,214,247,190,101,57,139,175,74,175,224,45,83,110,204,251],[191,100,148,173,10,70,228,63,97,63,9,164,119,160,75,25,124,153,55,113,66,41,213,134,77,181,164,179,80,132,172,236],[236,186,212,83,181,91,181,51,4,205,45,212,20,53,20,122,148,251,125,193,133,77,89,14,97,34,234,16,113,17,126,17],[137,203,247,234,113,233,156,7,84,236,67,42,247,20,182,173,66,94,50,168,170,83,35,240,138,234,112,207,152,77,46,161],[166,141,12,227,67,19,143,166,220,159,131,165,168,15,14,109,218,174,197,44,84,157,220,244,74,2,51,146,191,222,64,171],[21,177,129,71,116,150,142,154,199,244,36,239,214,123,124,9,85,54,9,118,20,17,209,170,178,131,64,171,237,27,30,218],[153,13,30,101,70,43,213,184,23,81,141,167,236,80,170,66,47,34,86,0,183,8,211,51,20,0,68,224,182,228,124,113],[198,29,33,209,136,92,8,113,99,158,242,247,42,206,214,56,205,47,13,50,26,228,10,51,175,215,111,91,26,131,220,33],[36,159,226,144,54,147,11,183,249,0,13,211,184,21,251,55,57,140,167,107,114,151,242,44,87,240,135,5,142,115,139,179],[184,227,150,14,19,169,26,214,91,174,44,194,223,61,62,75,234,55,200,137,188,13,205,134,7,156,62,13,161,100,212,97],[224,168,184,31,202,216,144,186,58,32,8,114,213,225,149,149,94,161,114,5,235,79,66,119,17,80,57,27,164,76,245,34],[153,120,10,209,13,51,223,90,50,94,113,109,117,61,214,246,45,185,220,130,248,246,192,172,13,238,63,98,220,21,147,157],[135,138,122,225,205,37,25,83,56,131,102,8,53,142,110,95,104,58,98,159,254,156,49,177,218,201,221,181,231,86,84,180],[214,212,92,231,230,16,90,171,70,183,201,142,178,43,128,72,98,240,172,199,216,122,218,178,235,142,121,46,14,204,95,115],[58,165,252,245,37,250,53,12,14,148,168,67,123,33,145,172,247,0,187,225,20,109,168,51,28,97,26,164,253,254,35,201],[129,163,36,144,112,97,112,153,144,78,48,123,121,132,224,92,163,130,6,182,217,92,204,126,166,116,151,115,216,136,55,211],[121,81,130,87,160,171,102,61,222,95,30,252,17,96,32,135,162,80,243,200,140,33,150,167,20,42,138,53,112,162,86,93],[124,186,191,163,161,4,2,245,183,61,151,243,191,21,120,124,113,73,179,185,10,59,217,236,195,94,52,207,246,129,75,139],[205,211,169,190,143,176,99,13,221,16,50,91,68,59,173,196,187,146,186,54,134,4,134,19,110,148,67,64,146,171,98,245],[91,105,132,170,147,79,249,106,168,107,149,253,200,16,187,158,37,31,160,110,59,37,104,154,167,197,140,228,133,159,90,112],[30,159,33,60,47,235,51,11,205,243,108,38,195,2,156,221,19,193,44,57,19,114,32,213,219,240,255,153,79,128,8,174],[179,190,3,188,194,162,64,69,179,215,38,155,0,141,157,50,94,28,26,92,108,166,191,215,131,76,156,216,88,103,252,74],[161,245,47,218,169,230,160,179,239,189,156,71,43,129,92,215,227,86,23,94,221,132,193,16,189,79,5,245,46,231,60,165],[93,157,151,227,195,133,153,49,71,72,55,2,169,197,168,234,75,253,205,248,254,135,133,61,47,141,195,66,172,182,133,168],[189,178,146,64,120,25,34,14,169,73,4,119,58,97,175,107,46,33,42,24,21,166,161,186,169,216,237,21,184,165,58,197],[104,217,207,88,18,9,112,51,244,59,182,245,235,190,213,1,193,210,70,140,243,51,185,239,79,34,41,180,138,8,0,211],[173,167,93,189,78,252,120,46,167,180,83,218,84,117,6,26,65,226,150,137,224,112,74,74,23,171,214,62,157,96,242,167],[204,10,92,148,114,39,248,216,191,58,197,59,111,74,28,80,26,96,98,36,129,217,193,231,105,238,70,68,249,156,87,208],[117,13,88,243,160,100,64,185,60,48,183,51,186,105,152,90,203,35,25,46,239,117,139,204,107,5,230,255,146,203,18,132],[96,10,16,10,55,83,168,19,137,104,201,169,63,189,95,151,118,215,140,215,139,5,161,201,149,206,208,245,241,30,254,50],[100,221,162,141,168,160,237,74,218,226,111,19,24,229,34,96,151,244,35,145,211,121,244,248,10,128,170,162,83,156,8,43],[90,165,142,25,13,81,62,232,19,80,213,168,20,102,90,177,169,35,40,83,221,107,78,47,100,215,66,157,120,61,108,250],[129,124,183,134,217,23,14,254,245,6,157,26,166,188,191,138,240,203,201,72,139,176,54,47,88,41,181,244,64,183,118,126],[25,126,15,53,18,209,5,153,109,149,240,191,103,171,229,253,114,75,113,167,164,118,112,93,100,161,236,64,251,29,32,165],[240,46,237,8,56,157,232,159,40,228,146,65,198,114,63,137,128,197,248,73,252,213,197,118,167,133,212,40,184,237,27,149],[41,185,208,27,89,133,241,199,0,234,250,90,211,39,203,87,57,246,221,161,219,210,153,163,15,70,35,157,243,134,230,242],[129,113,199,227,14,3,206,119,26,227,186,0,206,91,167,226,64,65,170,136,49,2,91,24,92,230,224,141,52,118,185,188],[200,200,28,219,162,47,4,125,100,107,233,43,123,30,8,174,43,198,47,60,12,191,28,75,2,94,138,122,126,176,95,41],[105,116,168,25,0,175,222,95,7,215,91,80,76,195,13,122,186,26,25,223,225,244,54,140,177,185,181,168,116,248,58,191],[153,120,192,84,103,109,49,122,47,117,58,100,199,96,101,25,184,212,111,155,116,231,182,14,160,186,80,236,91,130,133,238],[229,85,80,252,237,212,181,123,11,76,255,15,67,201,103,250,248,26,142,209,235,13,179,82,81,13,107,227,136,3,141,185],[52,154,188,146,114,78,33,48,178,19,105,119,236,3,231,87,2,46,0,95,64,115,219,36,1,37,188,67,71,63,190,175],[34,130,38,119,197,151,248,93,156,21,84,220,118,6,210,63,63,229,86,217,147,16,125,148,103,245,143,43,170,43,132,21],[12,185,15,38,63,224,207,87,114,115,196,20,91,109,110,21,163,168,111,254,47,34,40,181,58,8,3,201,232,39,27,112],[174,167,144,184,174,146,156,56,231,111,5,72,254,161,169,192,168,148,169,208,90,131,161,203,62,217,158,226,96,55,132,128],[157,205,146,91,55,42,117,109,20,88,211,124,129,147,122,107,143,178,180,187,60,94,10,114,36,168,17,16,205,197,202,177],[119,121,74,178,230,116,16,145,124,134,70,35,95,104,50,62,221,108,240,126,202,93,139,1,20,156,121,223,150,169,178,32],[152,245,209,141,76,63,136,161,54,62,240,172,240,79,21,76,102,92,204,253,24,187,17,69,147,203,204,40,10,4,69,146],[52,153,221,141,88,181,163,46,23,136,131,177,94,206,55,9,87,1,170,49,208,84,205,42,28,77,13,222,144,131,158,210],[121,47,13,170,195,6,154,145,9,11,114,212,192,243,83,79,79,153,20,37,129,129,214,208,45,20,122,75,148,229,220,214],[172,30,117,242,241,42,58,255,134,187,232,99,186,240,9,190,100,17,33,115,83,165,116,184,218,114,58,44,139,210,29,237],[202,188,22,169,183,150,9,225,59,173,234,165,11,22,122,104,175,166,238,151,158,176,97,37,39,237,125,93,7,173,25,25],[165,63,147,52,112,106,222,90,156,235,143,226,95,156,186,228,176,59,62,226,130,75,206,188,234,182,236,161,70,216,4,139],[77,191,207,21,31,143,245,46,83,207,178,31,93,104,127,156,150,43,212,107,97,143,73,33,218,134,185,151,221,234,133,41],[128,213,124,203,63,190,203,96,243,117,116,9,250,125,163,192,42,178,151,209,188,251,73,42,96,120,136,40,221,167,38,110],[65,121,148,9,89,175,143,243,203,136,34,20,128,205,102,124,50,28,234,92,88,230,90,194,27,134,246,22,124,138,41,27],[234,143,185,66,160,118,235,182,197,185,112,6,76,190,161,245,94,65,32,62,106,84,24,160,216,186,36,123,160,60,170,253],[197,193,208,131,39,157,252,206,173,15,191,197,93,167,250,234,18,217,172,39,231,94,239,24,242,232,164,134,163,102,197,253],[106,23,71,26,106,67,17,132,120,64,14,205,29,222,203,214,92,171,27,137,29,204,0,127,113,67,160,44,86,74,10,137],[60,162,8,232,156,216,131,187,38,202,91,224,179,127,56,251,162,104,204,206,73,244,42,123,254,174,197,16,81,14,151,114],[28,19,48,249,231,17,124,174,48,216,171,110,5,8,90,149,230,189,205,227,17,57,204,89,242,239,166,184,17,105,89,101],[231,48,169,220,238,148,160,183,197,68,65,206,232,228,174,123,156,138,152,85,18,45,10,93,14,184,241,118,35,174,216,48],[42,237,251,37,64,129,232,164,34,63,52,172,211,208,176,78,116,173,68,192,91,134,159,248,80,104,82,12,223,73,96,242],[149,108,208,14,129,185,253,147,89,149,92,174,177,136,150,55,24,59,198,43,74,117,33,158,100,80,236,235,230,188,76,119],[238,116,232,118,10,16,161,142,95,246,1,139,117,12,111,244,177,244,51,72,137,76,96,176,195,129,188,68,101,189,219,63],[232,122,137,144,37,44,83,28,25,136,4,124,50,0,199,202,210,177,189,163,20,127,105,113,95,189,110,68,148,243,69,103],[227,164,116,190,228,118,84,31,159,195,38,162,140,69,92,165,6,32,252,25,110,60,124,210,139,178,191,219,42,187,23,183],[27,25,89,202,132,183,201,172,226,113,20,214,131,82,153,185,254,224,111,243,199,157,195,212,20,253,229,17,100,5,38,73],[7,173,95,57,4,115,172,44,198,219,2,40,195,171,198,222,226,52,142,76,167,243,210,17,104,238,13,228,109,33,37,251],[248,104,17,6,189,16,235,255,250,247,67,246,57,2,105,195,137,83,128,77,2,32,101,110,21,186,4,181,174,62,162,60],[19,34,145,90,26,134,16,4,232,248,193,28,114,145,102,96,239,110,129,158,156,154,61,154,129,231,4,211,192,211,238,149],[42,77,221,7,99,202,117,107,33,100,243,33,219,35,62,86,99,187,90,151,102,140,86,198,116,61,97,130,171,27,228,178],[115,165,159,51,73,101,65,27,140,151,6,36,3,237,116,86,50,154,75,209,86,29,188,185,68,139,94,195,124,177,153,197],[83,80,107,73,161,60,211,16,250,220,87,215,31,216,124,23,116,147,223,234,231,76,112,196,251,186,144,11,12,188,86,33],[236,3,25,10,178,229,157,152,192,153,180,56,216,112,216,76,178,158,21,18,3,205,84,229,33,160,180,63,189,41,20,244],[204,115,74,89,251,110,207,54,0,175,178,224,168,87,76,127,179,101,75,251,181,79,98,208,43,103,248,56,160,7,49,144],[106,177,19,90,18,210,11,70,193,136,35,13,34,16,2,156,140,25,80,163,81,2,228,238,216,143,164,76,218,6,120,47],[99,170,30,76,9,28,193,213,164,0,24,38,121,244,215,219,81,255,111,44,171,171,67,93,134,68,27,234,134,93,59,207],[226,237,195,72,216,154,102,104,81,80,143,76,60,239,229,80,57,110,24,156,51,78,85,249,76,250,79,130,185,206,26,14],[89,24,101,204,137,4,243,49,202,180,102,232,187,78,69,252,118,161,69,190,217,79,90,64,101,15,198,238,82,149,42,126],[174,5,33,147,219,56,134,89,114,37,18,240,183,235,134,200,10,110,15,190,70,165,65,229,230,61,159,71,84,70,93,45],[37,207,127,23,129,86,125,92,137,59,78,40,16,247,6,223,242,101,177,196,157,160,169,56,224,180,214,123,46,28,204,188],[92,190,10,136,236,71,99,86,7,80,142,129,230,186,194,217,11,109,238,159,224,129,129,162,95,136,103,213,141,50,86,42],[7,39,194,240,134,97,210,140,118,148,199,248,61,115,247,38,206,41,226,23,233,184,249,204,243,198,244,249,8,134,249,8],[81,113,103,138,216,227,140,151,115,119,248,172,22,232,184,76,138,168,179,178,148,26,92,36,117,200,142,229,76,5,215,43],[27,162,222,79,2,97,116,118,58,197,190,80,196,91,143,148,117,125,169,8,144,162,162,21,187,147,211,79,37,2,86,212],[180,236,12,92,17,152,29,135,91,121,99,225,7,53,24,163,58,148,178,219,159,75,179,31,91,169,215,245,20,174,123,143],[140,106,180,41,169,98,212,94,183,113,93,101,199,89,197,51,96,186,41,19,243,191,18,222,187,26,41,200,31,164,14,187],[192,255,240,223,15,99,239,157,214,68,167,24,21,147,93,225,117,206,13,86,213,53,135,209,51,180,94,12,240,174,81,26],[146,95,134,182,40,246,205,113,55,29,176,39,60,38,54,191,238,30,237,151,0,60,18,144,152,150,146,191,133,218,249,211],[16,121,58,244,87,156,230,132,195,181,110,49,159,52,119,85,132,82,95,76,105,19,152,41,189,100,233,47,144,13,183,29],[245,84,61,223,236,149,70,57,218,3,27,107,47,101,36,21,72,75,234,188,24,189,162,141,91,73,57,96,104,135,61,9],[196,123,46,147,161,132,98,243,145,121,181,160,54,44,47,142,29,61,250,62,112,193,57,242,163,130,58,98,251,92,207,17],[30,49,244,175,142,184,117,67,134,8,70,27,193,188,19,131,161,8,97,37,29,116,112,92,71,137,211,192,25,25,151,81],[155,97,62,53,52,15,153,47,158,196,55,100,234,157,182,161,247,122,165,177,119,171,146,125,115,157,82,193,59,10,161,246],[55,5,226,55,154,137,159,146,208,94,178,49,186,248,166,203,26,85,64,45,68,136,215,104,88,87,107,204,181,47,46,73],[120,53,3,42,251,6,30,69,169,199,179,11,69,58,203,189,218,10,140,106,243,66,155,123,120,11,116,186,157,12,198,51],[119,143,18,134,186,167,40,79,245,151,23,136,160,110,172,209,47,33,242,68,132,31,129,134,124,166,193,144,230,188,230,172],[89,34,20,232,250,27,182,122,195,88,230,158,243,81,178,154,163,22,189,131,8,251,75,144,136,232,186,28,72,216,85,10],[136,205,16,54,180,87,90,232,154,81,77,6,46,178,179,255,140,222,0,78,157,233,56,78,55,238,39,64,16,50,42,68],[70,188,63,171,118,161,112,69,206,201,62,106,172,196,129,63,108,15,59,201,163,125,165,0,205,242,169,15,117,14,172,226],[179,175,238,24,236,14,25,150,36,179,129,225,252,248,197,140,21,108,21,159,180,253,215,94,27,36,90,159,189,190,215,141],[108,242,137,202,82,231,207,136,227,85,251,126,218,212,81,152,94,35,253,157,11,38,167,211,160,116,32,34,41,225,154,73],[246,141,238,131,157,109,59,150,153,248,76,25,58,131,87,34,109,203,205,68,240,50,65,136,61,74,250,27,119,11,18,103],[128,55,218,216,51,49,135,101,9,76,36,199,105,244,163,252,62,165,24,63,176,233,114,30,160,34,218,34,41,214,174,48],[105,226,179,237,236,47,75,219,63,90,42,27,131,49,195,147,206,248,135,128,134,206,13,214,96,46,239,7,51,132,41,144],[190,20,55,68,179,198,208,92,128,83,12,160,17,128,195,40,103,33,21,198,52,164,220,168,142,102,7,195,158,38,196,238],[31,241,44,119,163,181,101,157,153,66,133,25,221,35,246,63,227,135,225,74,10,111,90,43,189,112,49,144,29,156,47,33],[54,45,74,171,152,34,78,244,86,9,152,174,92,205,0,10,111,107,171,46,205,228,228,109,166,46,104,235,185,250,173,98],[25,119,7,148,47,17,36,242,27,112,9,191,117,202,224,37,117,236,211,85,191,24,113,253,121,164,139,237,143,106,189,132],[194,53,19,93,36,230,235,38,40,9,85,254,141,138,13,156,43,125,246,115,181,235,124,167,239,164,54,254,127,18,6,228],[241,46,60,116,121,186,191,194,78,48,162,243,8,213,25,28,209,223,184,180,141,70,174,71,70,115,64,202,161,174,4,118],[12,185,242,47,227,181,247,142,74,253,51,226,228,184,80,194,66,3,35,174,193,170,69,231,254,215,141,12,0,76,149,139],[196,200,190,218,234,173,172,49,121,208,196,54,225,107,247,249,154,64,191,218,208,95,131,10,13,111,20,214,225,68,50,164],[3,0,41,199,158,176,139,121,81,101,92,255,48,13,233,37,181,62,214,230,145,135,106,130,83,196,220,221,91,162,165,171],[13,84,35,153,1,106,6,238,164,99,109,63,83,160,209,106,158,104,117,80,156,34,187,121,44,248,162,13,208,52,22,170],[222,174,102,239,39,53,58,10,237,163,222,248,143,20,49,150,68,78,15,106,192,153,132,42,116,154,185,196,33,34,236,34],[87,67,81,103,113,172,112,2,117,230,70,160,120,255,189,241,205,229,13,217,165,214,16,213,93,132,30,195,129,163,241,229],[137,187,224,254,95,11,62,30,109,239,224,84,170,52,167,44,59,159,126,18,122,64,162,255,142,157,62,49,235,112,92,50],[119,72,75,199,154,206,71,35,15,147,183,2,62,50,139,151,126,186,172,230,19,79,167,233,169,65,64,2,197,130,227,173],[161,119,18,145,49,244,85,210,77,92,123,96,130,43,178,207,93,82,220,96,232,81,175,187,216,63,147,90,162,5,60,223],[75,117,74,86,42,124,214,93,75,153,15,135,183,119,34,163,137,134,32,52,171,184,246,69,250,168,129,251,24,24,172,225],[164,143,125,73,9,136,224,83,206,208,218,50,227,132,228,182,208,226,184,188,239,221,123,190,214,45,156,84,64,78,244,183],[27,75,75,255,229,43,118,231,33,137,230,66,105,138,182,158,1,71,195,10,183,26,187,153,4,126,223,161,78,0,142,111],[40,222,30,107,167,105,85,49,223,13,105,127,179,244,121,121,153,0,187,202,2,157,63,254,189,214,33,139,18,158,11,98],[60,125,223,8,206,26,230,36,45,237,76,246,2,211,161,34,108,94,22,73,65,243,237,227,218,186,150,121,7,119,53,252],[128,205,82,208,5,215,138,132,132,232,139,114,65,18,153,180,179,222,195,228,21,105,98,170,175,171,100,207,46,77,252,148],[21,168,10,177,104,190,96,114,221,78,202,33,237,191,53,65,34,255,49,203,211,93,238,83,62,229,59,6,131,12,180,92],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},"StartState":{"machineHash":[111,17,227,235,48,226,181,27,201,26,80,119,4,3,135,207,29,128,63,23,195,112,100,184,198,150,223,237,187,191,41,254],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":816759,"sendCount":0,"logCount":1,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[220,9,133,16,46,65,66,31,213,113,151,134,218,108,161,87,213,48,0,194,33,145,235,24,250,16,37,255,78,177,73,106]},"SegmentToChallenge":283,"InconsistentSegment":{"Start":816749,"Length":175},"SubCuts":[[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[14,241,15,203,251,243,159,96,39,251,233,115,146,249,69,149,3,61,102,203,209,242,157,31,229,148,129,218,217,51,91,245],[222,98,147,218,223,4,141,45,160,139,15,72,17,216,240,223,157,25,129,103,80,21,173,86,249,122,209,115,0,135,224,179],[222,98,147,218,223,4,141,45,160,139,15,72,17,216,240,223,157,25,129,103,80,21,173,86,249,122,209,115,0,135,224,179],[177,226,147,6,162,24,222,159,7,252,152,96,172,192,139,199,117,203,77,15,107,34,63,217,104,49,161,191,161,66,83,112],[177,226,147,6,162,24,222,159,7,252,152,96,172,192,139,199,117,203,77,15,107,34,63,217,104,49,161,191,161,66,83,112],[59,28,38,236,113,175,81,246,179,232,96,43,163,20,128,150,140,141,204,171,240,168,156,6,246,174,43,33,237,191,70,164],[213,143,4,36,185,93,22,157,104,150,231,188,1,149,194,236,94,71,84,114,128,188,66,26,74,245,128,28,37,56,191,236],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[179,215,201,219,222,94,30,210,242,4,26,240,140,231,124,39,17,229,52,235,141,181,51,78,228,6,209,95,68,233,37,11],[155,216,137,151,154,243,188,143,85,35,202,99,175,195,253,103,35,215,120,239,137,215,166,188,113,221,244,164,95,162,66,125],[106,154,225,200,97,197,218,172,246,36,21,73,224,149,102,211,37,29,49,139,187,119,32,12,158,189,132,226,150,121,76,87],[12,214,7,49,230,117,136,207,103,63,46,115,32,72,162,63,153,74,123,72,147,120,101,172,40,91,230,13,244,63,94,46],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[79,227,185,213,117,184,149,158,208,243,211,215,141,145,155,245,20,78,156,105,175,217,159,106,118,133,234,78,194,217,97,81],[87,5,219,65,209,172,35,201,132,163,222,38,5,55,94,57,94,142,138,108,182,65,221,255,40,28,212,215,15,255,32,135],[174,150,115,254,243,41,239,19,226,28,184,156,0,58,87,8,198,229,181,62,144,208,87,125,12,67,213,202,71,226,82,134],[69,3,124,65,187,241,70,246,193,80,75,247,50,134,22,193,223,236,194,21,179,245,97,82,250,87,237,247,114,244,73,145],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[135,179,160,3,234,60,69,136,181,137,24,181,95,36,88,95,217,139,109,214,241,116,105,119,124,65,211,245,142,194,43,131],[142,132,69,187,239,106,233,174,75,187,176,30,174,199,249,118,154,77,216,96,8,41,10,134,104,6,232,226,97,32,29,253],[162,219,188,129,229,177,39,75,64,158,148,142,170,252,124,201,76,66,154,122,139,115,42,17,115,63,28,95,72,111,92,129],[231,61,115,9,22,215,2,193,17,139,224,95,136,40,164,160,125,189,175,82,2,202,21,104,215,125,236,158,80,239,29,131],[231,61,115,9,22,215,2,193,17,139,224,95,136,40,164,160,125,189,175,82,2,202,21,104,215,125,236,158,80,239,29,131],[168,9,140,105,135,144,106,63,5,254,61,22,159,182,223,202,235,55,192,22,64,201,59,109,180,51,214,173,62,125,90,206],[10,104,81,47,23,15,21,180,216,156,11,115,187,120,151,78,170,152,187,255,185,239,50,192,146,143,8,240,236,153,190,4],[10,104,81,47,23,15,21,180,216,156,11,115,187,120,151,78,170,152,187,255,185,239,50,192,146,143,8,240,236,153,190,4],[147,184,80,141,8,181,85,147,187,212,72,230,115,35,51,53,42,133,247,120,144,247,168,116,103,40,142,100,152,233,232,176],[147,184,80,141,8,181,85,147,187,212,72,230,115,35,51,53,42,133,247,120,144,247,168,116,103,40,142,100,152,233,232,176],[50,153,96,225,195,53,95,5,205,57,101,2,240,236,40,177,162,165,141,233,169,123,36,113,145,150,140,65,217,147,180,140],[106,85,112,151,6,14,190,64,80,181,212,108,134,124,184,25,2,18,13,150,252,164,9,205,9,231,72,184,119,233,204,19],[125,205,197,99,79,85,227,176,106,114,104,240,96,63,75,78,144,249,60,74,215,82,30,134,254,157,130,16,50,71,224,32],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[34,62,125,100,93,167,131,115,27,234,139,38,79,57,167,168,156,98,94,234,247,249,160,175,134,164,114,133,53,24,9,190],[27,72,62,58,5,12,97,195,199,222,249,46,26,106,70,236,168,50,33,81,140,138,120,53,50,18,165,71,216,44,255,16],[93,73,58,91,159,11,92,199,153,134,144,149,238,136,234,195,79,31,98,51,207,198,120,6,7,160,235,21,125,69,237,118],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[213,1,181,38,145,138,94,90,103,226,16,119,83,131,204,247,127,164,225,117,219,197,186,240,15,58,121,47,221,161,71,72],[197,17,74,211,108,22,195,197,66,237,242,129,154,64,99,181,80,143,130,22,10,30,74,8,142,128,64,193,1,87,81,126],[78,161,89,193,13,52,113,186,69,18,36,187,184,200,85,82,159,219,33,3,193,128,94,156,208,94,187,190,167,85,238,249],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[227,132,81,198,57,4,138,161,153,88,185,84,127,84,108,201,168,117,243,254,171,127,149,172,130,18,12,23,33,111,0,13],[227,132,81,198,57,4,138,161,153,88,185,84,127,84,108,201,168,117,243,254,171,127,149,172,130,18,12,23,33,111,0,13],[227,132,81,198,57,4,138,161,153,88,185,84,127,84,108,201,168,117,243,254,171,127,149,172,130,18,12,23,33,111,0,13],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[107,233,54,178,213,173,79,3,206,78,103,30,93,5,242,137,204,113,119,50,112,114,70,139,212,227,49,78,76,226,165,195],[60,104,53,215,233,224,188,78,134,214,15,97,219,243,252,51,66,136,80,173,221,63,179,71,224,34,125,228,164,62,217,113],[60,104,53,215,233,224,188,78,134,214,15,97,219,243,252,51,66,136,80,173,221,63,179,71,224,34,125,228,164,62,217,113],[213,178,84,81,253,73,115,177,35,81,55,42,0,156,114,208,195,209,95,72,114,145,240,69,236,158,143,183,187,65,191,125],[76,34,125,155,100,216,90,104,93,181,201,237,40,208,9,112,32,21,164,202,138,161,137,122,253,242,188,254,255,251,38,75],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[14,32,179,93,39,175,97,96,208,167,103,22,223,225,126,138,140,238,185,229,156,113,238,25,210,188,191,237,8,213,21,86],[253,82,244,210,171,253,138,2,103,180,212,202,69,13,151,121,104,147,155,184,216,244,223,2,219,11,137,228,86,87,242,40],[195,167,187,76,183,39,121,112,57,41,186,68,150,94,156,53,224,84,224,82,46,133,108,213,35,8,32,128,196,220,181,106],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[8,217,83,182,90,69,185,118,221,219,94,96,244,20,217,66,42,201,235,202,41,197,228,251,36,91,41,249,252,100,37,202],[8,217,83,182,90,69,185,118,221,219,94,96,244,20,217,66,42,201,235,202,41,197,228,251,36,91,41,249,252,100,37,202],[21,64,24,82,155,32,247,165,83,6,115,54,129,103,255,133,187,77,103,122,21,146,175,224,19,149,168,20,15,88,173,236],[186,13,131,38,188,110,203,69,164,197,134,211,11,247,170,131,63,207,209,233,41,226,5,179,131,164,45,103,121,126,85,25],[186,13,131,38,188,110,203,69,164,197,134,211,11,247,170,131,63,207,209,233,41,226,5,179,131,164,45,103,121,126,85,25],[195,86,130,239,229,246,203,220,84,18,115,196,211,245,18,61,5,187,197,97,201,186,177,229,26,178,156,185,210,78,133,135],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[50,126,39,134,205,138,78,180,21,117,183,187,19,145,70,11,15,233,11,7,160,111,69,217,192,145,12,157,49,137,62,52],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62]]},{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":816749,"Length":175},"Cuts":[[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[124,255,227,45,69,19,185,42,109,6,92,121,230,196,205,83,176,212,131,217,250,10,163,96,146,90,19,208,201,68,59,219],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[210,25,226,223,212,231,110,244,93,53,101,156,43,7,21,91,143,140,106,124,254,175,176,144,61,109,6,243,253,189,231,221],[14,241,15,203,251,243,159,96,39,251,233,115,146,249,69,149,3,61,102,203,209,242,157,31,229,148,129,218,217,51,91,245],[222,98,147,218,223,4,141,45,160,139,15,72,17,216,240,223,157,25,129,103,80,21,173,86,249,122,209,115,0,135,224,179],[222,98,147,218,223,4,141,45,160,139,15,72,17,216,240,223,157,25,129,103,80,21,173,86,249,122,209,115,0,135,224,179],[177,226,147,6,162,24,222,159,7,252,152,96,172,192,139,199,117,203,77,15,107,34,63,217,104,49,161,191,161,66,83,112],[177,226,147,6,162,24,222,159,7,252,152,96,172,192,139,199,117,203,77,15,107,34,63,217,104,49,161,191,161,66,83,112],[59,28,38,236,113,175,81,246,179,232,96,43,163,20,128,150,140,141,204,171,240,168,156,6,246,174,43,33,237,191,70,164],[213,143,4,36,185,93,22,157,104,150,231,188,1,149,194,236,94,71,84,114,128,188,66,26,74,245,128,28,37,56,191,236],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[78,116,31,65,247,198,15,51,207,82,147,10,97,61,215,171,83,143,104,222,55,105,81,163,251,189,149,179,186,165,65,58],[179,215,201,219,222,94,30,210,242,4,26,240,140,231,124,39,17,229,52,235,141,181,51,78,228,6,209,95,68,233,37,11],[155,216,137,151,154,243,188,143,85,35,202,99,175,195,253,103,35,215,120,239,137,215,166,188,113,221,244,164,95,162,66,125],[106,154,225,200,97,197,218,172,246,36,21,73,224,149,102,211,37,29,49,139,187,119,32,12,158,189,132,226,150,121,76,87],[12,214,7,49,230,117,136,207,103,63,46,115,32,72,162,63,153,74,123,72,147,120,101,172,40,91,230,13,244,63,94,46],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[231,249,49,73,145,14,34,193,20,4,40,255,76,101,56,177,44,86,100,42,214,96,69,200,100,235,138,215,47,42,238,191],[79,227,185,213,117,184,149,158,208,243,211,215,141,145,155,245,20,78,156,105,175,217,159,106,118,133,234,78,194,217,97,81],[87,5,219,65,209,172,35,201,132,163,222,38,5,55,94,57,94,142,138,108,182,65,221,255,40,28,212,215,15,255,32,135],[174,150,115,254,243,41,239,19,226,28,184,156,0,58,87,8,198,229,181,62,144,208,87,125,12,67,213,202,71,226,82,134],[69,3,124,65,187,241,70,246,193,80,75,247,50,134,22,193,223,236,194,21,179,245,97,82,250,87,237,247,114,244,73,145],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[28,153,77,212,78,187,237,153,247,218,77,53,6,45,166,172,115,47,121,77,141,116,226,49,249,173,242,190,230,226,244,219],[135,179,160,3,234,60,69,136,181,137,24,181,95,36,88,95,217,139,109,214,241,116,105,119,124,65,211,245,142,194,43,131],[142,132,69,187,239,106,233,174,75,187,176,30,174,199,249,118,154,77,216,96,8,41,10,134,104,6,232,226,97,32,29,253],[162,219,188,129,229,177,39,75,64,158,148,142,170,252,124,201,76,66,154,122,139,115,42,17,115,63,28,95,72,111,92,129],[231,61,115,9,22,215,2,193,17,139,224,95,136,40,164,160,125,189,175,82,2,202,21,104,215,125,236,158,80,239,29,131],[231,61,115,9,22,215,2,193,17,139,224,95,136,40,164,160,125,189,175,82,2,202,21,104,215,125,236,158,80,239,29,131],[168,9,140,105,135,144,106,63,5,254,61,22,159,182,223,202,235,55,192,22,64,201,59,109,180,51,214,173,62,125,90,206],[10,104,81,47,23,15,21,180,216,156,11,115,187,120,151,78,170,152,187,255,185,239,50,192,146,143,8,240,236,153,190,4],[10,104,81,47,23,15,21,180,216,156,11,115,187,120,151,78,170,152,187,255,185,239,50,192,146,143,8,240,236,153,190,4],[147,184,80,141,8,181,85,147,187,212,72,230,115,35,51,53,42,133,247,120,144,247,168,116,103,40,142,100,152,233,232,176],[147,184,80,141,8,181,85,147,187,212,72,230,115,35,51,53,42,133,247,120,144,247,168,116,103,40,142,100,152,233,232,176],[50,153,96,225,195,53,95,5,205,57,101,2,240,236,40,177,162,165,141,233,169,123,36,113,145,150,140,65,217,147,180,140],[106,85,112,151,6,14,190,64,80,181,212,108,134,124,184,25,2,18,13,150,252,164,9,205,9,231,72,184,119,233,204,19],[125,205,197,99,79,85,227,176,106,114,104,240,96,63,75,78,144,249,60,74,215,82,30,134,254,157,130,16,50,71,224,32],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[252,228,4,216,96,251,140,117,114,118,14,65,157,70,194,82,57,142,100,178,235,76,220,4,148,128,165,94,109,167,3,250],[34,62,125,100,93,167,131,115,27,234,139,38,79,57,167,168,156,98,94,234,247,249,160,175,134,164,114,133,53,24,9,190],[27,72,62,58,5,12,97,195,199,222,249,46,26,106,70,236,168,50,33,81,140,138,120,53,50,18,165,71,216,44,255,16],[93,73,58,91,159,11,92,199,153,134,144,149,238,136,234,195,79,31,98,51,207,198,120,6,7,160,235,21,125,69,237,118],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[99,67,106,16,30,167,165,43,112,98,178,248,230,184,234,140,150,177,13,143,213,87,78,96,116,12,148,163,41,134,222,78],[213,1,181,38,145,138,94,90,103,226,16,119,83,131,204,247,127,164,225,117,219,197,186,240,15,58,121,47,221,161,71,72],[197,17,74,211,108,22,195,197,66,237,242,129,154,64,99,181,80,143,130,22,10,30,74,8,142,128,64,193,1,87,81,126],[78,161,89,193,13,52,113,186,69,18,36,187,184,200,85,82,159,219,33,3,193,128,94,156,208,94,187,190,167,85,238,249],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[153,207,21,141,62,142,77,155,82,205,222,79,104,174,38,212,106,67,33,84,175,200,45,73,222,57,104,71,92,118,204,21],[227,132,81,198,57,4,138,161,153,88,185,84,127,84,108,201,168,117,243,254,171,127,149,172,130,18,12,23,33,111,0,13],[227,132,81,198,57,4,138,161,153,88,185,84,127,84,108,201,168,117,243,254,171,127,149,172,130,18,12,23,33,111,0,13],[227,132,81,198,57,4,138,161,153,88,185,84,127,84,108,201,168,117,243,254,171,127,149,172,130,18,12,23,33,111,0,13],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[223,167,21,216,148,119,2,162,146,48,117,79,129,220,49,178,185,126,126,167,232,223,36,23,127,32,142,149,241,167,125,164],[107,233,54,178,213,173,79,3,206,78,103,30,93,5,242,137,204,113,119,50,112,114,70,139,212,227,49,78,76,226,165,195],[60,104,53,215,233,224,188,78,134,214,15,97,219,243,252,51,66,136,80,173,221,63,179,71,224,34,125,228,164,62,217,113],[60,104,53,215,233,224,188,78,134,214,15,97,219,243,252,51,66,136,80,173,221,63,179,71,224,34,125,228,164,62,217,113],[213,178,84,81,253,73,115,177,35,81,55,42,0,156,114,208,195,209,95,72,114,145,240,69,236,158,143,183,187,65,191,125],[76,34,125,155,100,216,90,104,93,181,201,237,40,208,9,112,32,21,164,202,138,161,137,122,253,242,188,254,255,251,38,75],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[120,52,154,216,188,109,152,105,248,141,39,70,230,160,26,57,78,89,139,142,9,249,16,213,189,205,79,152,61,230,212,27],[14,32,179,93,39,175,97,96,208,167,103,22,223,225,126,138,140,238,185,229,156,113,238,25,210,188,191,237,8,213,21,86],[253,82,244,210,171,253,138,2,103,180,212,202,69,13,151,121,104,147,155,184,216,244,223,2,219,11,137,228,86,87,242,40],[195,167,187,76,183,39,121,112,57,41,186,68,150,94,156,53,224,84,224,82,46,133,108,213,35,8,32,128,196,220,181,106],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[188,241,252,97,114,170,170,98,133,118,10,99,219,30,146,37,188,90,196,20,136,24,178,17,180,12,253,150,141,189,31,21],[8,217,83,182,90,69,185,118,221,219,94,96,244,20,217,66,42,201,235,202,41,197,228,251,36,91,41,249,252,100,37,202],[8,217,83,182,90,69,185,118,221,219,94,96,244,20,217,66,42,201,235,202,41,197,228,251,36,91,41,249,252,100,37,202],[21,64,24,82,155,32,247,165,83,6,115,54,129,103,255,133,187,77,103,122,21,146,175,224,19,149,168,20,15,88,173,236],[186,13,131,38,188,110,203,69,164,197,134,211,11,247,170,131,63,207,209,233,41,226,5,179,131,164,45,103,121,126,85,25],[186,13,131,38,188,110,203,69,164,197,134,211,11,247,170,131,63,207,209,233,41,226,5,179,131,164,45,103,121,126,85,25],[195,86,130,239,229,246,203,220,84,18,115,196,211,245,18,61,5,187,197,97,201,186,177,229,26,178,156,185,210,78,133,135],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[229,137,71,233,144,141,103,160,124,152,96,32,96,209,18,83,220,75,18,57,131,107,175,130,235,162,105,208,21,101,11,255],[50,126,39,134,205,138,78,180,21,117,183,187,19,145,70,11,15,233,11,7,160,111,69,217,192,145,12,157,49,137,62,52],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62],[224,143,191,20,215,17,239,106,194,75,45,141,71,15,66,145,146,227,62,115,119,151,188,240,56,56,219,234,196,3,59,62]]},"StartState":{"machineHash":[154,243,196,26,172,228,162,15,70,255,41,175,103,225,109,122,190,181,217,208,77,41,154,53,57,151,57,212,67,22,211,122],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":816892,"sendCount":0,"logCount":1,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[220,9,133,16,46,65,66,31,213,113,151,134,218,108,161,87,213,48,0,194,33,145,235,24,250,16,37,255,78,177,73,106]},"SegmentToChallenge":143,"InconsistentSegment":{"Start":816892,"Length":1},"SubCuts":[[50,126,39,134,205,138,78,180,21,117,183,187,19,145,70,11,15,233,11,7,160,111,69,217,192,145,12,157,49,137,62,52],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},{"Kind":"OneStepProof","Assertion":{"beforeState":{"machineHash":[143,98,77,89,7,174,68,16,102,217,175,184,111,255,113,119,81,83,45,86,204,184,69,156,19,9,87,11,247,164,133,59],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":766873,"sendCount":0,"logCount":0,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},"afterState":{"machineHash":[110,178,70,119,39,103,33,82,24,144,250,144,214,103,82,143,107,231,41,239,49,231,187,94,93,252,109,243,17,5,190,91],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":0,"gasUsed":837224,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]}},"PrevBisection":{"ChallengedSegment":{"Start":816892,"Length":1},"Cuts":[[50,126,39,134,205,138,78,180,21,117,183,187,19,145,70,11,15,233,11,7,160,111,69,217,192,145,12,157,49,137,62,52],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},"SegmentToChallenge":0,"ChallengedSegment":{"Start":816892,"Length":1},"PreviousCut":{"machineHash":[154,243,196,26,172,228,162,15,70,255,41,175,103,225,109,122,190,181,217,208,77,41,154,53,57,151,57,212,67,22,211,122],"inboxAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"inboxCount":0,"gasUsed":816892,"sendCount":0,"logCount":1,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[220,9,133,16,46,65,66,31,213,113,151,134,218,108,161,87,213,48,0,194,33,145,235,24,250,16,37,255,78,177,73,106]},"ProofData":"0x72010000000000000000000000000000000000000000000000000000000000000000000093662bba7ab00e3c7fa8f91b369126b02fc54cbde9e33acc3c372171ca0c4457bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a00000000000000000000000000000000000000000000000000000000000000013054ce0625b17394ee20df9871897a9c0f94580e452827640ee662a85fcdf87c00000000000000000000000000000000000000000000000000000000000000340215849ddac22de02d1d3d337d1f8ed506fba4de25de2fc374a26c0a7924347b97000000000000000000000000000000000000000000000000000000000000080b02bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a0000000000000000000000000000000000000000000000000000000000000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff38903c6f76ccec3c469f951a7713aacd53d246162cd94d315a29d4d1037dd1bce62e2010b9be6b9f6b0ec4ad126c429961f3951773f7381b700000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000231f401d00000000000000000000000000000000000000000000000000000000000000c0ece83efd40ff2c9c69c406a49cbd4e7019fc5807db782ea78e3ee698923a412c000000000000000000000000000000000000000000000000000000000000000344edde536e3f4df60ef7ec43bc928f7438fa9804cb64ef42045ab4781bbc0bb300000000000000000000000000000000000000000000000000000000000000001567aa7175e04611d194275bb504cc64e920959dd01df9d86ab047367aa4c53400000000000000000000000035248943dcb4b8e5dbbb67d1f7d3ab1bc36ce9a8000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100ec7a56f92696a470fa3ced485f2121e5e76d10284cbc247d1fef07203bf7a37dc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47002","BufferProofData":"0x"}],"AsserterError":"execution reverted: TOO_MANY_MESSAGES"} \ No newline at end of file diff --git a/packages/arb-bridge-eth/test/challenges/TestChallengeToUnreachableSmall.json b/packages/arb-bridge-eth/test/challenges/TestChallengeToUnreachableSmall.json index c5939d055a..221fca6cd6 100755 --- a/packages/arb-bridge-eth/test/challenges/TestChallengeToUnreachableSmall.json +++ b/packages/arb-bridge-eth/test/challenges/TestChallengeToUnreachableSmall.json @@ -1 +1 @@ -{"ChallengedAssertion":{"beforeState":{"machineHash":[186,166,207,173,26,158,255,82,238,77,82,93,135,94,59,41,57,223,67,92,158,68,231,247,8,33,172,61,160,6,57,103],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":835637,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]},"afterState":{"machineHash":[186,166,207,173,26,158,255,82,238,77,82,93,135,94,59,41,57,223,67,92,158,68,231,247,8,33,172,61,160,6,57,103],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":1671275,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]}},"Messages":[{"Kind":11,"Sender":"0x9be6b9f6b0ec4ad126c429961f3951773f7381b7","InboxSeqNum":0,"GasPrice":589250589,"Data":"0xece83efd40ff2c9c69c406a49cbd4e7019fc5807db782ea78e3ee698923a412c000000000000000000000000000000000000000000000000000000000000000344edde536e3f4df60ef7ec43bc928f7438fa9804cb64ef42045ab4781bbc0bb300000000000000000000000000000000000000000000000000000000000000001567aa7175e04611d194275bb504cc64e920959dd01df9d86ab047367aa4c53400000000000000000000000035248943dcb4b8e5dbbb67d1f7d3ab1bc36ce9a8","ChainTime":{"BlockNum":4,"Timestamp":40}}],"Moves":[{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":835637,"Length":835638},"Cuts":[[238,193,154,28,117,159,229,251,0,32,131,232,107,108,217,219,144,38,37,226,141,77,214,212,203,137,71,28,132,65,89,151],[86,219,177,82,186,48,218,198,135,108,190,64,33,181,70,94,102,16,141,176,43,46,238,160,122,144,79,154,38,122,128,235]]},"StartState":{"machineHash":[186,166,207,173,26,158,255,82,238,77,82,93,135,94,59,41,57,223,67,92,158,68,231,247,8,33,172,61,160,6,57,103],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":835637,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]},"SegmentToChallenge":0,"InconsistentSegment":{"Start":835637,"Length":835638},"SubCuts":[[238,193,154,28,117,159,229,251,0,32,131,232,107,108,217,219,144,38,37,226,141,77,214,212,203,137,71,28,132,65,89,151],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},{"Kind":"ProveContinuedExecution","Assertion":{"beforeState":{"machineHash":[186,166,207,173,26,158,255,82,238,77,82,93,135,94,59,41,57,223,67,92,158,68,231,247,8,33,172,61,160,6,57,103],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":835637,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]},"afterState":{"machineHash":[186,166,207,173,26,158,255,82,238,77,82,93,135,94,59,41,57,223,67,92,158,68,231,247,8,33,172,61,160,6,57,103],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":1671275,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]}},"PrevBisection":{"ChallengedSegment":{"Start":835637,"Length":835638},"Cuts":[[238,193,154,28,117,159,229,251,0,32,131,232,107,108,217,219,144,38,37,226,141,77,214,212,203,137,71,28,132,65,89,151],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},"SegmentToChallenge":0,"ChallengedSegment":{"Start":835637,"Length":2127},"PreviousCut":{"machineHash":[186,166,207,173,26,158,255,82,238,77,82,93,135,94,59,41,57,223,67,92,158,68,231,247,8,33,172,61,160,6,57,103],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":835637,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]}}],"AsserterError":"execution reverted: NOT_CONT"} \ No newline at end of file +{"ChallengedAssertion":{"beforeState":{"machineHash":[110,178,70,119,39,103,33,82,24,144,250,144,214,103,82,143,107,231,41,239,49,231,187,94,93,252,109,243,17,5,190,91],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":837224,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]},"afterState":{"machineHash":[110,178,70,119,39,103,33,82,24,144,250,144,214,103,82,143,107,231,41,239,49,231,187,94,93,252,109,243,17,5,190,91],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":1674449,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]}},"Messages":[{"Kind":11,"Sender":"0x9be6b9f6b0ec4ad126c429961f3951773f7381b7","InboxSeqNum":0,"GasPrice":589250589,"Data":"0xece83efd40ff2c9c69c406a49cbd4e7019fc5807db782ea78e3ee698923a412c000000000000000000000000000000000000000000000000000000000000000344edde536e3f4df60ef7ec43bc928f7438fa9804cb64ef42045ab4781bbc0bb300000000000000000000000000000000000000000000000000000000000000001567aa7175e04611d194275bb504cc64e920959dd01df9d86ab047367aa4c53400000000000000000000000035248943dcb4b8e5dbbb67d1f7d3ab1bc36ce9a8","ChainTime":{"BlockNum":4,"Timestamp":40}}],"Moves":[{"Kind":"Bisect","PrevBisection":{"ChallengedSegment":{"Start":837224,"Length":837225},"Cuts":[[25,29,41,228,91,14,155,122,149,57,145,154,126,165,41,163,206,234,167,9,156,162,214,110,199,179,170,36,129,168,176,250],[55,39,252,214,8,102,66,33,190,108,113,224,101,192,223,229,253,23,203,34,251,200,83,187,227,103,255,18,133,100,180,70]]},"StartState":{"machineHash":[110,178,70,119,39,103,33,82,24,144,250,144,214,103,82,143,107,231,41,239,49,231,187,94,93,252,109,243,17,5,190,91],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":837224,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]},"SegmentToChallenge":0,"InconsistentSegment":{"Start":837224,"Length":837225},"SubCuts":[[25,29,41,228,91,14,155,122,149,57,145,154,126,165,41,163,206,234,167,9,156,162,214,110,199,179,170,36,129,168,176,250],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},{"Kind":"ProveContinuedExecution","Assertion":{"beforeState":{"machineHash":[110,178,70,119,39,103,33,82,24,144,250,144,214,103,82,143,107,231,41,239,49,231,187,94,93,252,109,243,17,5,190,91],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":837224,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]},"afterState":{"machineHash":[110,178,70,119,39,103,33,82,24,144,250,144,214,103,82,143,107,231,41,239,49,231,187,94,93,252,109,243,17,5,190,91],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":1674449,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]}},"PrevBisection":{"ChallengedSegment":{"Start":837224,"Length":837225},"Cuts":[[25,29,41,228,91,14,155,122,149,57,145,154,126,165,41,163,206,234,167,9,156,162,214,110,199,179,170,36,129,168,176,250],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]},"SegmentToChallenge":0,"ChallengedSegment":{"Start":837224,"Length":2118},"PreviousCut":{"machineHash":[110,178,70,119,39,103,33,82,24,144,250,144,214,103,82,143,107,231,41,239,49,231,187,94,93,252,109,243,17,5,190,91],"inboxAcc":[109,40,206,248,131,148,169,118,75,3,38,129,52,191,192,46,240,186,228,131,148,173,47,136,50,228,157,135,169,199,85,156],"inboxCount":2,"gasUsed":837224,"sendCount":0,"logCount":2,"sendAcc":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"logAcc":[62,76,203,162,214,132,39,29,229,169,226,122,111,209,112,17,198,89,63,201,8,89,95,176,10,37,137,108,178,128,52,114]}}],"AsserterError":"execution reverted: NOT_CONT"} \ No newline at end of file diff --git a/packages/arb-os b/packages/arb-os index 124792a3da..03001f9d2c 160000 --- a/packages/arb-os +++ b/packages/arb-os @@ -1 +1 @@ -Subproject commit 124792a3dabf146fe65a98a071ea96a85d874ca7 +Subproject commit 03001f9d2cb543f1fb491542a0fa3638268057e4 From 8268d2c7e910ed5f48d0d35c25a346639ba14e5e Mon Sep 17 00:00:00 2001 From: Harry Kalodner Date: Thu, 25 Aug 2022 11:29:53 -0400 Subject: [PATCH 126/128] Update arbos pin --- packages/arb-os | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/arb-os b/packages/arb-os index 03001f9d2c..234cf67001 160000 --- a/packages/arb-os +++ b/packages/arb-os @@ -1 +1 @@ -Subproject commit 03001f9d2cb543f1fb491542a0fa3638268057e4 +Subproject commit 234cf670016d675095110cd944cb82fde9c460b8 From eeabd89fa82c9274dbcc272b7859a519221896c9 Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Thu, 25 Aug 2022 11:27:04 -0700 Subject: [PATCH 127/128] Fix chain id option to use classic option style instead of nitro --- packages/arb-node-core/cmd/arb-relay/arb-relay.go | 12 ++++++------ packages/arb-rpc-node/rpc/launch.go | 2 +- packages/arb-util/configuration/configuration.go | 5 ++--- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/packages/arb-node-core/cmd/arb-relay/arb-relay.go b/packages/arb-node-core/cmd/arb-relay/arb-relay.go index 8a798a86d0..90a84c3865 100644 --- a/packages/arb-node-core/cmd/arb-relay/arb-relay.go +++ b/packages/arb-node-core/cmd/arb-relay/arb-relay.go @@ -80,10 +80,10 @@ func startup() error { defer cancelFunc() config, err := configuration.ParseRelay() - if err != nil || len(config.Feed.Input.URLs) == 0 || config.L2.ChainID == 0 { + if err != nil || len(config.Feed.Input.URLs) == 0 || config.Node.ChainID == 0 { fmt.Printf("\n") fmt.Printf("Sample usage: arb-relay --conf= \n") - fmt.Printf(" or: arb-relay --feed.input.url= --l2.chain-id=\n\n") + fmt.Printf(" or: arb-relay --feed.input.url= --node.chain-id=\n\n") if err != nil && !strings.Contains(err.Error(), "help requested") { fmt.Printf("%s\n", err.Error()) } @@ -127,17 +127,17 @@ func NewArbRelay(config *configuration.Config) (*ArbRelay, chan error) { confirmedAccumulatorChan := make(chan common.Hash, 10) broadcastClientErrChan := make(chan error, 1) for _, address := range config.Feed.Input.URLs { - client := broadcastclient.NewBroadcastClient(address, config.L2.ChainID, nil, config.Feed.Input.Timeout, broadcastClientErrChan) + client := broadcastclient.NewBroadcastClient(address, config.Node.ChainID, nil, config.Feed.Input.Timeout, broadcastClientErrChan) client.ConfirmedAccumulatorListener = confirmedAccumulatorChan broadcastClients = append(broadcastClients, client) } arbRelay := &ArbRelay{ - broadcaster: broadcaster.NewBroadcaster(&config.Feed.Output, 0), + broadcaster: broadcaster.NewBroadcaster(&config.Feed.Output, config.Node.ChainID), broadcastClients: broadcastClients, confirmedAccumulatorChan: confirmedAccumulatorChan, } - arbRelay.chainIdBig = new(big.Int).SetUint64(config.L2.ChainID) - arbRelay.chainIdHex = hexutil.Uint64(config.L2.ChainID) + arbRelay.chainIdBig = new(big.Int).SetUint64(config.Node.ChainID) + arbRelay.chainIdHex = hexutil.Uint64(config.Node.ChainID) return arbRelay, broadcastClientErrChan } diff --git a/packages/arb-rpc-node/rpc/launch.go b/packages/arb-rpc-node/rpc/launch.go index 3e453729b2..143d935dfc 100644 --- a/packages/arb-rpc-node/rpc/launch.go +++ b/packages/arb-rpc-node/rpc/launch.go @@ -152,7 +152,7 @@ func SetupBatcher( if err != nil { return nil, nil, err } - feedBroadcaster := broadcaster.NewBroadcaster(&config.Feed.Output, config.L2.ChainID) + feedBroadcaster := broadcaster.NewBroadcaster(&config.Feed.Output, config.Node.ChainID) seqBatcher, err := batcher.NewSequencerBatcher( ctx, batcherMode.Core, diff --git a/packages/arb-util/configuration/configuration.go b/packages/arb-util/configuration/configuration.go index 070275c6f7..01a9df7172 100644 --- a/packages/arb-util/configuration/configuration.go +++ b/packages/arb-util/configuration/configuration.go @@ -449,8 +449,7 @@ type Config struct { URL string `koanf:"url"` } `koanf:"l1"` L2 struct { - ChainID uint64 `koanf:"chain-id"` - DisableUpstream bool `koanf:"disable-upstream"` + DisableUpstream bool `koanf:"disable-upstream"` } `koanf:"l2"` Log Log `koanf:"log"` Node Node `koanf:"node"` @@ -882,6 +881,7 @@ func resolveDirectoryNames(out *Config, wallet *Wallet) error { func ParseRelay() (*Config, error) { f := flag.NewFlagSet(os.Args[0], flag.ContinueOnError) + f.Uint64("node.chain-id", 0, "chain id of the arbitrum chain") AddFeedOutputOptions(f) k, err := beginCommonParse(f) @@ -998,7 +998,6 @@ func beginCommonParse(f *flag.FlagSet) (*koanf.Koanf, error) { f.String("log.rpc", "info", "log level for rpc") f.String("log.core", "info", "log level for general arb node logging") - f.Uint64("l2.chain-id", 0, "if set other than 0, will be used to validate L2 feed connection") f.Bool("l2.disable-upstream", false, "disable feed and transaction forwarding") f.Bool("pprof-enable", false, "enable profiling server") From 7b84e5e95dd7b972074694ba703e12ee02ee214d Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Thu, 25 Aug 2022 11:39:09 -0700 Subject: [PATCH 128/128] Add `--node.chain-id` option to relay --- docs/Running_Node.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/Running_Node.md b/docs/Running_Node.md index fa68fafa1f..b945e112be 100644 --- a/docs/Running_Node.md +++ b/docs/Running_Node.md @@ -28,11 +28,11 @@ Note: If you’re interested in accessing the Arbitrum network but you don’t w - When running docker image, an external volume should be mounted to persist the database across restarts. The mount point should be `/home/user/.arbitrum/mainnet` or `/home/user/.arbitrum/rinkeby` depending on what chain you are connecting to. - Here is an example of how to run arb-node for mainnet: ``` - docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.3-3485354 --l1.url https://l1-node:8545 + docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.3-3485354 --l1.url=https://l1-node:8545 ``` - Here is an example of how to run arb-node for rinkeby (only good for archive requests on pre-Nitro blocks, so probably want to enable archive as well): ``` - docker run --rm -it -v /some/local/dir/arbitrum-rinkeby/:/home/user/.arbitrum/rinkeby -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.3-3485354 --l1.url https://l1-rinkeby-node:8545 + docker run --rm -it -v /some/local/dir/arbitrum-rinkeby/:/home/user/.arbitrum/rinkeby -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.3-3485354 --l1.url=https://l1-rinkeby-node:8545 ``` ### Note on permissions @@ -80,9 +80,9 @@ Note: If you’re interested in accessing the Arbitrum network but you don’t w - Note that rinkeby testnet has been upgraded to Nitro, so rinkeby feed messages cannot be parsed by the classic node and classic relay is not required. - Here is an example of how to run arb-relay for mainnet: ``` - docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:9642:9642 --entrypoint /home/user/go/bin/arb-relay offchainlabs/arb-node:v1.4.3-3485354 --feed.input.url wss://arb1.arbitrum.io/feed + docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:9642:9642 --entrypoint /home/user/go/bin/arb-relay offchainlabs/arb-node:v1.4.3-3485354 --feed.input.url=wss://arb1.arbitrum.io/feed --node.chain-id=42161 ``` - Here is an example of how to run arb-node for mainnet with custom relay: ``` - docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.3-3485354 --l1.url https://l1-node:8545 --feed.input.url ws://local-relay-address:9642 + docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.4.3-3485354 --l1.url=https://l1-node:8545 --feed.input.url=ws://local-relay-address:9642 ```