/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; import { Provider, TransactionRequest } from "@ethersproject/providers"; import type { MockStake, MockStakeInterface } from "../MockStake"; const _abi = [ { anonymous: false, inputs: [ { indexed: false, internalType: "enum Types.Grade", name: "grade", type: "uint8", }, ], name: "AddPool", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "candidate", type: "address", }, { indexed: false, internalType: "uint256", name: "amount", type: "uint256", }, ], name: "CandidateAllocated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint256", name: "period", type: "uint256", }, ], name: "ClaimFrozenPeriodUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "candidate", type: "address", }, { indexed: false, internalType: "address", name: "to", type: "address", }, { indexed: false, internalType: "uint256", name: "pending", type: "uint256", }, ], name: "Claimed", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "candidate", type: "address", }, { indexed: false, internalType: "enum Types.Grade", name: "fromGrade", type: "uint8", }, { indexed: false, internalType: "enum Types.Grade", name: "toGrade", type: "uint8", }, ], name: "Downgrade", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "candidate", type: "address", }, { indexed: false, internalType: "uint256", name: "pendingSlash", type: "uint256", }, ], name: "DraftSlash", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "contract IElection", name: "election", type: "address", }, ], name: "ElectionUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "candidate", type: "address", }, { indexed: false, internalType: "uint256", name: "pendingSlash", type: "uint256", }, { indexed: false, internalType: "address[]", name: "beneficiaries", type: "address[]", }, { indexed: false, internalType: "uint256[]", name: "amounts", type: "uint256[]", }, { indexed: false, internalType: "uint256", name: "burned", type: "uint256", }, ], name: "ExcuteSlash", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "contract IMajorCandidates", name: "majorCandidates", type: "address", }, ], name: "IMajorCandidatesUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint8", name: "version", type: "uint8", }, ], name: "Initialized", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint256", name: "maxCoef", type: "uint256", }, ], name: "MaxCoefUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint256", name: "amount", type: "uint256", }, ], name: "MinStakeUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "enum Types.Grade", name: "grade", type: "uint8", }, ], name: "PoolUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint256", name: "precision", type: "uint256", }, ], name: "PrecisionUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "enum Types.Grade", name: "grade", type: "uint8", }, { indexed: false, internalType: "address", name: "candidate", type: "address", }, ], name: "Quit", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "candidate", type: "address", }, ], name: "Register", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "candidate", type: "address", }, { indexed: false, internalType: "uint256", name: "pendingSlash", type: "uint256", }, ], name: "RejectSlash", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint256", name: "rewardPerSecond", type: "uint256", }, ], name: "RewardPerSecondUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "contract IRewarder", name: "rewarder", type: "address", }, ], name: "RewarderUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "contract ISlasher", name: "slasher", type: "address", }, ], name: "SlasherUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "from", type: "address", }, { indexed: false, internalType: "address", name: "candidate", type: "address", }, { indexed: false, internalType: "uint256", name: "amount", type: "uint256", }, ], name: "Stake", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint256", name: "period", type: "uint256", }, ], name: "StakeFrozenPeriodUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "contract IERC20", name: "token", type: "address", }, ], name: "TokenUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "candidate", type: "address", }, { indexed: false, internalType: "enum Types.Grade", name: "fromGrade", type: "uint8", }, { indexed: false, internalType: "enum Types.Grade", name: "toGrade", type: "uint8", }, ], name: "Upgrade", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint256", name: "coef", type: "uint256", }, ], name: "VoteRewardCoefUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "candidate", type: "address", }, { indexed: false, internalType: "uint256", name: "amount", type: "uint256", }, ], name: "VoterAllocated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "candidate", type: "address", }, { indexed: false, internalType: "address", name: "to", type: "address", }, { indexed: false, internalType: "uint256", name: "amount", type: "uint256", }, ], name: "Withdrawn", type: "event", }, { inputs: [], name: "ACC_PRECISION", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "MAXCOEF", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, ], name: "candidateInfo", outputs: [ { components: [ { internalType: "enum Types.Grade", name: "grade", type: "uint8", }, { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "int256", name: "rewardDebt", type: "int256", }, { internalType: "uint256", name: "allocation", type: "uint256", }, { internalType: "string", name: "manifest", type: "string", }, ], internalType: "struct Types.CandidateInfo", name: "", type: "tuple", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "to", type: "address", }, ], name: "claim", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "claimFrozenPeriod", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, ], name: "downgrade", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "_candidate", type: "address", }, { internalType: "uint256", name: "amount", type: "uint256", }, ], name: "draftSlash", outputs: [ { internalType: "uint256", name: "pendingSlash", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "election", outputs: [ { internalType: "contract IElection", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "_candidate", type: "address", }, { internalType: "uint256", name: "slash", type: "uint256", }, { internalType: "address[]", name: "beneficiaries", type: "address[]", }, { internalType: "uint256[]", name: "amounts", type: "uint256[]", }, { internalType: "uint256", name: "burned", type: "uint256", }, ], name: "executeSlash", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, ], name: "gradeOf", outputs: [ { internalType: "enum Types.Grade", name: "", type: "uint8", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "contract IERC20", name: "token", type: "address", }, { internalType: "contract IRewarder", name: "rewarder", type: "address", }, { internalType: "contract IElection", name: "election", type: "address", }, { internalType: "contract IMajorCandidates", name: "majorCandidates", type: "address", }, { internalType: "contract ISlasher", name: "slasher", type: "address", }, { internalType: "uint256", name: "stakeFrozenPeriod", type: "uint256", }, { internalType: "uint256", name: "minStake", type: "uint256", }, { internalType: "uint256", name: "rewardPerSecond", type: "uint256", }, ], name: "init", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "contract IERC20", name: "token", type: "address", }, { internalType: "contract IRewarder", name: "rewarder", type: "address", }, { internalType: "contract IElection", name: "_election", type: "address", }, { internalType: "contract IMajorCandidates", name: "_majorCandidates", type: "address", }, { internalType: "contract ISlasher", name: "_slasher", type: "address", }, { internalType: "uint256", name: "_stakeFrozenPeriod", type: "uint256", }, { internalType: "uint256", name: "_minStake", type: "uint256", }, { internalType: "uint256", name: "rewardPerSecond", type: "uint256", }, ], name: "initialize", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, ], name: "isCandidateRegistered", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, ], name: "isClaimUnfrozen", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, ], name: "isStakeUnfrozen", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, ], name: "lastClaimTimestamp", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, ], name: "lastStakeTimestamp", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "majorCandidateManifests", outputs: [ { internalType: "string[]", name: "manifests", type: "string[]", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "majorCandidates", outputs: [ { internalType: "contract IMajorCandidates", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "string", name: "", type: "string", }, ], name: "manifestMap", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "minStake", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "_candidate", type: "address", }, ], name: "pendingCandidateAllocation", outputs: [ { internalType: "uint256", name: "pendingAllocation", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "_candidate", type: "address", }, ], name: "pendingReward", outputs: [ { internalType: "uint256", name: "pending", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "_candidate", type: "address", }, ], name: "pendingVoterAllocation", outputs: [ { internalType: "uint256", name: "pendingAllocation", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "enum Types.Grade", name: "grade", type: "uint8", }, ], name: "poolExists", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "enum Types.Grade", name: "grade", type: "uint8", }, ], name: "poolInfo", outputs: [ { components: [ { internalType: "uint256", name: "accPerShare", type: "uint256", }, { internalType: "uint256", name: "lastRewardTime", type: "uint256", }, { internalType: "uint256", name: "allocPoint", type: "uint256", }, ], internalType: "struct Types.PoolInfo", name: "", type: "tuple", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "to", type: "address", }, ], name: "quit", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "string", name: "manifest", type: "string", }, ], name: "register", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "string", name: "manifest", type: "string", }, ], name: "registerAndStake", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "_candidate", type: "address", }, { internalType: "uint256", name: "pendingSlash", type: "uint256", }, ], name: "rejectSlash", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "rewardPerSecond", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "rewarder", outputs: [ { internalType: "contract IRewarder", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "coef", type: "uint256", }, ], name: "setVoteRewardCoef", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "slasher", outputs: [ { internalType: "contract ISlasher", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "amount", type: "uint256", }, ], name: "stake", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "stakeFrozenPeriod", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "token", outputs: [ { internalType: "contract IERC20", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "totalAllocPoint", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "enum Types.Grade", name: "grade", type: "uint8", }, ], name: "updatePool", outputs: [ { components: [ { internalType: "uint256", name: "accPerShare", type: "uint256", }, { internalType: "uint256", name: "lastRewardTime", type: "uint256", }, { internalType: "uint256", name: "allocPoint", type: "uint256", }, ], internalType: "struct Types.PoolInfo", name: "pool", type: "tuple", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, ], name: "upgrade", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, ], name: "voteRewardCoef", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "candidate", type: "address", }, ], name: "voterAllocate", outputs: [], stateMutability: "nonpayable", type: "function", }, ]; const _bytecode = "0x608060405234801561001057600080fd5b506139c7806100206000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c806392938d5911610146578063d32b91dd116100c3578063f1ecdc5811610087578063f1ecdc581461055f578063f1fcdd2b14610572578063f2c298be146105ab578063f40f0f52146105be578063fc0c546a146105d1578063ff07c068146105e457600080fd5b8063d32b91dd146104c5578063da0ccf23146104d8578063dcc3e06e146104eb578063de8800eb146104fe578063e965b7c91461053f57600080fd5b8063b17479e91161010a578063b17479e914610459578063b880e88e1461046c578063bd9d518b1461047f578063c4ff2e871461049f578063cfaf023e146104b257600080fd5b806392938d59146103fa578063a145f79e1461040d578063a36be73e14610420578063a694fc3a14610433578063b13442711461044657600080fd5b8063375b3c0a116101df5780635bbb9198116101a35780635bbb9198146103a45780635d0f62aa146103ad5780636be5083a146103c25780637403c6cd146103cb57806374d7c6a6146103de5780638f10369a146103f157600080fd5b8063375b3c0a146103355780633a5231651461033e57806340b215f41461035e5780634b1d3ede1461037157806352d362421461039157600080fd5b806328aa0f1b1161022657806328aa0f1b146102d35780632ae7f099146102e65780632c42b233146102f95780632d0d51e01461031957806332fcd9661461032c57600080fd5b806308fa95d4146102635780630900f0101461028c57806317caf6f1146102a15780631e03795a146102b75780631e83409a146102c0575b600080fd5b61027661027136600461288a565b6105f7565b60405161028391906128f8565b60405180910390f35b61029f61029a366004612936565b610845565b005b6102aa60065481565b6040516102839190612957565b6102aa60055481565b61029f6102ce366004612936565b6108ba565b6102aa6102e1366004612976565b61098f565b61029f6102f4366004612936565b610aad565b6102aa610307366004612936565b60426020526000908152604090205481565b6102aa610327366004612936565b610b17565b6102aa60045481565b6102aa603f5481565b61035161034c366004612936565b610be9565b60405161028391906129bb565b61029f61036c3660046129e8565b610c17565b603c54610384906001600160a01b031681565b6040516102839190612aaf565b61029f61039f366004612936565b610c9c565b6102aa60415481565b6103b5610cd2565b6040516102839190612b94565b6102aa60405481565b61029f6103d93660046129e8565b610e1f565b61029f6103ec366004612ba5565b610f75565b6102aa60075481565b61029f610408366004612cbc565b610f7f565b61029f61041b366004612976565b610f98565b61035161042e36600461288a565b611071565b61029f610441366004612ba5565b6110b7565b603e54610384906001600160a01b031681565b603d54610384906001600160a01b031681565b61027661047a36600461288a565b6110c2565b6102aa61048d366004612936565b60436020526000908152604090205481565b6103516104ad366004612936565b61114b565b6102aa6104c0366004612936565b611171565b61029f6104d3366004612936565b61118c565b6102aa6104e6366004612936565b611288565b600354610384906001600160a01b031681565b61053261050c366004612d0a565b80516020818301810180516001825292820191909301209152546001600160a01b031681565b6040516102839190612d4e565b61055261054d366004612936565b61134a565b6040516102839190612e0e565b61035161056d366004612936565b611484565b61059e610580366004612936565b6001600160a01b031660009081526020819052604090205460ff1690565b6040516102839190612e1f565b61029f6105b9366004612d0a565b6114bc565b6102aa6105cc366004612936565b6114c6565b600254610384906001600160a01b031681565b61029f6105f2366004612f45565b6114fb565b61061b60405180606001604052806000815260200160008152602001600081525090565b61062482611071565b6106495760405162461bcd60e51b81526004016106409061302a565b60405180910390fd5b6008600083600281111561065f5761065f612d5c565b600281111561067057610670612d5c565b8152602001908152602001600020604051806060016040529081600082015481526020016001820154815260200160028201548152505090508060200151421115610809576002546040516370a0823160e01b81526000916001600160a01b0316906370a08231906106e6903090600401612d4e565b60206040518083038186803b1580156106fe57600080fd5b505afa158015610712573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107369190613045565b905080156107aa576000826020015142610750919061307c565b9050600060065484604001516007548461076a9190613093565b6107749190613093565b61077e91906130c8565b9050826004548261078f9190613093565b61079991906130c8565b84516107a591906130dc565b845250505b42602083015281600860008560028111156107c7576107c7612d5c565b60028111156107d8576107d8612d5c565b8152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050505b7fd4f73fa0e6052409fdfa6fb7710dd364866d8fe2832c0f717fa46190b1488723826040516108389190612e1f565b60405180910390a1919050565b603d546001600160a01b0316331461086f5760405162461bcd60e51b815260040161064090613142565b61087a8160016116d1565b7f9a87e9987786a9691545ecf28f3ad9f0c1fcd5801ad1ddf80ed2e4e4fe0f9ed681600260016040516108af93929190613152565b60405180910390a150565b6002600a5414156108dd5760405162461bcd60e51b8152600401610640906131ae565b6002600a556108eb3361114b565b6109075760405162461bcd60e51b8152600401610640906131fc565b61091033611751565b6003805433600090815260208190526040908190209092015491516340c10f1960e01b81526001600160a01b03909116916340c10f199161095591859160040161320c565b600060405180830381600087803b15801561096f57600080fd5b505af1158015610983573d6000803e3d6000fd5b50506001600a55505050565b603e546000906001600160a01b031633146109bc5760405162461bcd60e51b81526004016106409061326a565b6001600160a01b038316600090815260208190526040902060018101546109f55760405162461bcd60e51b8152600401610640906132ae565b8281600101541015610a1057610a0b848561183e565b610aa6565b8054839250600090610a249060ff166105f7565b600454815191925090610a379086613093565b610a4191906130c8565b8260020154610a5091906132be565b60028301556001820154610a6590859061307c565b60018301556040517fd5dea3b8e91a41ffe1ebdb98239d2932bc69815e18332e2f20cc7251564da3ed90610a9c908790869061320c565b60405180910390a1505b5092915050565b603d546001600160a01b03163314610ad75760405162461bcd60e51b815260040161064090613142565b610ae28160026116d1565b7f319101ecf2e0498eace83843d417c6a4d573609bdf8c7755f6a5b6e8db41e79b81600160026040516108af93929190613152565b600080610b2383611171565b118015610bae5750603c54604051630968067760e11b81526000916001600160a01b0316906312d00cee90610b5c908690600401612d4e565b60206040518083038186803b158015610b7457600080fd5b505afa158015610b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bac9190613045565b115b15610be4576000610bbe83611ae9565b9050600554610bcc84611171565b610bd69083613093565b610be091906130c8565b9150505b919050565b6001600160a01b038116600090815260426020526040808220549054610c0f91906130dc565b421192915050565b610c2088611ca4565b610c2987611cef565b610c3286611d3a565b610c3b85611d85565b610c4484611dd0565b610c4d83611e1b565b610c5682611e4e565b610c5f81611e83565b610c6b620f4240611eb8565b610c7964e8d4a51000611eed565b610c8660016102ee611f22565b610c92600260fa611f22565b5050505050505050565b603c546001600160a01b03163314610cc65760405162461bcd60e51b81526004016106409061333e565b610ccf81611751565b50565b60606000603d60009054906101000a90046001600160a01b03166001600160a01b03166340cdc3476040518163ffffffff1660e01b815260040160006040518083038186803b158015610d2457600080fd5b505afa158015610d38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d6091908101906133ce565b9050805167ffffffffffffffff811115610d7c57610d7c612bc6565b604051908082528060200260200182016040528015610daf57816020015b6060815260200190600190039081610d9a5790505b50915060005b8151811015610e1a576000610de2838381518110610dd557610dd5613409565b602002602001015161134a565b90508060800151848381518110610dfb57610dfb613409565b6020026020010181905250508080610e129061341f565b915050610db5565b505090565b600954610100900460ff1615808015610e3f5750600954600160ff909116105b80610e595750303b158015610e59575060095460ff166001145b610e755760405162461bcd60e51b815260040161064090613485565b6009805460ff191660011790558015610e98576009805461ff0019166101001790555b610ea189611ca4565b610eaa88611cef565b610eb387611d3a565b610ebc86611d85565b610ec585611dd0565b610ece84611e1b565b610eda6224ea00612031565b610ee383611e4e565b610eec82611e83565b610ef8620f4240611eb8565b610f0664e8d4a51000611eed565b610f1360016102ee611f22565b610f1f600260fa611f22565b8015610f6a576009805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610f61906001906134a9565b60405180910390a15b505050505050505050565b610ccf3382612066565b610f89338261210d565b610f94333384612244565b5050565b603e546001600160a01b03163314610fc25760405162461bcd60e51b81526004016106409061326a565b6001600160a01b03821660009081526020819052604081208054909190610feb9060ff166105f7565b600454815191925090610ffe9085613093565b61100891906130c8565b826002015461101791906134b7565b6002830155600182015461102c9084906130dc565b60018301556040517ff3668013a6fb051c496f8021f29fcf96ba158c52f14d7b3f35bbb93e6939aec590611063908690869061320c565b60405180910390a150505050565b60006008600083600281111561108957611089612d5c565b600281111561109a5761109a612d5c565b815260200190815260200160002060020154600014159050919050565b610ccf333383612244565b6110e660405180606001604052806000815260200160008152602001600081525090565b600860008360028111156110fc576110fc612d5c565b600281111561110d5761110d612d5c565b815260200190815260200160002060405180606001604052908160008201548152602001600182015481526020016002820154815250509050919050565b6001600160a01b038116600090815260436020526040812054604154610c0f91906130dc565b6001600160a01b031660009081526044602052604090205490565b6002600a5414156111af5760405162461bcd60e51b8152600401610640906131ae565b6002600a556111bd33610be9565b6111d95760405162461bcd60e51b815260040161064090613525565b603e546040516374c0e82760e11b81526001600160a01b039091169063e981d04e90611209903390600401612d4e565b60206040518083038186803b15801561122157600080fd5b505afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112599190613548565b156112765760405162461bcd60e51b815260040161064090613593565b611280338261183e565b506001600a55565b60008061129483611171565b11801561131f5750603c54604051630968067760e11b81526000916001600160a01b0316906312d00cee906112cd908690600401612d4e565b60206040518083038186803b1580156112e557600080fd5b505afa1580156112f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131d9190613045565b115b15610be457600061132f83611ae9565b905060055461133d84611171565b600554610bcc919061307c565b61137d6040805160a081019091528060008152602001600081526020016000815260200160008152602001606081525090565b6001600160a01b03821660009081526020819052604090819020815160a081019092528054829060ff1660028111156113b8576113b8612d5c565b60028111156113c9576113c9612d5c565b81526020016001820154815260200160028201548152602001600382015481526020016004820180546113fb906135b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611427906135b9565b80156114745780601f1061144957610100808354040283529160200191611474565b820191906000526020600020905b81548152906001019060200180831161145757829003601f168201915b5050505050815250509050919050565b6000806001600160a01b03831660009081526020819052604090205460ff1660028111156114b4576114b4612d5c565b141592915050565b610ccf338261210d565b6001600160a01b0381166000908152602081905260408120600301546114eb83611288565b6114f591906130dc565b92915050565b603e546001600160a01b031633146115255760405162461bcd60e51b81526004016106409061326a565b81518351146115465760405162461bcd60e51b815260040161064090613612565b60005b83518160ff1610156116285760025484516001600160a01b039091169063a9059cbb90869060ff851690811061158157611581613409565b6020026020010151858460ff168151811061159e5761159e613409565b60200260200101516040518363ffffffff1660e01b81526004016115c392919061320c565b602060405180830381600087803b1580156115dd57600080fd5b505af11580156115f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116159190613548565b508061162081613622565b915050611549565b50600254604051630852cd8d60e31b81526001600160a01b03909116906342966c6890611659908490600401612957565b600060405180830381600087803b15801561167357600080fd5b505af1158015611687573d6000803e3d6000fd5b505050507f744ff32b979733a33a2afc2a5292577d928e70cef0aa2c4248d3b8d01734582585858585856040516116c29594939291906136e2565b60405180910390a15050505050565b6116da82611751565b6001600160a01b038216600090815260208190526040902080548290829060ff1916600183600281111561171057611710612d5c565b02179055506000611720836105f7565b9050600454816000015183600101546117399190613093565b61174391906130c8565b826002018190555050505050565b61175a81611484565b15610ccf576001600160a01b038116600090815260208190526040812080549091906117889060ff166105f7565b90506000600454826000015184600101546117a39190613093565b6117ad91906130c8565b905060006117c98460020154836117c491906132be565b6123dd565b60028501839055905060006117de8683612403565b90508015611836578085600301546117f691906130dc565b60038601556040517fe052d127a2e27bde4ddc77b728cc56d28b209e58530d59d6a7893a193740d86c9061182d908890849061320c565b60405180910390a15b505050505050565b6001600160a01b038216600090815260208190526040808220815160a081019092528054829060ff16600281111561187857611878612d5c565b600281111561188957611889612d5c565b81526020016001820154815260200160028201548152602001600382015481526020016004820180546118bb906135b9565b80601f01602080910402602001604051908101604052809291908181526020018280546118e7906135b9565b80156119345780601f1061190957610100808354040283529160200191611934565b820191906000526020600020905b81548152906001019060200180831161191757829003601f168201915b505050505081525050905061194e8382602001518461257d565b603d54604051637b51e92760e11b81526001600160a01b039091169063f6a3d24e9061197e908690600401612d4e565b60206040518083038186803b15801561199657600080fd5b505afa1580156119aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ce9190613548565b15611a3657603d54604051631484968760e11b81526001600160a01b03909116906329092d0e90611a03908690600401612d4e565b600060405180830381600087803b158015611a1d57600080fd5b505af1158015611a31573d6000803e3d6000fd5b505050505b6001600160a01b0383166000908152602081905260408120805460ff1916815560018101829055600281018290556003810182905590611a7960048301826127a7565b505060018160800151604051611a8f9190613754565b90815260405190819003602001812080546001600160a01b031916905581517fc16a33b9442e654d6a29b5ed2106d048aa8a0abe0946c08d060655ba7215fe6691611adc91908690613760565b60405180910390a1505050565b6001600160a01b038116600090815260208190526040812080548290600890829060ff166002811115611b1e57611b1e612d5c565b6002811115611b2f57611b2f612d5c565b8152602080820192909252604090810160009081208251606081018452815480825260018301549582019590955260029182015481850152905492516370a0823160e01b815290945090916001600160a01b0316906370a0823190611b98903090600401612d4e565b60206040518083038186803b158015611bb057600080fd5b505afa158015611bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be89190613045565b9050826020015142118015611bfc57508015155b15611c6b576000836020015142611c13919061307c565b90506000600654856040015160075484611c2d9190613093565b611c379190613093565b611c4191906130c8565b90508260045482611c529190613093565b611c5c91906130c8565b611c6690856130dc565b935050505b611c9a8460020154600454848760010154611c869190613093565b611c9091906130c8565b6117c491906132be565b9695505050505050565b600280546001600160a01b0319166001600160a01b0383161790556040517f5ba6b30cd4b2f9e9e67f4feb9b9df10d5da3b057598e6901b217b7d590345e30906108af908390612aaf565b600380546001600160a01b0319166001600160a01b0383161790556040517f47c9042c3be42a955f60f9b75006522826af1a3bed83e26646997d3bcccda77c906108af908390612aaf565b603c80546001600160a01b0319166001600160a01b0383161790556040517f3f7da2154195a521ba8386807142c92f7d6baa166e4423097ae33ed518f1fbd7906108af908390612aaf565b603d80546001600160a01b0319166001600160a01b0383161790556040517f3376c8a8f19a8fec75aa29af1dd72d7f636c028917a944b37fbf98cb7275b0fb906108af908390612aaf565b603e80546001600160a01b0319166001600160a01b0383161790556040517f0adf62081dae4c128a0af3a933748637b1d874a033588518f810559e6bdb23ff906108af908390612aaf565b6040818155517f7d1e9823aa33302e5f8353fa61d8da835a097c37cfcc85701484d6cf8ccbe171906108af908390612957565b603f8190556040517f47ab46f2c8d4258304a2f5551c1cbdb6981be49631365d1ba7191288a73f39ef906108af908390612957565b60078190556040517f951c6f64eb06ec6a6682072cda71420984dd55199006684bb820a80fd7e98793906108af908390612957565b60058190556040517f0b8f3c74b24bc0f01cca1823c0c201f7f1c9ff08ee52bc5b7d9bc610258e24f6906108af908390612957565b60048190556040517ff879b3c541ecf4ecf4ac70d3ba67edea70cc8473e3abfbcfec977ce421152f36906108af908390612957565b60086000836002811115611f3857611f38612d5c565b6002811115611f4957611f49612d5c565b815260200190815260200160002060020154600014611f7a5760405162461bcd60e51b8152600401610640906137a4565b80600654611f8891906130dc565b60065560408051606081018252600080825242602083015291810183905290600890846002811115611fbc57611fbc612d5c565b6002811115611fcd57611fcd612d5c565b815260208082019290925260409081016000208351815591830151600183015591820151600290910155517f791c8524de17622d3adde2761bccdb75a05cd234f2395c6c2e8443c820b88f4690612025908490612e1f565b60405180910390a15050565b60418190556040517f95b378a6dac8347f3d082bb3539951da30b5dbb8f4576b6e5d2917fdc8759916906108af908390612957565b60008111801561207857506005548111155b6120945760405162461bcd60e51b8152600401610640906137de565b61209d82611484565b6120b95760405162461bcd60e51b81526004016106409061382d565b6120c282611751565b6001600160a01b03821660009081526044602052604090819020829055517f49f4080557962240e4040aa4b7f09f2808627b37b25b916d31ea5999280ed3fe90612025908390612957565b6001600160a01b03821660009081526020819052604081205460ff16600281111561213a5761213a612d5c565b146121575760405162461bcd60e51b81526004016106409061387d565b60006001600160a01b03166001826040516121729190613754565b908152604051908190036020019020546001600160a01b0316146121a85760405162461bcd60e51b8152600401610640906138cc565b816001826040516121b99190613754565b908152604080516020928190038301902080546001600160a01b0319166001600160a01b039485161790559184166000908152808252919091208054600260ff199091161781558251612214926004909201918401906127e1565b507feeda149c76076b34d4b9d8896c2f7efc0d33d1c7b53ea3c5db490d64613f603a826040516120259190612d4e565b61224d82611484565b6122695760405162461bcd60e51b81526004016106409061382d565b6001600160a01b038216600090815260208190526040812080549091906122929060ff166105f7565b9050603f548260010154846122a791906130dc565b10156122c55760405162461bcd60e51b815260040161064090613927565b6002546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906122f990889030908890600401613937565b602060405180830381600087803b15801561231357600080fd5b505af1158015612327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234b9190613548565b5082826001015461235c91906130dc565b600183015560045481516123709085613093565b61237a91906130c8565b826002015461238991906134b7565b60028301556001600160a01b03841660009081526042602052604090819020429055517f99039fcf0a98f484616c5196ee8b2ecfa971babf0b519848289ea4db381f85f7906116c290879087908790613937565b6000808212156123ff5760405162461bcd60e51b815260040161064090613981565b5090565b600081156114f5575080600061241884611171565b1180156124a35750603c54604051630968067760e11b81526000916001600160a01b0316906312d00cee90612451908790600401612d4e565b60206040518083038186803b15801561246957600080fd5b505afa15801561247d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a19190613045565b115b156114f55760006005546124b685611171565b6124c09085613093565b6124ca91906130c8565b603c546040516305045d3960e11b81529192506001600160a01b031690630a08ba72906124fd908790859060040161320c565b600060405180830381600087803b15801561251757600080fd5b505af115801561252b573d6000803e3d6000fd5b50505050808361253b919061307c565b91507fcdf8ee3cc9a2e1798ec366706e58fd72c060f1aface31fbf5cbd2f78ef509b34848260405161256e92919061320c565b60405180910390a15092915050565b6001600160a01b038316600090815260208190526040812080549091906125a69060ff166105f7565b90506000600454826000015184600101546125c19190613093565b6125cb91906130c8565b905060006125e28460020154836117c491906132be565b6004548451919250906125f59088613093565b6125ff91906130c8565b61260990836132be565b6002850155600184015461261e90879061307c565b6001850155600384015460006126348984612403565b6000600380890191909155549091506001600160a01b03166340c10f198861265c84866130dc565b6040518363ffffffff1660e01b815260040161267992919061320c565b600060405180830381600087803b15801561269357600080fd5b505af11580156126a7573d6000803e3d6000fd5b505060025460405163a9059cbb60e01b81526001600160a01b03909116925063a9059cbb91506126dd908a908c9060040161320c565b602060405180830381600087803b1580156126f757600080fd5b505af115801561270b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272f9190613548565b507ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd3992683898861275d84866130dc565b60405161276c93929190613937565b60405180910390a17fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb89888a604051610f6193929190613937565b5080546127b3906135b9565b6000825580601f106127c3575050565b601f016020900490600052602060002090810190610ccf919061285d565b8280546127ed906135b9565b90600052602060002090601f01602090048101928261280f5760008555612855565b82601f1061282857805160ff1916838001178555612855565b82800160010185558215612855579182015b8281111561285557825182559160200191906001019061283a565b506123ff9291505b5b808211156123ff576000815560010161285e565b60038110610ccf57600080fd5b80356114f581612872565b60006020828403121561289f5761289f600080fd5b60006128ab848461287f565b949350505050565b805b82525050565b805160608301906128cc84826128b3565b5060208201516128df60208501826128b3565b5060408201516128f260408501826128b3565b50505050565b606081016114f582846128bb565b60006001600160a01b0382166114f5565b61292081612906565b8114610ccf57600080fd5b80356114f581612917565b60006020828403121561294b5761294b600080fd5b60006128ab848461292b565b602081016114f582846128b3565b80612920565b80356114f581612965565b6000806040838503121561298c5761298c600080fd5b6000612998858561292b565b92505060206129a98582860161296b565b9150509250929050565b8015156128b5565b602081016114f582846129b3565b60006114f582612906565b612920816129c9565b80356114f5816129d4565b600080600080600080600080610100898b031215612a0857612a08600080fd5b6000612a148b8b6129dd565b9850506020612a258b828c016129dd565b9750506040612a368b828c016129dd565b9650506060612a478b828c016129dd565b9550506080612a588b828c016129dd565b94505060a0612a698b828c0161296b565b93505060c0612a7a8b828c0161296b565b92505060e0612a8b8b828c0161296b565b9150509295985092959890939650565b60006114f5826129c9565b6128b581612a9b565b602081016114f58284612aa6565b60005b83811015612ad8578181015183820152602001612ac0565b838111156128f25750506000910152565b6000612af3825190565b808452602084019350612b0a818560208601612abd565b601f01601f19169290920192915050565b6000612b278383612ae9565b9392505050565b6000612b38825190565b80845260208401935083602082028501612b528560200190565b8060005b85811015612b875784840389528151612b6f8582612b1b565b94506020830160209a909a0199925050600101612b56565b5091979650505050505050565b60208082528101612b278184612b2e565b600060208284031215612bba57612bba600080fd5b60006128ab848461296b565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715612c0257612c02612bc6565b6040525050565b6000612c1460405190565b9050610be48282612bdc565b600067ffffffffffffffff821115612c3a57612c3a612bc6565b601f19601f83011660200192915050565b82818337506000910152565b6000612c6a612c6584612c20565b612c09565b905082815260208101848484011115612c8557612c85600080fd5b612c90848285612c4b565b509392505050565b600082601f830112612cac57612cac600080fd5b81356128ab848260208601612c57565b60008060408385031215612cd257612cd2600080fd5b6000612cde858561296b565b925050602083013567ffffffffffffffff811115612cfe57612cfe600080fd5b6129a985828601612c98565b600060208284031215612d1f57612d1f600080fd5b813567ffffffffffffffff811115612d3957612d39600080fd5b6128ab84828501612c98565b6128b581612906565b602081016114f58284612d45565b634e487b7160e01b600052602160045260246000fd5b60038110610ccf57610ccf612d5c565b80610be481612d72565b60006114f582612d82565b6128b581612d8c565b805160009060a0840190612db48582612d97565b506020830151612dc760208601826128b3565b506040830151612dda60408601826128b3565b506060830151612ded60608601826128b3565b5060808301518482036080860152612e058282612ae9565b95945050505050565b60208082528101612b278184612da0565b602081016114f58284612d97565b600067ffffffffffffffff821115612e4757612e47612bc6565b5060209081020190565b6000612e5f612c6584612e2d565b83815290506020808201908402830185811115612e7e57612e7e600080fd5b835b81811015612ea25780612e93888261292b565b84525060209283019201612e80565b5050509392505050565b600082601f830112612ec057612ec0600080fd5b81356128ab848260208601612e51565b6000612ede612c6584612e2d565b83815290506020808201908402830185811115612efd57612efd600080fd5b835b81811015612ea25780612f12888261296b565b84525060209283019201612eff565b600082601f830112612f3557612f35600080fd5b81356128ab848260208601612ed0565b600080600080600060a08688031215612f6057612f60600080fd5b6000612f6c888861292b565b9550506020612f7d8882890161296b565b945050604086013567ffffffffffffffff811115612f9d57612f9d600080fd5b612fa988828901612eac565b935050606086013567ffffffffffffffff811115612fc957612fc9600080fd5b612fd588828901612f21565b9250506080612fe68882890161296b565b9150509295509295909350565b601781526000602082017f506f6f6c733a206e6f6e6578697374656e7420706f6f6c000000000000000000815291505b5060200190565b602080825281016114f581612ff3565b80516114f581612965565b60006020828403121561305a5761305a600080fd5b60006128ab848461303a565b634e487b7160e01b600052601160045260246000fd5b60008282101561308e5761308e613066565b500390565b60008160001904831182151516156130ad576130ad613066565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826130d7576130d76130b2565b500490565b600082198211156130ef576130ef613066565b500190565b602e81526000602082017f5374616b653a2063616c6c6572206d757374206265204d616a6f7243616e646981526d19185d195cc818dbdb9d1c9858dd60921b602082015291505b5060400190565b602080825281016114f5816130f4565b606081016131608286612d45565b61316d6020830185612d97565b6128ab6040830184612d97565b601f81526000602082017f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081529150613023565b602080825281016114f58161317a565b602181526000602082017f5374616b653a207265776172642069732066726f7a656e2063757272656e746c8152607960f81b6020820152915061313b565b602080825281016114f5816131be565b6040810161321a8285612d45565b612b2760208301846128b3565b602681526000602082017f5374616b653a2063616c6c6572206d75737420626520536c617368657220636f8152651b9d1c9858dd60d21b6020820152915061313b565b602080825281016114f581613227565b601881526000602082017f5374616b653a207a65726f207374616b6520616d6f756e74000000000000000081529150613023565b602080825281016114f58161327a565b600082600160ff1b018212600084121516156132dc576132dc613066565b826001600160ff1b0301821360008412161561308e5761308e613066565b602781526000602082017f5374616b653a2063616c6c6572206d75737420626520456c656374696f6e20638152661bdb9d1c9858dd60ca1b6020820152915061313b565b602080825281016114f5816132fa565b80516114f581612917565b6000613367612c6584612e2d565b8381529050602080820190840283018581111561338657613386600080fd5b835b81811015612ea2578061339b888261334e565b84525060209283019201613388565b600082601f8301126133be576133be600080fd5b81516128ab848260208601613359565b6000602082840312156133e3576133e3600080fd5b815167ffffffffffffffff8111156133fd576133fd600080fd5b6128ab848285016133aa565b634e487b7160e01b600052603260045260246000fd5b600060001982141561343357613433613066565b5060010190565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152915061313b565b602080825281016114f58161343a565b600060ff82166114f5565b6128b581613495565b602081016114f582846134a0565b6000816001600160ff1b03038313600083121516156134d8576134d8613066565b81600160ff1b0383126000831216156130ef576130ef613066565b60208082527f5374616b653a207374616b652069732066726f7a656e2063757272656e746c7991019081526000613023565b602080825281016114f5816134f3565b801515612920565b80516114f581613535565b60006020828403121561355d5761355d600080fd5b60006128ab848461353d565b60138152600060208201725374616b653a20736c6173682065786973747360681b81529150613023565b602080825281016114f581613569565b634e487b7160e01b600052602260045260246000fd5b6002810460018216806135cd57607f821691505b602082108114156135e0576135e06135a3565b50919050565b60158152600060208201745374616b653a20696e76616c696420706172616d7360581b81529150613023565b602080825281016114f5816135e6565b600060ff8216915060ff82141561343357613433613066565b60006136478383612d45565b505060200190565b6000613659825190565b80845260209384019383018060005b8381101561368d57815161367c888261363b565b975060208301925050600101613668565b509495945050505050565b600061364783836128b3565b60006136ae825190565b80845260209384019383018060005b8381101561368d5781516136d18882613698565b9750602083019250506001016136bd565b60a081016136f08288612d45565b6136fd60208301876128b3565b818103604083015261370f818661364f565b9050818103606083015261372381856136a4565b9050611c9a60808301846128b3565b600061373c825190565b61374a818560208601612abd565b9290920192915050565b6000612b278284613732565b6040810161376e8285612d97565b612b276020830184612d45565b6012815260006020820171506f6f6c733a20706f6f6c2065786973747360701b81529150613023565b602080825281016114f58161377b565b601381526000602082017229ba30b5b29d1034b73b30b634b21031b7b2b360691b81529150613023565b602080825281016114f5816137b4565b602281526000602082017f5374616b653a2063616e646964617465206973206e6f74207265676973746572815261195960f21b6020820152915061313b565b602080825281016114f5816137ee565b602381526000602082017f43616e64696461746552656769737472793a2063616e6469646174652065786981526273747360e81b6020820152915061313b565b602080825281016114f58161383d565b602281526000602082017f43616e64696461746552656769737472793a206d616e69666573742065786973815261747360f01b6020820152915061313b565b602080825281016114f58161388d565b602e81526000602082017f5374616b653a20746f74616c20616d6f756e74206973206c657373207468616e81526d206d696e696d756d207374616b6560901b6020820152915061313b565b602080825281016114f5816138dc565b606081016139458286612d45565b6139526020830185612d45565b6128ab60408301846128b3565b600b81526000602082016a0496e7465676572203c20360ac1b81529150613023565b602080825281016114f58161395f56fea2646970667358221220dae59512c583caf0d423c6e220cdddce99470e78dc9af33b11f8c5101c3dd8a364736f6c63430008090033"; export class MockStake__factory extends ContractFactory { constructor( ...args: [signer: Signer] | ConstructorParameters ) { if (args.length === 1) { super(_abi, _bytecode, args[0]); } else { super(...args); } } deploy( overrides?: Overrides & { from?: string | Promise } ): Promise { return super.deploy(overrides || {}) as Promise; } getDeployTransaction( overrides?: Overrides & { from?: string | Promise } ): TransactionRequest { return super.getDeployTransaction(overrides || {}); } attach(address: string): MockStake { return super.attach(address) as MockStake; } connect(signer: Signer): MockStake__factory { return super.connect(signer) as MockStake__factory; } static readonly bytecode = _bytecode; static readonly abi = _abi; static createInterface(): MockStakeInterface { return new utils.Interface(_abi) as MockStakeInterface; } static connect( address: string, signerOrProvider: Signer | Provider ): MockStake { return new Contract(address, _abi, signerOrProvider) as MockStake; } }