UNPKG

@arbitrum/sdk

Version:

Typescript library client-side interactions with Arbitrum

1,696 lines 95.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RollupUserLogic__factory = void 0; /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ const ethers_1 = require("ethers"); const _abi = [ { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "previousAdmin", type: "address", }, { indexed: false, internalType: "address", name: "newAdmin", type: "address", }, ], name: "AdminChanged", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "beacon", type: "address", }, ], name: "BeaconUpgraded", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "uint64", name: "nodeNum", type: "uint64", }, { indexed: false, internalType: "bytes32", name: "blockHash", type: "bytes32", }, { indexed: false, internalType: "bytes32", name: "sendRoot", type: "bytes32", }, ], name: "NodeConfirmed", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "uint64", name: "nodeNum", type: "uint64", }, { indexed: true, internalType: "bytes32", name: "parentNodeHash", type: "bytes32", }, { indexed: true, internalType: "bytes32", name: "nodeHash", type: "bytes32", }, { indexed: false, internalType: "bytes32", name: "executionHash", type: "bytes32", }, { components: [ { components: [ { components: [ { internalType: "bytes32[2]", name: "bytes32Vals", type: "bytes32[2]", }, { internalType: "uint64[2]", name: "u64Vals", type: "uint64[2]", }, ], internalType: "struct GlobalState", name: "globalState", type: "tuple", }, { internalType: "enum MachineStatus", name: "machineStatus", type: "uint8", }, ], internalType: "struct ExecutionState", name: "beforeState", type: "tuple", }, { components: [ { components: [ { internalType: "bytes32[2]", name: "bytes32Vals", type: "bytes32[2]", }, { internalType: "uint64[2]", name: "u64Vals", type: "uint64[2]", }, ], internalType: "struct GlobalState", name: "globalState", type: "tuple", }, { internalType: "enum MachineStatus", name: "machineStatus", type: "uint8", }, ], internalType: "struct ExecutionState", name: "afterState", type: "tuple", }, { internalType: "uint64", name: "numBlocks", type: "uint64", }, ], indexed: false, internalType: "struct Assertion", name: "assertion", type: "tuple", }, { indexed: false, internalType: "bytes32", name: "afterInboxBatchAcc", type: "bytes32", }, { indexed: false, internalType: "bytes32", name: "wasmModuleRoot", type: "bytes32", }, { indexed: false, internalType: "uint256", name: "inboxMaxCount", type: "uint256", }, ], name: "NodeCreated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "uint64", name: "nodeNum", type: "uint64", }, ], name: "NodeRejected", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "account", type: "address", }, ], name: "Paused", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "uint64", name: "challengeIndex", type: "uint64", }, { indexed: false, internalType: "address", name: "asserter", type: "address", }, { indexed: false, internalType: "address", name: "challenger", type: "address", }, { indexed: false, internalType: "uint64", name: "challengedNode", type: "uint64", }, ], name: "RollupChallengeStarted", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "bytes32", name: "machineHash", type: "bytes32", }, { indexed: false, internalType: "uint256", name: "chainId", type: "uint256", }, ], name: "RollupInitialized", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "account", type: "address", }, ], name: "Unpaused", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "implementation", type: "address", }, ], name: "Upgraded", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "implementation", type: "address", }, ], name: "UpgradedSecondary", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "user", type: "address", }, { indexed: false, internalType: "uint256", name: "initialBalance", type: "uint256", }, { indexed: false, internalType: "uint256", name: "finalBalance", type: "uint256", }, ], name: "UserStakeUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "user", type: "address", }, { indexed: false, internalType: "uint256", name: "initialBalance", type: "uint256", }, { indexed: false, internalType: "uint256", name: "finalBalance", type: "uint256", }, ], name: "UserWithdrawableFundsUpdated", type: "event", }, { inputs: [], name: "VALIDATOR_AFK_BLOCKS", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, ], name: "_stakerMap", outputs: [ { internalType: "uint256", name: "amountStaked", type: "uint256", }, { internalType: "uint64", name: "index", type: "uint64", }, { internalType: "uint64", name: "latestStakedNode", type: "uint64", }, { internalType: "uint64", name: "currentChallenge", type: "uint64", }, { internalType: "bool", name: "isStaked", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "stakerAddress", type: "address", }, ], name: "addToDeposit", outputs: [], stateMutability: "payable", type: "function", }, { inputs: [ { internalType: "address", name: "staker", type: "address", }, ], name: "amountStaked", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "baseStake", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "bridge", outputs: [ { internalType: "contract IBridge", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "chainId", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "challengeManager", outputs: [ { internalType: "contract IChallengeManager", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "challengeIndex", type: "uint256", }, { internalType: "address", name: "winningStaker", type: "address", }, { internalType: "address", name: "losingStaker", type: "address", }, ], name: "completeChallenge", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes32", name: "blockHash", type: "bytes32", }, { internalType: "bytes32", name: "sendRoot", type: "bytes32", }, ], name: "confirmNextNode", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "confirmPeriodBlocks", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint64", name: "nodeNum", type: "uint64", }, ], name: "countStakedZombies", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint64", name: "nodeNum", type: "uint64", }, ], name: "countZombiesStakedOnChildren", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address[2]", name: "stakers", type: "address[2]", }, { internalType: "uint64[2]", name: "nodeNums", type: "uint64[2]", }, { internalType: "enum MachineStatus[2]", name: "machineStatuses", type: "uint8[2]", }, { components: [ { internalType: "bytes32[2]", name: "bytes32Vals", type: "bytes32[2]", }, { internalType: "uint64[2]", name: "u64Vals", type: "uint64[2]", }, ], internalType: "struct GlobalState[2]", name: "globalStates", type: "tuple[2]", }, { internalType: "uint64", name: "numBlocks", type: "uint64", }, { internalType: "bytes32", name: "secondExecutionHash", type: "bytes32", }, { internalType: "uint256[2]", name: "proposedBlocks", type: "uint256[2]", }, { internalType: "bytes32[2]", name: "wasmModuleRoots", type: "bytes32[2]", }, ], name: "createChallenge", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "staker", type: "address", }, ], name: "currentChallenge", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "currentRequiredStake", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "extraChallengeTimeBlocks", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "firstUnresolvedNode", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint64", name: "nodeNum", type: "uint64", }, ], name: "getNode", outputs: [ { components: [ { internalType: "bytes32", name: "stateHash", type: "bytes32", }, { internalType: "bytes32", name: "challengeHash", type: "bytes32", }, { internalType: "bytes32", name: "confirmData", type: "bytes32", }, { internalType: "uint64", name: "prevNum", type: "uint64", }, { internalType: "uint64", name: "deadlineBlock", type: "uint64", }, { internalType: "uint64", name: "noChildConfirmedBeforeBlock", type: "uint64", }, { internalType: "uint64", name: "stakerCount", type: "uint64", }, { internalType: "uint64", name: "childStakerCount", type: "uint64", }, { internalType: "uint64", name: "firstChildBlock", type: "uint64", }, { internalType: "uint64", name: "latestChildNumber", type: "uint64", }, { internalType: "uint64", name: "createdAtBlock", type: "uint64", }, { internalType: "bytes32", name: "nodeHash", type: "bytes32", }, ], internalType: "struct Node", name: "", type: "tuple", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint64", name: "nodeNum", type: "uint64", }, ], name: "getNodeCreationBlockForLogLookup", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "staker", type: "address", }, ], name: "getStaker", outputs: [ { components: [ { internalType: "uint256", name: "amountStaked", type: "uint256", }, { internalType: "uint64", name: "index", type: "uint64", }, { internalType: "uint64", name: "latestStakedNode", type: "uint64", }, { internalType: "uint64", name: "currentChallenge", type: "uint64", }, { internalType: "bool", name: "isStaked", type: "bool", }, ], internalType: "struct IRollupCore.Staker", name: "", type: "tuple", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint64", name: "stakerNum", type: "uint64", }, ], name: "getStakerAddress", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "inbox", outputs: [ { internalType: "contract IInboxBase", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "_stakeToken", type: "address", }, ], name: "initialize", outputs: [], stateMutability: "view", type: "function", }, { inputs: [], name: "isERC20Enabled", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "staker", type: "address", }, ], name: "isStaked", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "staker", type: "address", }, ], name: "isStakedOnLatestConfirmed", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, ], name: "isValidator", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "staker", type: "address", }, ], name: "isZombie", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "lastStakeBlock", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "latestConfirmed", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "latestNodeCreated", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "staker", type: "address", }, ], name: "latestStakedNode", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "loserStakeEscrow", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "minimumAssertionPeriod", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint64", name: "nodeNum", type: "uint64", }, { internalType: "bytes32", name: "nodeHash", type: "bytes32", }, ], name: "newStakeOnExistingNode", outputs: [], stateMutability: "payable", type: "function", }, { inputs: [ { components: [ { components: [ { components: [ { internalType: "bytes32[2]", name: "bytes32Vals", type: "bytes32[2]", }, { internalType: "uint64[2]", name: "u64Vals", type: "uint64[2]", }, ], internalType: "struct GlobalState", name: "globalState", type: "tuple", }, { internalType: "enum MachineStatus", name: "machineStatus", type: "uint8", }, ], internalType: "struct ExecutionState", name: "beforeState", type: "tuple", }, { components: [ { components: [ { internalType: "bytes32[2]", name: "bytes32Vals", type: "bytes32[2]", }, { internalType: "uint64[2]", name: "u64Vals", type: "uint64[2]", }, ], internalType: "struct GlobalState", name: "globalState", type: "tuple", }, { internalType: "enum MachineStatus", name: "machineStatus", type: "uint8", }, ], internalType: "struct ExecutionState", name: "afterState", type: "tuple", }, { internalType: "uint64", name: "numBlocks", type: "uint64", }, ], internalType: "struct Assertion", name: "assertion", type: "tuple", }, { internalType: "bytes32", name: "expectedNodeHash", type: "bytes32", }, { internalType: "uint256", name: "prevNodeInboxMaxCount", type: "uint256", }, ], name: "newStakeOnNewNode", outputs: [], stateMutability: "payable", type: "function", }, { inputs: [ { internalType: "uint64", name: "nodeNum", type: "uint64", }, { internalType: "address", name: "staker", type: "address", }, ], name: "nodeHasStaker", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "outbox", outputs: [ { internalType: "contract IOutbox", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "owner", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "paused", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "proxiableUUID", outputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "target", type: "uint256", }, ], name: "reduceDeposit", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "stakerAddress", type: "address", }, ], name: "rejectNextNode", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "startIndex", type: "uint256", }, ], name: "removeOldZombies", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "removeWhitelistAfterFork", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "removeWhitelistAfterValidatorAfk", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "zombieNum", type: "uint256", }, { internalType: "uint256", name: "maxNodes", type: "uint256", }, ], name: "removeZombie", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "nodeNum", type: "uint256", }, ], name: "requireUnresolved", outputs: [], stateMutability: "view", type: "function", }, { inputs: [], name: "requireUnresolvedExists", outputs: [], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "blockNumber", type: "uint256", }, { internalType: "uint64", name: "firstUnresolvedNodeNum", type: "uint64", }, { internalType: "uint64", name: "latestCreatedNode", type: "uint64", }, ], name: "requiredStake", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "stakerAddress", type: "address", }, ], name: "returnOldDeposit", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "rollupDeploymentBlock", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "rollupEventInbox", outputs: [ { internalType: "contract IRollupEventInbox", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "sequencerInbox", outputs: [ { internalType: "contract ISequencerInbox", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint64", name: "nodeNum", type: "uint64", }, { internalType: "bytes32", name: "nodeHash", type: "bytes32", }, ], name: "stakeOnExistingNode", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { components: [ { components: [ { components: [ { internalType: "bytes32[2]", name: "bytes32Vals", type: "bytes32[2]", }, { internalType: "uint64[2]", name: "u64Vals", type: "uint64[2]", }, ], internalType: "struct GlobalState", name: "globalState", type: "tuple", }, { internalType: "enum MachineStatus", name: "machineStatus", type: "uint8", }, ], internalType: "struct ExecutionState", name: "beforeState", type: "tuple", }, { components: [ { components: [ { internalType: "bytes32[2]", name: "bytes32Vals", type: "bytes32[2]", }, { internalType: "uint64[2]", name: "u64Vals", type: "uint64[2]", }, ], internalType: "struct GlobalState", name: "globalState", type: "tuple", }, { internalType: "enum MachineStatus", name: "machineStatus", type: "uint8", }, ], internalType: "struct ExecutionState", name: "afterState", type: "tuple", }, { internalType: "uint64", name: "numBlocks", type: "uint64", }, ], internalType: "struct Assertion", name: "assertion", type: "tuple", }, { internalType: "bytes32", name: "expectedNodeHash", type: "bytes32", }, { internalType: "uint256", name: "prevNodeInboxMaxCount", type: "uint256", }, ], name: "stakeOnNewNode", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "stakeToken", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "stakerCount", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "totalWithdrawableFunds", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "validatorUtils", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "validatorWalletCreator", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "validatorWhitelistDisabled", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "wasmModuleRoot", outputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "withdrawStakerFunds", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "user", type: "address", }, ], name: "withdrawableFunds", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "zombieNum", type: "uint256", }, ], name: "zombieAddress", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "zombieCount", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "zombieNum", type: "uint256", }, ], name: "zombieLatestStakedNode", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, ]; const _bytecode = "0x60e0604052620000196200003a60201b62002f0d1760201c565b15156080523060a0524660c0523480156200003357600080fd5b5062000115565b60408051600481526024810182526020810180516001600160e01b03166302881c7960e11b1790529051600091829182916064916200007a9190620000d7565b600060405180830381855afa9150503d8060008114620000b7576040519150601f19603f3d011682016040523d82523d6000602084013e620000bc565b606091505b5091509150818015620000d0575080516020145b9250505090565b6000825160005b81811015620000fa5760208186018101518583015201620000de565b818111156200010a576000828501525b509190910192915050565b60805160a05160c051615f976200015a6000396000612a6d0152600081816112d001528181612adc0152612b61015260008181612e550152614e030152615f976000f3fe60806040526004361061037a5760003560e01c80637427be51116101d3578063c4d66de811610103578063e8bd49221161009b578063e8bd492214610b7c578063edfd03ed14610c11578063ee35f32714610c31578063ef40a67014610c51578063f065de3f14610c71578063f33e1fac14610c91578063f63a434a14610cb1578063facd743b14610cd1578063fb0e722b14610d0157600080fd5b8063c4d66de814610a7f578063cd205fda14610a9f578063ce11e6ab14610abf578063ced01cfb14610adf578063d01e660214610af2578063d735e21d14610b12578063dcd030aa14610b27578063dff6978714610b47578063e78cea9214610b5c57600080fd5b806391c657e81161017657806391c657e81461087857806392c8134c146108985780639a8a0592146108c5578063a23c44b1146108db578063aa38a6e7146109ea578063aa65af4814610a0a578063b0ebedc714610a2a578063bc45e0ae14610a4a578063c2c2e68e14610a6a57600080fd5b80637427be511461079657806376e7e23b146107b6578063771b2f97146107cc5780637ba9534a146107f35780637e2d2155146108085780638640ce5f146108285780638da5cb5b1461084d5780638ee1a1261461086257600080fd5b806351ed6a30116102ae57806363721d6b1161025157806363721d6b1461069857806365f7f80d146106ad57806367425daf146106cb57806369fd251c146106e05780636b94c33b146107005780636d08d0a2146107205780636ddd3744146107405780636f57644e1461076057806371ef232c1461078057600080fd5b806351ed6a30146105b657806352d1902d146105d657806354ce8961146105eb5780635c617e941461060b5780635c975abb1461062b5780635eb405d51461064357806361373919146106635780636177fd181461067857600080fd5b80632b2af0ab116103215780632b2af0ab146104a15780632e7acfa6146104c15780632f30cabd146104f95780633e96576e1461052f57806345c5b2c71461054f57806345e38b64146105625780634774e576146105785780634ceccfe51461058b5780634d26732d146105a157600080fd5b8063014cc92c1461037f578063023a96fe146103bc5780630357aa49146103dc57806312ab3d3b146103fe57806318baaab9146104285780631aeb55a01461043d5780631b1689e91461045d5780631e83d30f14610481575b600080fd5b34801561038b57600080fd5b50606f5461039f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c857600080fd5b50606e5461039f906001600160a01b031681565b3480156103e857600080fd5b506103fc6103f7366004615380565b610d21565b005b34801561040a57600080fd5b50607e546104189060ff1681565b60405190151581526020016103b3565b34801561043457600080fd5b506103fc610df4565b34801561044957600080fd5b506103fc6104583660046153d7565b610e6e565b34801561046957600080fd5b50610473607d5481565b6040519081526020016103b3565b34801561048d57600080fd5b506103fc61049c366004615403565b61102e565b3480156104ad57600080fd5b506103fc6104bc366004615403565b611146565b3480156104cd57600080fd5b506065546104e1906001600160401b031681565b6040516001600160401b0390911681526020016103b3565b34801561050557600080fd5b5061047361051436600461541c565b6001600160a01b03166000908152607b602052604090205490565b34801561053b57600080fd5b506104e161054a36600461541c565b6111ea565b6103fc61055d36600461541c565b611218565b34801561056e57600080fd5b5061047360735481565b6103fc610586366004615439565b611281565b34801561059757600080fd5b5061047361b2fa81565b3480156105ad57600080fd5b50610473611295565b3480156105c257600080fd5b5060725461039f906001600160a01b031681565b3480156105e257600080fd5b506104736112c3565b3480156105f757600080fd5b506103fc610606366004615439565b611388565b34801561061757600080fd5b50610473610626366004615476565b6115eb565b34801561063757600080fd5b5060335460ff16610418565b34801561064f57600080fd5b506103fc61065e366004615493565b61163f565b34801561066f57600080fd5b50610473611962565b34801561068457600080fd5b5061041861069336600461541c565b611aed565b3480156106a457600080fd5b50607a54610473565b3480156106b957600080fd5b506075546001600160401b03166104e1565b3480156106d757600080fd5b506103fc611b15565b3480156106ec57600080fd5b506104e16106fb36600461541c565b611b9f565b34801561070c57600080fd5b506103fc61071b36600461541c565b611bcd565b34801561072c57600080fd5b5061047361073b366004615476565b611f05565b34801561074c57600080fd5b5061039f61075b366004615476565b611f88565b34801561076c57600080fd5b506103fc61077b3660046154c6565b611fc1565b34801561078c57600080fd5b50610473607c5481565b3480156107a257600080fd5b506103fc6107b136600461541c565b6125f3565b3480156107c257600080fd5b5061047360675481565b3480156107d857600080fd5b506065546104e190600160401b90046001600160401b031681565b3480156107ff57600080fd5b506104e161274b565b34801561081457600080fd5b506103fc610823366004615493565b612761565b34801561083457600080fd5b50607554600160c01b90046001600160401b03166104e1565