[ { "inputs": [ { "internalType": "address", "name": "_stakingToken", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldDepositFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newDepositFee", "type": "uint256" } ], "name": "DepositFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldFeeRecipient", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newFeeRecipient", "type": "address" } ], "name": "FeeRecipientUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Recovered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "reward", "type": "uint256" } ], "name": "RewardAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "rewardsToken", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "reward", "type": "uint256" } ], "name": "RewardPaid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "newDuration", "type": "uint256" } ], "name": "RewardsDurationUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Staked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldWithdrawFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newWithdrawFee", "type": "uint256" } ], "name": "WithdrawFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdrawn", "type": "event" }, { "inputs": [], "name": "MAX_FEE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_rewardsToken", "type": "address" }, { "internalType": "address", "name": "_rewardsDistributor", "type": "address" }, { "internalType": "uint256", "name": "_rewardsDuration", "type": "uint256" } ], "name": "addReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "depositFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "_rewardsToken", "type": "address" } ], "name": "earned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_rewardsToken", "type": "address" } ], "name": "getRewardForDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_rewardsToken", "type": "address" } ], "name": "lastTimeRewardApplicable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_rewardsToken", "type": "address" }, { "internalType": "uint256", "name": "reward", "type": "uint256" } ], "name": "notifyRewardAmount", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "recoverERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "rewardData", "outputs": [ { "internalType": "address", "name": "rewardsDistributor", "type": "address" }, { "internalType": "uint256", "name": "rewardsDuration", "type": "uint256" }, { "internalType": "uint256", "name": "periodFinish", "type": "uint256" }, { "internalType": "uint256", "name": "rewardRate", "type": "uint256" }, { "internalType": "uint256", "name": "lastUpdateTime", "type": "uint256" }, { "internalType": "uint256", "name": "rewardPerTokenStored", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_rewardsToken", "type": "address" } ], "name": "rewardPerToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "rewardTokens", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "rewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_depositFee", "type": "uint256" } ], "name": "setDepositFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_feeRecipient", "type": "address" } ], "name": "setFeeRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_rewardsToken", "type": "address" }, { "internalType": "address", "name": "_rewardsDistributor", "type": "address" } ], "name": "setRewardsDistributor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_rewardsToken", "type": "address" }, { "internalType": "uint256", "name": "_rewardsDuration", "type": "uint256" } ], "name": "setRewardsDuration", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_withdrawFee", "type": "uint256" } ], "name": "setWithdrawFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "stake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stakingToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "strategist", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "togglePause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "userRewardPerTokenPaid", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
60806040526000600b556000600c553480156200001b57600080fd5b5060405162001c2838038062001c288339810160408190526200003e9162000109565b60016000819055805460ff1916905533806200007457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200007f81620000af565b50600280546001600160a01b039092166001600160a01b0319928316179055600a8054909116331790556200013b565b600180546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200011c57600080fd5b81516001600160a01b03811681146200013457600080fd5b9392505050565b611add806200014b6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806372f702f31161010f578063bcd11014116100a2578063e74b981b11610071578063e74b981b146104b2578063e941fa78146104c5578063f1229777146104ce578063f2fde38b146104e157600080fd5b8063bcd1101414610459578063c4ae31681461046c578063d0ed26ae14610474578063e70b9e271461048757600080fd5b8063a694fc3a116100de578063a694fc3a14610417578063b66503cf1461042a578063b6ac642a1461043d578063bc063e1a1461045057600080fd5b806372f702f3146103c85780637bb7bed1146103db5780638980f11f146103ee5780638da5cb5b1461040157600080fd5b806348e5d9f81161018757806367a527931161015657806367a52793146103635780637035ab981461036c57806370a0823114610397578063715018a6146103c057600080fd5b806348e5d9f8146102a0578063490ae210146103275780635c975abb1461033a578063638634ee1461035057600080fd5b80632e1a7d4d116101c35780632e1a7d4d1461025f5780633d18b912146102725780633f695b451461027a578063469048401461028d57600080fd5b806318160ddd146101f55780631fe4a6861461020c578063211dc32d146102375780632378bea61461024a575b600080fd5b6007545b6040519081526020015b60405180910390f35b60095461021f906001600160a01b031681565b6040516001600160a01b039091168152602001610203565b6101f96102453660046118fe565b6104f4565b61025d610258366004611931565b61058e565b005b61025d61026d36600461195b565b6106cf565b61025d6108f5565b61025d6102883660046118fe565b610ad1565b600a5461021f906001600160a01b031681565b6102f06102ae366004611974565b60036020819052600091825260409091208054600182015460028301549383015460048401546005909401546001600160a01b03909316949193919290919086565b604080516001600160a01b0390971687526020870195909552938501929092526060840152608083015260a082015260c001610203565b61025d61033536600461195b565b610b07565b60015460ff166040519015158152602001610203565b6101f961035e366004611974565b610b91565b6101f9600b5481565b6101f961037a3660046118fe565b600560209081526000928352604080842090915290825290205481565b6101f96103a5366004611974565b6001600160a01b031660009081526008602052604090205490565b61025d610bdb565b60025461021f906001600160a01b031681565b61021f6103e936600461195b565b610bed565b61025d6103fc366004611931565b610c17565b60015461010090046001600160a01b031661021f565b61025d61042536600461195b565b610d4b565b61025d610438366004611931565b610f6c565b61025d61044b36600461195b565b61122b565b6101f96101f481565b6101f9610467366004611974565b6112b5565b61025d6112e1565b61025d61048236600461198f565b611304565b6101f96104953660046118fe565b600660209081526000928352604080842090915290825290205481565b61025d6104c0366004611974565b6113a0565b6101f9600c5481565b6101f96104dc366004611974565b61145b565b61025d6104ef366004611974565b61150d565b6001600160a01b038083166000818152600660209081526040808320948616808452948252808320549383526005825280832094835293905291822054670de0b6b3a7640000906105448561145b565b61054e91906119e1565b6001600160a01b03861660009081526008602052604090205461057191906119f4565b61057b9190611a0b565b6105859190611a2d565b90505b92915050565b6001600160a01b03821660009081526003602052604090206002015442116105fd5760405162461bcd60e51b815260206004820152601a60248201527f52657761726420706572696f64207374696c6c2061637469766500000000000060448201526064015b60405180910390fd5b6001600160a01b0382811660009081526003602052604090205416331461062357600080fd5b600081116106735760405162461bcd60e51b815260206004820181905260248201527f526577617264206475726174696f6e206d757374206265206e6f6e2d7a65726f60448201526064016105f4565b6001600160a01b038216600081815260036020908152604091829020600101849055815192835282018390527fad2f86b01ed93b4b3a150d448c61a4f5d8d38075d3c0c64cc0a26fd6e1f4954591015b60405180910390a15050565b6106d7611548565b3360005b6004548110156107c6576000600482815481106106fa576106fa611a40565b6000918252602090912001546001600160a01b0316905061071a8161145b565b6001600160a01b03821660009081526003602052604090206005015561073f81610b91565b6001600160a01b038083166000908152600360205260409020600401919091558316156107bd5761077083826104f4565b6001600160a01b0380851660008181526006602090815260408083209487168084529482528083209590955560038152848220600590810154938352815284822093825292909252919020555b506001016106db565b506000821161080b5760405162461bcd60e51b8152602060048201526011602482015270043616e6e6f74207769746864726177203607c1b60448201526064016105f4565b8160075461081991906119e1565b600755336000908152600860205260409020546108379083906119e1565b33600090815260086020526040902055600c541561089a576000612710600c548461086291906119f4565b61086c9190611a0b565b600a5460025491925061088c916001600160a01b03908116911683611572565b61089681846119e1565b9250505b6002546108b1906001600160a01b03163384611572565b60405182815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5906020015b60405180910390a2506108f26001600055565b50565b6108fd611548565b3360005b6004548110156109ec5760006004828154811061092057610920611a40565b6000918252602090912001546001600160a01b031690506109408161145b565b6001600160a01b03821660009081526003602052604090206005015561096581610b91565b6001600160a01b038083166000908152600360205260409020600401919091558316156109e35761099683826104f4565b6001600160a01b0380851660008181526006602090815260408083209487168084529482528083209590955560038152848220600590810154938352815284822093825292909252919020555b50600101610901565b5060005b600454811015610ac357600060048281548110610a0f57610a0f611a40565b60009182526020808320909101543383526006825260408084206001600160a01b03909216808552919092529120549091508015610ab9573360008181526006602090815260408083206001600160a01b0387168085529252822091909155610a789183611572565b6040518181526001600160a01b0383169033907f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e9060200160405180910390a35b50506001016109f0565b5050610acf6001600055565b565b610ad96115d6565b6001600160a01b03918216600090815260036020526040902080546001600160a01b03191691909216179055565b610b0f6115d6565b6101f4811115610b505760405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b60448201526064016105f4565b600b5460408051918252602082018390527f828cf983933545af35b9ba46eec951db1cb4c5433c3ec403aeced2963c264790910160405180910390a1600b55565b6001600160a01b0381166000908152600360205260408120600201544210610bd4576001600160a01b038216600090815260036020526040902060020154610588565b4292915050565b610be36115d6565b610acf6000611609565b60048181548110610bfd57600080fd5b6000918252602090912001546001600160a01b0316905081565b610c1f6115d6565b6002546001600160a01b0390811690831603610c7d5760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f74207769746864726177207374616b696e6720746f6b656e00000060448201526064016105f4565b6001600160a01b03821660009081526003602052604090206004015415610ce65760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742077697468647261772072657761726420746f6b656e0000000060448201526064016105f4565b600154610d0c9061010090046001600160a01b03166001600160a01b0384169083611572565b604080516001600160a01b0384168152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa2891016106c3565b610d53611548565b610d5b611663565b3360005b600454811015610e4a57600060048281548110610d7e57610d7e611a40565b6000918252602090912001546001600160a01b03169050610d9e8161145b565b6001600160a01b038216600090815260036020526040902060050155610dc381610b91565b6001600160a01b03808316600090815260036020526040902060040191909155831615610e4157610df483826104f4565b6001600160a01b0380851660008181526006602090815260408083209487168084529482528083209590955560038152848220600590810154938352815284822093825292909252919020555b50600101610d5f565b5060008211610e8c5760405162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b60448201526064016105f4565b600b5415610ee1576000612710600b5484610ea791906119f4565b610eb19190611a0b565b600a54600254919250610ed3916001600160a01b039081169133911684611687565b610edd81846119e1565b9250505b81600754610eef9190611a2d565b60075533600090815260086020526040902054610f0d908390611a2d565b33600081815260086020526040902091909155600254610f3a916001600160a01b03909116903085611687565b60405182815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d906020016108df565b6000805b60045481101561105b57600060048281548110610f8f57610f8f611a40565b6000918252602090912001546001600160a01b03169050610faf8161145b565b6001600160a01b038216600090815260036020526040902060050155610fd481610b91565b6001600160a01b038083166000908152600360205260409020600401919091558316156110525761100583826104f4565b6001600160a01b0380851660008181526006602090815260408083209487168084529482528083209590955560038152848220600590810154938352815284822093825292909252919020555b50600101610f70565b506001600160a01b0383811660009081526003602052604090205416331461108257600080fd5b6110976001600160a01b038416333085611687565b6001600160a01b0383166000908152600360205260409020600201544210611101576001600160a01b0383166000908152600360205260409020600101546110df9083611a0b565b6001600160a01b038416600090815260036020819052604090912001556111a5565b6001600160a01b0383166000908152600360205260408120600201546111289042906119e1565b6001600160a01b0385166000908152600360208190526040822001549192509061115290836119f4565b6001600160a01b03861660009081526003602052604090206001015490915061117b8286611a2d565b6111859190611a0b565b6001600160a01b0386166000908152600360208190526040909120015550505b6001600160a01b038316600090815260036020526040902042600482018190556001909101546111d491611a2d565b6001600160a01b03841660009081526003602090815260409182902060020192909255518381527fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d910160405180910390a1505050565b6112336115d6565b6101f48111156112745760405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b60448201526064016105f4565b600c5460408051918252602082018390527f733071ab8253b372ed26a6d1b04aec71c4bfcd209c93397df32bb77478cdd2c8910160405180910390a1600c55565b6001600160a01b03811660009081526003602081905260408220600181015491015461058891906119f4565b6112e96115d6565b60015460ff16156112fc57610acf6116c6565b610acf611718565b61130c6115d6565b6001600160a01b0383166000908152600360205260409020600101541561133257600080fd5b6004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b039586166001600160a01b031991821681179092556000918252600360205260409091208054949095169316929092178355910155565b6113a86115d6565b6001600160a01b0381166113f25760405162461bcd60e51b81526020600482015260116024820152700666565526563697069656e74206973203607c1b60448201526064016105f4565b600a54604080516001600160a01b03928316815291831660208301527faaebcf1bfa00580e41d966056b48521fa9f202645c86d4ddf28113e617c1b1d3910160405180910390a1600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600060075460000361148657506001600160a01b031660009081526003602052604090206005015490565b6007546001600160a01b0383166000908152600360208190526040909120908101546004909101546114b785610b91565b6114c191906119e1565b6114cb91906119f4565b6114dd90670de0b6b3a76400006119f4565b6114e79190611a0b565b6001600160a01b0383166000908152600360205260409020600501546105889190611a2d565b6115156115d6565b6001600160a01b03811661153f57604051631e4fbdf760e01b8152600060048201526024016105f4565b6108f281611609565b60026000540361156b57604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b6040516001600160a01b038381166024830152604482018390526115d191859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611753565b505050565b6001546001600160a01b03610100909104163314610acf5760405163118cdaa760e01b81523360048201526024016105f4565b600180546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60015460ff1615610acf5760405163d93c066560e01b815260040160405180910390fd5b6040516001600160a01b0384811660248301528381166044830152606482018390526116c09186918216906323b872dd9060840161159f565b50505050565b6116ce6117b6565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b611720611663565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336116fb565b60006117686001600160a01b038416836117d9565b9050805160001415801561178d57508080602001905181019061178b9190611a56565b155b156115d157604051635274afe760e01b81526001600160a01b03841660048201526024016105f4565b60015460ff16610acf57604051638dfc202b60e01b815260040160405180910390fd5b60606105858383600084600080856001600160a01b031684866040516117ff9190611a78565b60006040518083038185875af1925050503d806000811461183c576040519150601f19603f3d011682016040523d82523d6000602084013e611841565b606091505b509150915061185186838361185d565b925050505b9392505050565b6060826118725761186d826118b9565b611856565b815115801561188957506001600160a01b0384163b155b156118b257604051639996b31560e01b81526001600160a01b03851660048201526024016105f4565b5080611856565b8051156118c95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b03811681146118f957600080fd5b919050565b6000806040838503121561191157600080fd5b61191a836118e2565b9150611928602084016118e2565b90509250929050565b6000806040838503121561194457600080fd5b61194d836118e2565b946020939093013593505050565b60006020828403121561196d57600080fd5b5035919050565b60006020828403121561198657600080fd5b610585826118e2565b6000806000606084860312156119a457600080fd5b6119ad846118e2565b92506119bb602085016118e2565b9150604084013590509250925092565b634e487b7160e01b600052601160045260246000fd5b81810381811115610588576105886119cb565b8082028115828204841417610588576105886119cb565b600082611a2857634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610588576105886119cb565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a6857600080fd5b8151801515811461185657600080fd5b6000825160005b81811015611a995760208186018101518583015201611a7f565b50600092019182525091905056fea26469706673582212201d180af7ece0cd18eec28370e422cf721813b805e9dca43f5e6c49956eafd84c64736f6c634300081800330000000000000000000000005138ebe7acaae209d6f0b651e4d02a67ef61f436