0 txs
0 calls
constructor
No constructor.
functions
balanceOf
viewfunction balanceOf() view returns (uint256)
balanceOfPool
viewfunction balanceOfPool() view returns (uint256)
balanceOfWant
viewfunction balanceOfWant() view returns (uint256)
balancerVault
viewfunction balancerVault() view returns (address)
beefyFeeConfig
viewfunction beefyFeeConfig() view returns (address)
beefyFeeRecipient
viewfunction beefyFeeRecipient() view returns (address)
callReward
viewfunction callReward() view returns (uint256)
depositFee
purefunction depositFee() pure returns (uint256)
duration
viewfunction duration() view returns (uint256)
getAllFees
viewfunction getAllFees() view returns (tuple)
getStratFeeId
viewfunction getStratFeeId() view returns (uint256)
harvestOnDeposit
viewfunction harvestOnDeposit() view returns (bool)
keeper
viewfunction keeper() view returns (address)
lastHarvest
viewfunction lastHarvest() view returns (uint256)
lockedProfit
viewfunction lockedProfit() view returns (uint256)
lpToken0
viewfunction lpToken0() view returns (address)
lpToken1
viewfunction lpToken1() view returns (address)
native
viewfunction native() view returns (address)
option
viewfunction option() view returns (address)
output
viewfunction output() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
rewardPool
viewfunction rewardPool() view returns (address)
rewards
viewfunction rewards(uint256) view returns (address)
rewardsAvailable
viewfunction rewardsAvailable() view returns (uint256)
strategist
viewfunction strategist() view returns (address)
swapBasedRouter
viewfunction swapBasedRouter() view returns (address)
totalLocked
viewfunction totalLocked() view returns (uint256)
unirouter
viewfunction unirouter() view returns (address)
vault
viewfunction vault() view returns (address)
want
viewfunction want() view returns (address)
WITHDRAWAL_FEE_CAP
viewfunction WITHDRAWAL_FEE_CAP() view returns (uint256)
WITHDRAWAL_MAX
viewfunction WITHDRAWAL_MAX() view returns (uint256)
withdrawFee
viewfunction withdrawFee() view returns (uint256)
addReward
nonpayablefunction addReward(address _reward)
beforeDeposit
nonpayablefunction beforeDeposit()
deposit
nonpayablefunction deposit()
harvest
nonpayablefunction harvest()
harvest
nonpayablefunction harvest(address callFeeRecipient)
initialize
nonpayablefunction initialize(address _want, address _rewardPool, address _native, address _output, address _option, address _swapBasedRouter, tuple _commonAddresses)
managerHarvest
nonpayablefunction managerHarvest()
panic
nonpayablefunction panic()
pause
nonpayablefunction pause()
receiveFlashLoan
nonpayablefunction receiveFlashLoan(address[], uint256[] amounts, uint256[] feeAmounts, bytes)
removeLastReward
nonpayablefunction removeLastReward()
renounceOwnership
nonpayablefunction renounceOwnership()
retireStrat
nonpayablefunction retireStrat()
setBeefyFeeConfig
nonpayablefunction setBeefyFeeConfig(address _beefyFeeConfig)
setBeefyFeeRecipient
nonpayablefunction setBeefyFeeRecipient(address _beefyFeeRecipient)
setHarvestOnDeposit
nonpayablefunction setHarvestOnDeposit(bool _harvestOnDeposit)
setKeeper
nonpayablefunction setKeeper(address _keeper)
setLock
nonpayablefunction setLock()
setOption
nonpayablefunction setOption(address _option)
setStrategist
nonpayablefunction setStrategist(address _strategist)
setStratFeeId
nonpayablefunction setStratFeeId(uint256 _feeId)
setUnirouter
nonpayablefunction setUnirouter(address _unirouter)
setVault
nonpayablefunction setVault(address _vault)
setWithdrawalFee
nonpayablefunction setWithdrawalFee(uint256 _fee)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdraw
nonpayablefunction withdraw(uint256 _amount)
events
ChargedFees
event ChargedFees(uint256 callFees, uint256 beefyFees, uint256 strategistFees)
Deposit
event Deposit(uint256 tvl)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
SetBeefyFeeConfig
event SetBeefyFeeConfig(address beefyFeeConfig)
SetBeefyFeeRecipient
event SetBeefyFeeRecipient(address beefyFeeRecipient)
SetKeeper
event SetKeeper(address keeper)
SetStrategist
event SetStrategist(address strategist)
SetStratFeeId
event SetStratFeeId(uint256 feeId)
SetUnirouter
event SetUnirouter(address unirouter)
SetVault
event SetVault(address vault)
SetWithdrawalFee
event SetWithdrawalFee(uint256 withdrawalFee)
StratHarvest
event StratHarvest(address indexed harvester, uint256 wantHarvested, uint256 tvl)
Unpaused
event Unpaused(address account)
Withdraw
event Withdraw(uint256 tvl)
errors
No errors.
creation bytecode
0x608060405234801561000f575f80fd5b50613bd78061001d5f395ff3fe608060405260043610610395575f3560e01c8063748747e6116101de578063b20feaaf11610108578063e941fa781161009d578063f2fde38b1161006d578063f2fde38b146109bc578063f301af42146109db578063fb617787146109fa578063fbfa77cf14610a0e575f80fd5b8063e941fa7814610955578063f04f270714610969578063f1a392da14610988578063f20eaeb81461099d575f80fd5b8063d801d946116100d8578063d801d946146108fa578063d92f3d731461090e578063dfbdc4371461092d578063e7a7250a14610941575f80fd5b8063b20feaaf14610892578063c1a3d44c146108b3578063c7b9d530146108c7578063d0e30db0146108e6575f80fd5b80638da5cb5b1161017e5780639c9b2e211161014e5780639c9b2e2114610816578063a68833e514610835578063ac1e502514610854578063aced166114610873575f80fd5b80638da5cb5b146107a75780638e145459146107c4578063952cbad1146107e357806397fd323d14610802575f80fd5b80638456cb59116101b95780638456cb5914610740578063877562b6146107545780638912cb8b146107735780638cfc025014610793575f80fd5b8063748747e6146106ee5780637aba6f371461070d5780637c3d98a614610721575f80fd5b806344b81396116102bf578063573fef0a1161025f57806367a527931161022f57806367a52793146106945780636817031b146106a7578063715018a6146106c6578063722713f7146106da575f80fd5b8063573fef0a1461061f5780635c975abb146106335780635ee167c01461065657806366666aa914610675575f80fd5b80634746fb551161029a5780634746fb55146105c25780634bd43bd3146105e157806354518b1a146105f5578063568914121461060a575f80fd5b806344b81396146105865780634641257d1461059a5780634700d305146105ae575f80fd5b8063158274a5116103355780632e1a7d4d116103055780632e1a7d4d146105155780633568af0d146105345780633e55f932146105535780633f4ba83a14610572575f80fd5b8063158274a5146104915780631f1fcd51146104b85780631fe4a686146104d7578063257ae0de146104f6575f80fd5b80630fb5a6b4116103705780630fb5a6b41461041c578063106fdbd01461043f578063115880861461045e57806311b0b42d14610472575f80fd5b8063010035af146103a05780630e5c011e146103dc5780630e8fbb5a146103fd575f80fd5b3661039c57005b5f80fd5b3480156103ab575f80fd5b5060a3546103bf906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103e7575f80fd5b506103fb6103f6366004613400565b610a2d565b005b348015610408575f80fd5b506103fb610417366004613428565b610a39565b348015610427575f80fd5b5061043160a95481565b6040519081526020016103d3565b34801561044a575f80fd5b506103fb610459366004613400565b610a7b565b348015610469575f80fd5b50610431610ad8565b34801561047d575f80fd5b50609e546103bf906001600160a01b031681565b34801561049c575f80fd5b506103bf73ba12222222228d8ba445958a75a0704d566bf2c881565b3480156104c3575f80fd5b5060a0546103bf906001600160a01b031681565b3480156104e2575f80fd5b50609a546103bf906001600160a01b031681565b348015610501575f80fd5b506098546103bf906001600160a01b031681565b348015610520575f80fd5b506103fb61052f366004613443565b610b48565b34801561053f575f80fd5b506103fb61054e366004613400565b610dae565b34801561055e575f80fd5b506103fb61056d366004613443565b610e10565b34801561057d575f80fd5b506103fb610ea2565b348015610591575f80fd5b50610431610ec4565b3480156105a5575f80fd5b506103fb610f18565b3480156105b9575f80fd5b506103fb610f21565b3480156105cd575f80fd5b50609c546103bf906001600160a01b031681565b3480156105ec575f80fd5b506103fb610f97565b348015610600575f80fd5b5061043161271081565b348015610615575f80fd5b5061043160a85481565b34801561062a575f80fd5b506103fb61101f565b34801561063e575f80fd5b5060655460ff165b60405190151581526020016103d3565b348015610661575f80fd5b5060a1546103bf906001600160a01b031681565b348015610680575f80fd5b5060a5546103bf906001600160a01b031681565b34801561069f575f80fd5b506064610431565b3480156106b2575f80fd5b506103fb6106c1366004613400565b61105b565b3480156106d1575f80fd5b506103fb6110b1565b3480156106e5575f80fd5b506104316110c2565b3480156106f9575f80fd5b506103fb610708366004613400565b6110ef565b348015610718575f80fd5b506103fb611145565b34801561072c575f80fd5b5060a6546103bf906001600160a01b031681565b34801561074b575f80fd5b506103fb61116e565b34801561075f575f80fd5b5060a2546103bf906001600160a01b031681565b34801561077e575f80fd5b5060a65461064690600160a01b900460ff1681565b34801561079e575f80fd5b50610431611186565b3480156107b2575f80fd5b506033546001600160a01b03166103bf565b3480156107cf575f80fd5b50609b546103bf906001600160a01b031681565b3480156107ee575f80fd5b506103fb6107fd36600461345a565b6111b6565b34801561080d575f80fd5b50610431611435565b348015610821575f80fd5b506103fb610830366004613400565b61151e565b348015610840575f80fd5b506103fb61084f366004613400565b611592565b34801561085f575f80fd5b506103fb61086e366004613443565b6115e8565b34801561087e575f80fd5b506099546103bf906001600160a01b031681565b34801561089d575f80fd5b506108a661165f565b6040516103d39190613540565b3480156108be575f80fd5b50610431611695565b3480156108d2575f80fd5b506103fb6108e1366004613400565b6116c5565b3480156108f1575f80fd5b506103fb61175b565b348015610905575f80fd5b506103fb6118a0565b348015610919575f80fd5b506103fb610928366004613400565b6118a8565b348015610938575f80fd5b50610431603281565b34801561094c575f80fd5b506104316118fe565b348015610960575f80fd5b5061043161192c565b348015610974575f80fd5b506103fb61098336600461372d565b611949565b348015610993575f80fd5b5061043160a75481565b3480156109a8575f80fd5b50609f546103bf906001600160a01b031681565b3480156109c7575f80fd5b506103fb6109d6366004613400565b611bbc565b3480156109e6575f80fd5b506103bf6109f5366004613443565b611c32565b348015610a05575f80fd5b506103fb611c5a565b348015610a19575f80fd5b506097546103bf906001600160a01b031681565b610a3681611dd0565b50565b610a41611f39565b60a6805460ff60a01b1916600160a01b8315158102919091179182905560ff91041615610a7157610a365f6115e8565b610a36600a6115e8565b610a83611f93565b609c80546001600160a01b0319166001600160a01b0383169081179091556040519081527f91e28ce4210d103c13c5174847e463b836900f8dc63e9d9b42a4255169d19529906020015b60405180910390a150565b60a5546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a08231906024015b602060405180830381865afa158015610b1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b43919061382f565b905090565b60aa54600103610b885760405162461bcd60e51b81526020600482015260066024820152651b1bd8dad95960d21b60448201526064015b60405180910390fd5b6097546001600160a01b03163314610bb25760405162461bcd60e51b8152600401610b7f90613846565b60a0546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610bf8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1c919061382f565b905081811015610cf95760a5546001600160a01b0316632e1a7d4d610c41838561387a565b6040518263ffffffff1660e01b8152600401610c5f91815260200190565b5f604051808303815f87803b158015610c76575f80fd5b505af1158015610c88573d5f803e3d5ffd5b505060a0546040516370a0823160e01b81523060048201526001600160a01b0390911692506370a082319150602401602060405180830381865afa158015610cd2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf6919061382f565b90505b81811115610d045750805b6033546001600160a01b03163214801590610d22575060655460ff16155b15610d53575f612710609d5483610d399190613893565b610d4391906138aa565b9050610d4f818361387a565b9150505b60975460a054610d70916001600160a01b03918216911683611fed565b7f5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d610d996110c2565b60405190815260200160405180910390a15050565b610db6611f93565b60a354609e54610dd3916001600160a01b0391821691165f612055565b60a380546001600160a01b0319166001600160a01b03831617905560655460ff16610a3657609e54610a36906001600160a01b0316825f19612055565b610e18611f39565b609c54604051631f2afc9960e11b8152600481018390526001600160a01b0390911690633e55f932906024015f604051808303815f87803b158015610e5b575f80fd5b505af1158015610e6d573d5f803e3d5ffd5b505050507f9163810ee1e29168d4ce900e48a333fb8fbd3fd070d2bef67f6d4db0846a469f81604051610acd91815260200190565b610eaa611f39565b610eb2612168565b610eba6121ba565b610ec261175b565b565b5f8060a75442610ed4919061387a565b90505f60a9548210610ee6575f610ef4565b8160a954610ef4919061387a565b905060a9548160a854610f079190613893565b610f1191906138aa565b9250505090565b610ec232611dd0565b610f29611f39565b610f3161116e565b60a5546001600160a01b0316632e1a7d4d610f4a610ad8565b6040518263ffffffff1660e01b8152600401610f6891815260200190565b5f604051808303815f87803b158015610f7f575f80fd5b505af1158015610f91573d5f803e3d5ffd5b50505050565b610f9f611f39565b60a480545f9190610fb29060019061387a565b81548110610fc257610fc26138c9565b5f9182526020822001546098546001600160a01b039182169350610feb92849290911690612055565b60a4805480610ffc57610ffc6138dd565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b60a654600160a01b900460ff1615610ec2576097546001600160a01b03163314610f185760405162461bcd60e51b8152600401610b7f90613846565b611063611f93565b609780546001600160a01b0319166001600160a01b0383169081179091556040519081527fd459c7242e23d490831b5676a611c4342d899d28f342d89ae80793e56a930f3090602001610acd565b6110b9611f93565b610ec25f6122c5565b5f6110cb610ec4565b6110d3610ad8565b6110db611695565b6110e591906138f1565b610b43919061387a565b6110f7611f39565b609980546001600160a01b0319166001600160a01b0383169081179091556040519081527fefb5cfa1a8690c124332ab93324539c5c9c4be03f28aeb8be86f2d8a0c9fb99b90602001610acd565b61114d611f39565b600260aa541015610ec25760aa8054905f61116783613904565b9190505550565b611176611f39565b61117e612316565b610ec2612353565b609c54604051636788231160e11b81523060048201525f916001600160a01b03169063cf10462290602401610b04565b5f54610100900460ff16158080156111d457505f54600160ff909116105b806111ed5750303b1580156111ed57505f5460ff166001145b6112505760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b7f565b5f805460ff191660011790558015611271575f805461ff0019166101001790555b61127a8261243c565b60a080546001600160a01b03199081166001600160a01b038b811691821790935560a5805483168b8516179055609e805483168a8516179055609f8054831689851617905560a38054831688851617905560a6805490921692861692909217905560408051630dfe168160e01b81529051630dfe1681916004808201926020929091908290030181865afa158015611314573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611338919061391c565b60a180546001600160a01b0319166001600160a01b0392831617905560a0546040805163d21220a760e01b81529051919092169163d21220a79160048083019260209291908290030181865afa158015611394573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113b8919061391c565b60a280546001600160a01b0319166001600160a01b0392909216919091179055610e1060a9556113e66121ba565b801561142b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b5f8061143f612597565b90505f61144a6118fe565b90505f81156114d257609854609f54609e54604051632550332960e11b81526001600160a01b0393841693634aa066529361149093908216929116908790600401613937565b602060405180830381865afa1580156114ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114cf919061382f565b90505b670de0b6b3a76400008360400151670de0b6b3a7640000855f0151846114f89190613893565b61150291906138aa565b61150c9190613893565b61151691906138aa565b935050505090565b611526611f93565b609854611541906001600160a01b0383811691165f19612055565b60a480546001810182555f919091527fe434dc35da084cf8d7e8186688ea2dacb53db7003d427af3abf351bd9d0a4e8d0180546001600160a01b0319166001600160a01b0392909216919091179055565b61159a611f93565b609b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f8041329bf7057543a2c2ff4e4071d1d488a31f82ed44e169b5cd2f04f5e3ac8590602001610acd565b6115f0611f39565b603281111561162a5760405162461bcd60e51b8152600401610b7f906020808252600490820152630216361760e41b604082015260600190565b609d8190556040518181527f3aa4413905e8f015896ec5880bdde24088ccb19b578f9fcf6800354d5320d4af90602001610acd565b611667613399565b604051806060016040528061167a612597565b81526020016064815260200161168e61192c565b9052919050565b60a0546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401610b04565b609a546001600160a01b0316331461170d5760405162461bcd60e51b815260206004820152600b60248201526a085cdd1c985d1959da5cdd60aa1b6044820152606401610b7f565b609a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f46d58e3fa07bf19b1d27240f0e286b27e9f7c1b0d88933333fe833b60eec541290602001610acd565b611763612639565b60aa5460010361179e5760405162461bcd60e51b81526020600482015260066024820152651b1bd8dad95960d21b6044820152606401610b7f565b60a0546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156117e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611808919061382f565b90508015610a365760a55460405163534a7e1d60e11b8152600481018390526001600160a01b039091169063a694fc3a906024015f604051808303815f87803b158015611853575f80fd5b505af1158015611865573d5f803e3d5ffd5b505050507f4d6ce1e535dbade1c23defba91e23b8f791ce5edc0cc320257a2b364e4e384266118926110c2565b604051908152602001610acd565b610f18611f39565b6118b0611f93565b609880546001600160a01b0319166001600160a01b0383169081179091556040519081527f5ca6e64c4522e68e154aa9372f2c5969cd37d9640e59f66953dc472f54ee86fa90602001610acd565b60a5546040516246613160e11b81523060048201525f916001600160a01b031690628cc26290602401610b04565b5f61193960655460ff1690565b6119445750609d5490565b505f90565b60ab5460ff16151560011461198d5760405162461bcd60e51b815260206004820152600a602482015269085a5b9a5d1a585d195960b21b6044820152606401610b7f565b60ab805460ff1916905560a3546040516370a0823160e01b81523060048201526001600160a01b039091169063eb8738f59082906370a0823190602401602060405180830381865afa1580156119e5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a09919061382f565b855f81518110611a1b57611a1b6138c9565b60200260200101516040518363ffffffff1660e01b8152600401611a49929190918252602082015260400190565b5f604051808303815f87803b158015611a60575f80fd5b505af1158015611a72573d5f803e3d5ffd5b5050609854609f54609e546040516370a0823160e01b81523060048201526001600160a01b03938416955063df791e50945091831692169082906370a0823190602401602060405180830381865afa158015611ad0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611af4919061382f565b6040518463ffffffff1660e01b8152600401611b1293929190613937565b6020604051808303815f875af1158015611b2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b52919061382f565b50610f9173ba12222222228d8ba445958a75a0704d566bf2c8835f81518110611b7d57611b7d6138c9565b6020026020010151855f81518110611b9757611b976138c9565b6020026020010151611ba991906138f1565b609e546001600160a01b03169190611fed565b611bc4611f93565b6001600160a01b038116611c295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b7f565b610a36816122c5565b60a48181548110611c41575f80fd5b5f918252602090912001546001600160a01b0316905081565b6097546001600160a01b03163314611c845760405162461bcd60e51b8152600401610b7f90613846565b60a5546001600160a01b0316632e1a7d4d611c9d610ad8565b6040518263ffffffff1660e01b8152600401611cbb91815260200190565b5f604051808303815f87803b158015611cd2575f80fd5b505af1158015611ce4573d5f803e3d5ffd5b505060a0546040516370a0823160e01b81523060048201525f93506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015611d30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d54919061382f565b60a05460975460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101849052929350169063a9059cbb906044016020604051808303815f875af1158015611da8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dcc919061396b565b5050565b611dd8612639565b60a55f9054906101000a90046001600160a01b03166001600160a01b0316633d18b9126040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611e24575f80fd5b505af1158015611e36573d5f803e3d5ffd5b50505050611e4261267f565b609e546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611e88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eac919061382f565b90508015611dcc57611ebd82612b6d565b611ec5612d15565b5f611ece611695565b9050611ed8610ec4565b611ee290826138f1565b60a855611eed61175b565b4260a755337f9bc239f1724cacfb88cb1d66a2dc437467699b68a8c90d7b63110cf4b6f9241082611f1c6110c2565b6040805192835260208301919091520160405180910390a2505050565b6033546001600160a01b0316331480611f5c57506099546001600160a01b031633145b610ec25760405162461bcd60e51b815260206004820152600860248201526710b6b0b730b3b2b960c11b6044820152606401610b7f565b6033546001600160a01b03163314610ec25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b7f565b6040516001600160a01b03831660248201526044810182905261205090849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613044565b505050565b8015806120cd5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156120a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120cb919061382f565b155b6121385760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610b7f565b6040516001600160a01b03831660248201526044810182905261205090849063095ea7b360e01b90606401612019565b612170613115565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60a55460a0546121d8916001600160a01b0391821691165f19612055565b609854609f546121f6916001600160a01b0391821691165f19612055565b609854609e54612214916001600160a01b0391821691165f19612055565b60a354609e54612232916001600160a01b0391821691165f19612055565b60a65460a154612250916001600160a01b0391821691165f19612055565b60a65460a25461226e916001600160a01b0391821691165f19612055565b5f5b60a454811015610a365760985460a480546122bd926001600160a01b0316915f1991859081106122a2576122a26138c9565b5f918252602090912001546001600160a01b03169190612055565b600101612270565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b61231e612639565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861219d3390565b60a55460a054612370916001600160a01b0391821691165f612055565b609854609f5461238d916001600160a01b0391821691165f612055565b609854609e546123aa916001600160a01b0391821691165f612055565b60a354609e546123c7916001600160a01b0391821691165f612055565b60a65460a1546123e4916001600160a01b0391821691165f612055565b60a65460a254612401916001600160a01b0391821691165f612055565b5f5b60a454811015610a365760985460a48054612434926001600160a01b0316915f91859081106122a2576122a26138c9565b600101612403565b5f54610100900460ff166124625760405162461bcd60e51b8152600401610b7f90613986565b61246a61315e565b61247261318c565b61247f6020820182613400565b609780546001600160a01b0319166001600160a01b03929092169190911790556124af6040820160208301613400565b609880546001600160a01b0319166001600160a01b03929092169190911790556124df6060820160408301613400565b609980546001600160a01b0319166001600160a01b039290921691909117905561250f6080820160608301613400565b609a80546001600160a01b0319166001600160a01b039290921691909117905561253f60a0820160808301613400565b609b80546001600160a01b0319166001600160a01b039290921691909117905561256f60c0820160a08301613400565b609c80546001600160a01b0319166001600160a01b039290921691909117905550600a609d55565b6125cd6040518060c001604052805f81526020015f81526020015f81526020015f8152602001606081526020015f151581525090565b609c54604051639af608c960e01b81523060048201526001600160a01b0390911690639af608c9906024015f60405180830381865afa158015612612573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b4391908101906139d1565b60655460ff1615610ec25760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610b7f565b4780156126eb57609e5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b1580156126d3575f80fd5b505af11580156126e5573d5f803e3d5ffd5b50505050505b60a45415612816575f5b60a454811015612814575f60a48281548110612713576127136138c9565b5f9182526020822001546040516370a0823160e01b81523060048201526001600160a01b03909116925082906370a0823190602401602060405180830381865afa158015612763573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612787919061382f565b9050801561280a57609854609e54604051630df791e560e41b81526001600160a01b039283169263df791e50926127c8928792909116908690600401613937565b6020604051808303815f875af11580156127e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612808919061382f565b505b50506001016126f5565b505b60a3546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa15801561285c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612880919061382f565b90508015611dcc5760a35460405163a74e16ed60e01b8152600481018390525f916001600160a01b03169063a74e16ed90602401602060405180830381865afa1580156128cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128f3919061382f565b609854609f54609e54604051632550332960e11b81529394505f936001600160a01b0393841693634aa066529361293593908216929116908890600401613937565b602060405180830381865afa158015612950573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612974919061382f565b9050606461298382605f613893565b61298d91906138aa565b82106129c65760405162461bcd60e51b8152602060048201526008602482015267766f6c6174696c6560c01b6044820152606401610b7f565b60a354604051637eb80ff360e01b8152600481018590525f91600a916001600160a01b0390911690637eb80ff390602401602060405180830381865afa158015612a12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a36919061382f565b612a4190600b613893565b612a4b91906138aa565b6040805160018082528183019092529192505f91906020808301908036833750506040805160018082528183019092529293505f929150602080830190803683375050609e5484519293506001600160a01b0316918491505f90612ab157612ab16138c9565b60200260200101906001600160a01b031690816001600160a01b03168152505082815f81518110612ae457612ae46138c9565b602090810291909101015260ab805460ff19166001179055604051632e1c224f60e11b815273ba12222222228d8ba445958a75a0704d566bf2c890635c38449e90612b3790309086908690600401613aa8565b5f604051808303815f87803b158015612b4e575f80fd5b505af1158015612b60573d5f803e3d5ffd5b5050505050505050505050565b5f612b76612597565b8051609e546040516370a0823160e01b81523060048201529293505f92670de0b6b3a764000092916001600160a01b0316906370a0823190602401602060405180830381865afa158015612bcc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bf0919061382f565b612bfa9190613893565b612c0491906138aa565b90505f670de0b6b3a7640000836040015183612c209190613893565b612c2a91906138aa565b609e54909150612c44906001600160a01b03168583611fed565b5f670de0b6b3a7640000846020015184612c5e9190613893565b612c6891906138aa565b609b54609e54919250612c88916001600160a01b03908116911683611fed565b5f670de0b6b3a7640000856060015185612ca29190613893565b612cac91906138aa565b609a54609e54919250612ccc916001600160a01b03908116911683611fed565b60408051848152602081018490529081018290527fd255b592c7f268a73e534da5219a60ff911b4cf6daae21c7d20527dd657bd99a9060600160405180910390a1505050505050565b609e546040516370a0823160e01b81523060048201525f916002916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612d60573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d84919061382f565b612d8e91906138aa565b609e5460a1549192506001600160a01b03918216911614612e2857609854609e5460a154604051630df791e560e41b81526001600160a01b039384169363df791e5093612de693908216929116908690600401613937565b6020604051808303815f875af1158015612e02573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e26919061382f565b505b609e5460a2546001600160a01b03908116911614612ebf57609854609e5460a254604051630df791e560e41b81526001600160a01b039384169363df791e5093612e7d93908216929116908690600401613937565b6020604051808303815f875af1158015612e99573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ebd919061382f565b505b60a1546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015612f05573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f29919061382f565b60a2546040516370a0823160e01b81523060048201529192505f916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612f74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f98919061382f565b60a65460a15460a25460405162e8e33760e81b81526001600160a01b0392831660048201529082166024820152604481018690526064810184905260016084820181905260a48201523060c48201524260e4820152929350169063e8e3370090610104016060604051808303815f875af1158015613018573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061303c9190613b49565b505050505050565b5f613098826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166131ba9092919063ffffffff16565b80519091501561205057808060200190518101906130b6919061396b565b6120505760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b7f565b60655460ff16610ec25760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610b7f565b5f54610100900460ff166131845760405162461bcd60e51b8152600401610b7f90613986565b610ec26131d2565b5f54610100900460ff166131b25760405162461bcd60e51b8152600401610b7f90613986565b610ec2613201565b60606131c884845f85613233565b90505b9392505050565b5f54610100900460ff166131f85760405162461bcd60e51b8152600401610b7f90613986565b610ec2336122c5565b5f54610100900460ff166132275760405162461bcd60e51b8152600401610b7f90613986565b6065805460ff19169055565b6060824710156132945760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b7f565b6001600160a01b0385163b6132eb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b7f565b5f80866001600160a01b031685876040516133069190613b74565b5f6040518083038185875af1925050503d805f8114613340576040519150601f19603f3d011682016040523d82523d5f602084013e613345565b606091505b5091509150613355828286613360565b979650505050505050565b6060831561336f5750816131cb565b82511561337f5782518084602001fd5b8160405162461bcd60e51b8152600401610b7f9190613b8f565b60405180606001604052806133da6040518060c001604052805f81526020015f81526020015f81526020015f8152602001606081526020015f151581525090565b81526020015f81526020015f81525090565b6001600160a01b0381168114610a36575f80fd5b5f60208284031215613410575f80fd5b81356131cb816133ec565b8015158114610a36575f80fd5b5f60208284031215613438575f80fd5b81356131cb8161341b565b5f60208284031215613453575f80fd5b5035919050565b5f805f805f805f878903610180811215613472575f80fd5b883561347d816133ec565b9750602089013561348d816133ec565b9650604089013561349d816133ec565b955060608901356134ad816133ec565b945060808901356134bd816133ec565b935060a08901356134cd816133ec565b925060c060bf19820112156134e0575f80fd5b5060c08801905092959891949750929550565b5f5b8381101561350d5781810151838201526020016134f5565b50505f910152565b5f815180845261352c8160208601602086016134f3565b601f01601f19169290920160200192915050565b602081525f82516060602084015280516080840152602081015160a0840152604081015160c0840152606081015160e0840152608081015160c061010085015261358e610140850182613515565b905060a082015115156101208501526020850151604085015260408501516060850152809250505092915050565b634e487b7160e01b5f52604160045260245ffd5b60405160c0810167ffffffffffffffff811182821017156135f3576135f36135bc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613622576136226135bc565b604052919050565b5f67ffffffffffffffff821115613643576136436135bc565b5060051b60200190565b5f82601f83011261365c575f80fd5b8135602061367161366c8361362a565b6135f9565b8083825260208201915060208460051b870101935086841115613692575f80fd5b602086015b848110156136ae5780358352918301918301613697565b509695505050505050565b5f67ffffffffffffffff8211156136d2576136d26135bc565b50601f01601f191660200190565b5f82601f8301126136ef575f80fd5b81356136fd61366c826136b9565b818152846020838601011115613711575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215613740575f80fd5b843567ffffffffffffffff80821115613757575f80fd5b818701915087601f83011261376a575f80fd5b8135602061377a61366c8361362a565b82815260059290921b8401810191818101908b841115613798575f80fd5b948201945b838610156137bf5785356137b0816133ec565b8252948201949082019061379d565b985050880135925050808211156137d4575f80fd5b6137e08883890161364d565b945060408701359150808211156137f5575f80fd5b6138018883890161364d565b93506060870135915080821115613816575f80fd5b50613823878288016136e0565b91505092959194509250565b5f6020828403121561383f575f80fd5b5051919050565b602080825260069082015265085d985d5b1d60d21b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561388d5761388d613866565b92915050565b808202811582820484141761388d5761388d613866565b5f826138c457634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b8082018082111561388d5761388d613866565b5f6001820161391557613915613866565b5060010190565b5f6020828403121561392c575f80fd5b81516131cb816133ec565b6001600160a01b039384168152919092166020820152604081019190915260600190565b80516139668161341b565b919050565b5f6020828403121561397b575f80fd5b81516131cb8161341b565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208083850312156139e2575f80fd5b825167ffffffffffffffff808211156139f9575f80fd5b9084019060c08287031215613a0c575f80fd5b613a146135d0565b8251815283830151848201526040830151604082015260608301516060820152608083015182811115613a45575f80fd5b83019150601f82018713613a57575f80fd5b8151613a6561366c826136b9565b8181528886838601011115613a78575f80fd5b613a87828783018887016134f3565b608083015250613a9960a0840161395b565b60a08201529695505050505050565b6001600160a01b0384811682526080602080840182905285519184018290525f928682019290919060a0860190855b81811015613af5578551851683529483019491830191600101613ad7565b505085810360408701528651808252908201935091508086015f5b83811015613b2c57815185529382019390820190600101613b10565b5050505082810360608401525f8152602081019695505050505050565b5f805f60608486031215613b5b575f80fd5b8351925060208401519150604084015190509250925092565b5f8251613b858184602087016134f3565b9190910192915050565b602081525f6131cb602083018461351556fea2646970667358221220e4fa897d121a5df60bfd0f57aacbbd3055f3c1b48bfc9ff96028ceb946f0e8dc64736f6c63430008170033