0 txs
0 calls
constructor
constructor(address _vault, address _gauge, (address from, address to, bool stable, address factory)[] _veloSwapRouteForToken0, (address from, address to, bool stable, address factory)[] _veloSwapRouteForToken1)
functions
apiVersion
purefunction apiVersion() pure returns (string)
balanceOfWant
viewfunction balanceOfWant() view returns (uint256)
baseFeeOracle
viewfunction baseFeeOracle() view returns (address)
claimableProfitInUsdc
viewfunction claimableProfitInUsdc() view returns (uint256)
claimableRewards
viewfunction claimableRewards() view returns (uint256)
creditThreshold
viewfunction creditThreshold() view returns (uint256)
delegatedAssets
viewfunction delegatedAssets() view returns (uint256)
doHealthCheck
viewfunction doHealthCheck() view returns (bool)
emergencyExit
viewfunction emergencyExit() view returns (bool)
estimatedTotalAssets
viewfunction estimatedTotalAssets() view returns (uint256)
ethToWant
viewfunction ethToWant(uint256 _ethAmount) view returns (uint256)
factory
viewfunction factory() view returns (address)
forceHarvestTriggerOnce
viewfunction forceHarvestTriggerOnce() view returns (bool)
gauge
viewfunction gauge() view returns (address)
harvestProfitMaxInUsdc
viewfunction harvestProfitMaxInUsdc() view returns (uint256)
harvestProfitMinInUsdc
viewfunction harvestProfitMinInUsdc() view returns (uint256)
harvestTrigger
viewfunction harvestTrigger(uint256 callCostinEth) view returns (bool)
healthCheck
viewfunction healthCheck() view returns (address)
isActive
viewfunction isActive() view returns (bool)
isBaseFeeAcceptable
viewfunction isBaseFeeAcceptable() view returns (bool)
isFeeOnTransfer
viewfunction isFeeOnTransfer() view returns (bool)
isOriginal
viewfunction isOriginal() view returns (bool)
isStablePool
viewfunction isStablePool() view returns (bool)
keeper
viewfunction keeper() view returns (address)
localKeepVELO
viewfunction localKeepVELO() view returns (uint256)
maxReportDelay
viewfunction maxReportDelay() view returns (uint256)
metadataURI
viewfunction metadataURI() view returns (string)
minReportDelay
viewfunction minReportDelay() view returns (uint256)
name
viewfunction name() view returns (string)
poolToken0
viewfunction poolToken0() view returns (address)
poolToken1
viewfunction poolToken1() view returns (address)
rewards
viewfunction rewards() view returns (address)
router
viewfunction router() view returns (address)
stakedBalance
viewfunction stakedBalance() view returns (uint256)
strategist
viewfunction strategist() view returns (address)
swapRouteForToken0
viewfunction swapRouteForToken0(uint256) view returns (address from, address to, bool stable, address factory)
swapRouteForToken1
viewfunction swapRouteForToken1(uint256) view returns (address from, address to, bool stable, address factory)
tendTrigger
viewfunction tendTrigger(uint256 callCostInWei) view returns (bool)
vault
viewfunction vault() view returns (address)
velo
viewfunction velo() view returns (address)
veloRouteToToken0
viewfunction veloRouteToToken0() view returns (address[])
veloRouteToToken1
viewfunction veloRouteToToken1() view returns (address[])
veloVoter
viewfunction veloVoter() view returns (address)
want
viewfunction want() view returns (address)
cloneStrategyVelodrome
nonpayablefunction cloneStrategyVelodrome(address _vault, address _strategist, address _rewards, address _keeper, address _gauge, tuple[] _veloSwapRouteForToken0, tuple[] _veloSwapRouteForToken1) returns (address newStrategy)
harvest
nonpayablefunction harvest()
initialize
nonpayablefunction initialize(address _vault, address _strategist, address _rewards, address _keeper, address _gauge, tuple[] _veloSwapRouteForToken0, tuple[] _veloSwapRouteForToken1)
manualRewardClaim
nonpayablefunction manualRewardClaim()
migrate
nonpayablefunction migrate(address _newStrategy)
setBaseFeeOracle
nonpayablefunction setBaseFeeOracle(address _baseFeeOracle)
setCreditThreshold
nonpayablefunction setCreditThreshold(uint256 _creditThreshold)
setDoHealthCheck
nonpayablefunction setDoHealthCheck(bool _doHealthCheck)
setEmergencyExit
nonpayablefunction setEmergencyExit()
setForceHarvestTriggerOnce
nonpayablefunction setForceHarvestTriggerOnce(bool _forceHarvestTriggerOnce)
setHarvestTriggerParams
nonpayablefunction setHarvestTriggerParams(uint256 _harvestProfitMinInUsdc, uint256 _harvestProfitMaxInUsdc)
setHealthCheck
nonpayablefunction setHealthCheck(address _healthCheck)
setKeeper
nonpayablefunction setKeeper(address _keeper)
setLocalKeepVelo
nonpayablefunction setLocalKeepVelo(uint256 _keepVelo)
setMaxReportDelay
nonpayablefunction setMaxReportDelay(uint256 _delay)
setMetadataURI
nonpayablefunction setMetadataURI(string _metadataURI)
setMinReportDelay
nonpayablefunction setMinReportDelay(uint256 _delay)
setRewards
nonpayablefunction setRewards(address _rewards)
setStrategist
nonpayablefunction setStrategist(address _strategist)
setSwapRoutes
nonpayablefunction setSwapRoutes(tuple[] _newSwapRouteForToken0, tuple[] _newSwapRouteForToken1, bool _isFeeOnTransfer)
setVoter
nonpayablefunction setVoter(address _veloVoter)
sweep
nonpayablefunction sweep(address _token)
tend
nonpayablefunction tend()
withdraw
nonpayablefunction withdraw(uint256 _amountNeeded) returns (uint256 _loss)
events
Cloned
event Cloned(address indexed clone)
EmergencyExitEnabled
event EmergencyExitEnabled()
ForcedHarvestTrigger
event ForcedHarvestTrigger(bool triggerState)
Harvested
event Harvested(uint256 profit, uint256 loss, uint256 debtPayment, uint256 debtOutstanding)
SetDoHealthCheck
event SetDoHealthCheck(bool)
SetHealthCheck
event SetHealthCheck(address)
UpdatedBaseFeeOracle
event UpdatedBaseFeeOracle(address baseFeeOracle)
UpdatedCreditThreshold
event UpdatedCreditThreshold(uint256 creditThreshold)
UpdatedKeeper
event UpdatedKeeper(address newKeeper)
UpdatedMaxReportDelay
event UpdatedMaxReportDelay(uint256 delay)
UpdatedMetadataURI
event UpdatedMetadataURI(string metadataURI)
UpdatedMinReportDelay
event UpdatedMinReportDelay(uint256 delay)
UpdatedRewards
event UpdatedRewards(address rewards)
UpdatedStrategist
event UpdatedStrategist(address newStrategist)
errors
No errors.
creation bytecode
0x60806040526015805460ff1916600117905534801561001c575f80fd5b50604051615fd3380380615fd383398101604081905261003b91611058565b836100488133808061005d565b506100548383836102a3565b505050506114e8565b6006546001600160a01b0316156100bb5760405162461bcd60e51b815260206004820152601c60248201527f537472617465677920616c726561647920696e697469616c697a65640000000060448201526064015b60405180910390fd5b600280546001600160a01b0319166001600160a01b03861690811790915560408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa158015610112573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061013691906110de565b600680546001600160a01b0319166001600160a01b0392909216918217905561016190855f19610b53565b600380546001600160a01b038086166001600160a01b031992831617909255600480548584169083161781556005805485851693169290921790915562278d006008556002546040805163313ce56760e01b81529051919093169263313ce56792818101926020929091908290030181865afa1580156101e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061020791906110fe565b61021290600a61120e565b61021f90620f4240611219565b600a556002546004805460405163095ea7b360e01b81526001600160a01b03918216928101929092525f1960248301529091169063095ea7b3906044016020604051808303815f875af1158015610278573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029c9190611230565b5050505050565b600b5461010090046001600160a01b0316156103015760405162461bcd60e51b815260206004820152601360248201527f616c726561647920696e697469616c697a65640000000000000000000000000060448201526064016100b2565b600b8054610100600160a81b0319166101006001600160a01b0386811682029290921792839055600654604080516372f702f360e01b815290519184169492909204909216916372f702f3916004808201926020929091908290030181865afa158015610370573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039491906110de565b6001600160a01b0316146103ea5760405162461bcd60e51b815260206004820152601360248201527f676175676520706f6f6c206d69736d617463680000000000000000000000000060448201526064016100b2565b600654604080516322be3de160e01b815290516001600160a01b039092169182916322be3de19160048083019260209291908290030181865afa158015610433573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104579190611230565b601060146101000a81548160ff021916908315150217905550806001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d091906110de565b600e5f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610531573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061055591906110de565b600f5f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105da91906110de565b601080546001600160a01b0319166001600160a01b03929092169190911790555f5b83518110156106a557601184828151811061061957610619611249565b6020908102919091018101518254600180820185555f94855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151818601805460408601519285166001600160a81b031990911617600160a01b92151592909202919091179055606090920151600290920180549093169116179055016105fc565b505f5b82518110156107515760128382815181106106c5576106c5611249565b6020908102919091018101518254600180820185555f94855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151818601805460408601519285166001600160a81b031990911617600160a01b92151592909202919091179055606090920151600290920180549093169116179055016106a8565b50600e546001600160a01b03165f80516020615fb383398151915214610844575f80516020615fb38339815191526001600160a01b031660115f8154811061079b5761079b611249565b5f9182526020909120600390910201546001600160a01b031614158061080257506011600184516107cc919061125d565b815481106107dc576107dc611249565b5f918252602090912060016003909202010154600e546001600160a01b03908116911614155b156108445760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718103937baba329032b93937b960711b60448201526064016100b2565b600f546001600160a01b03165f80516020615fb383398151915214610936575f80516020615fb38339815191526001600160a01b031660125f8154811061088d5761088d611249565b5f9182526020909120600390910201546001600160a01b03161415806108f457506012600183516108be919061125d565b815481106108ce576108ce611249565b5f918252602090912060016003909202010154600f546001600160a01b03908116911614155b156109365760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718903937baba329032b93937b960711b60448201526064016100b2565b62278d00600855690a968163f0a57b400000600a55633b9aca0060135564174876e80060145560065460405163095ea7b360e01b81526001600160a01b0386811660048301525f1960248301529091169063095ea7b3906044016020604051808303815f875af11580156109ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d09190611230565b50600e546109fd906001600160a01b031673a062ae8a9c5e11aaa026fc2670b0d65ccc8b28585f19610b53565b600f54610a29906001600160a01b031673a062ae8a9c5e11aaa026fc2670b0d65ccc8b28585f19610b53565b60405163095ea7b360e01b815273a062ae8a9c5e11aaa026fc2670b0d65ccc8b285860048201525f1960248201525f80516020615fb38339815191529063095ea7b3906044016020604051808303815f875af1158015610a8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aaf9190611230565b5060065f9054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610aff573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b269190810190611292565b604051602001610b369190611321565b6040516020818303038152906040526016908161029c91906113e1565b801580610bcb5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015610ba5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc991906110fe565b155b610c3d5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016100b2565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152610c93918591610c9816565b505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201525f90610ce4906001600160a01b038516908490610d63565b905080515f1480610d04575080806020019051810190610d049190611230565b610c935760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016100b2565b6060610d7184845f85610d79565b949350505050565b606082471015610dda5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016100b2565b5f80866001600160a01b03168587604051610df5919061149b565b5f6040518083038185875af1925050503d805f8114610e2f576040519150601f19603f3d011682016040523d82523d5f602084013e610e34565b606091505b509092509050610e4687838387610e51565b979650505050505050565b60608315610ebf5782515f03610eb8576001600160a01b0385163b610eb85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100b2565b5081610d71565b610d718383815115610ed45781518083602001fd5b8060405162461bcd60e51b81526004016100b291906114b6565b80516001600160a01b0381168114610f04575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715610f3f57610f3f610f09565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610f6d57610f6d610f09565b604052919050565b80518015158114610f04575f80fd5b5f82601f830112610f93575f80fd5b81516001600160401b03811115610fac57610fac610f09565b610fbb60208260051b01610f45565b8082825260208201915060208360071b860101925085831115610fdc575f80fd5b602085015b8381101561104e5760808188031215610ff8575f80fd5b611000610f1d565b61100982610eee565b815261101760208301610eee565b602082015261102860408301610f75565b604082015261103960608301610eee565b60608201528352602090920191608001610fe1565b5095945050505050565b5f805f806080858703121561106b575f80fd5b61107485610eee565b935061108260208601610eee565b60408601519093506001600160401b0381111561109d575f80fd5b6110a987828801610f84565b606087015190935090506001600160401b038111156110c6575f80fd5b6110d287828801610f84565b91505092959194509250565b5f602082840312156110ee575f80fd5b6110f782610eee565b9392505050565b5f6020828403121561110e575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156111645780850481111561114857611148611115565b600184161561115657908102905b60019390931c92800261112d565b935093915050565b5f8261117a57506001611208565b8161118657505f611208565b816001811461119c57600281146111a6576111c2565b6001915050611208565b60ff8411156111b7576111b7611115565b50506001821b611208565b5060208310610133831016604e8410600b84101617156111e5575081810a611208565b6111f15f198484611129565b805f190482111561120457611204611115565b0290505b92915050565b5f6110f7838361116c565b808202811582820484141761120857611208611115565b5f60208284031215611240575f80fd5b6110f782610f75565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561120857611208611115565b5f5b8381101561128a578181015183820152602001611272565b50505f910152565b5f602082840312156112a2575f80fd5b81516001600160401b038111156112b7575f80fd5b8201601f810184136112c7575f80fd5b80516001600160401b038111156112e0576112e0610f09565b6112f3601f8201601f1916602001610f45565b818152856020838501011115611307575f80fd5b611318826020830160208601611270565b95945050505050565b7f53747261746567794165726f64726f6d65466163746f72792d0000000000000081525f8251611358816019850160208701611270565b9190910160190192915050565b600181811c9082168061137957607f821691505b60208210810361139757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610c9357805f5260205f20601f840160051c810160208510156113c25750805b601f840160051c820191505b8181101561029c575f81556001016113ce565b81516001600160401b038111156113fa576113fa610f09565b61140e816114088454611365565b8461139d565b6020601f821160018114611440575f83156114295750848201515b5f19600385901b1c1916600184901b17845561029c565b5f84815260208120601f198516915b8281101561146f578785015182556020948501946001909201910161144f565b508482101561148c57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516114ac818460208701611270565b9190910192915050565b602081525f82518060208401526114d4816040850160208701611270565b601f01601f19169190910160400192915050565b614abe806114f55f395ff3fe608060405234801561000f575f80fd5b50600436106103eb575f3560e01c806395e80c501161020b578063c6040a2c1161011f578063ed882c2b116100b4578063f887ea4011610084578063f887ea401461084d578063fa4e2df914610868578063fbfa77cf14610871578063fcf2d0ad14610884578063fe2508a61461088c575f80fd5b8063ed882c2b1461080c578063ee6497f11461081f578063efbb5cb014610832578063f017c92f1461083a575f80fd5b8063ce5494bb116100ef578063ce5494bb146107cb578063d96d862a146107de578063e81c1e79146107f1578063ec38a862146107f9575f80fd5b8063c6040a2c1461078f578063c7b9d530146107a2578063c9d100da146107b5578063ccd63705146107be575f80fd5b8063aa5480cf116101a0578063b576211411610170578063b57621141461071e578063b9fe5c4c14610726578063c12f64311461072e578063c1a3d44c14610774578063c45a01551461077c575f80fd5b8063aa5480cf146106d7578063ac00ff26146106e0578063aced1661146106f3578063b252720b14610706575f80fd5b8063a56fc91e116101db578063a56fc91e1461068c578063a6f19c841461069f578063a73bf6df146106b7578063a763cf5b146106ca575f80fd5b806395e80c501461064a5780639a9b23f0146106535780639ec5a894146106665780639f450b5a14610679575f80fd5b80634758af8a116103025780636c003a9b11610297578063780022a011610267578063780022a014610602578063826cddf6146106105780638c7c53ce146106285780638e6350e21461063c57806395326e2d14610642575f80fd5b80636c003a9b146105c75780636f392ce7146105cf578063748747e6146105dc578063750521f5146105ef575f80fd5b80635b9f0016116102d25780635b9f00161461058c5780635cf6d5ad14610594578063650d1880146105a75780636718835f146105ba575f80fd5b80634758af8a146105455780634bc2a657146105585780635641ec031461056b5780635ae29a8c14610578575f80fd5b80631fe4a686116103835780632e1a7d4d116103535780632e1a7d4d146104fc578063320afc2d1461050f57806339a172a814610522578063440368a3146105355780634641257d1461053d575f80fd5b80631fe4a686146104a757806322f3e2d4146104ba57806325829410146104d257806328b7ccf7146104f3575f80fd5b80630ada4dab116103be5780630ada4dab1461044157806311bc824514610454578063143f3dce146104675780631f1fcd511461047c575f80fd5b806301681a62146103ef57806303ee438c1461040457806306fdde0314610422578063090c49221461042a575b5f80fd5b6104026103fd366004613ec0565b61089f565b005b61040c610a3d565b6040516104199190613f04565b60405180910390f35b61040c610ac8565b61043360135481565b604051908152602001610419565b61040261044f366004613f43565b610b58565b610402610462366004613ec0565b610ba8565b61046f610c14565b6040516104199190613f5e565b60065461048f906001600160a01b031681565b6040516001600160a01b039091168152602001610419565b60035461048f906001600160a01b031681565b6104c2610cb8565b6040519015158152602001610419565b60408051808201909152600581526418171a171b60d91b602082015261040c565b61043360085481565b61043361050a366004613fa9565b610d42565b61048f61051d366004614138565b610db4565b610402610530366004613fa9565b610eb2565b610402610eef565b610402610f6b565b600f5461048f906001600160a01b031681565b610402610566366004613ec0565b611309565b6009546104c29060ff1681565b6010546104c290600160a01b900460ff1681565b610433611333565b600d5461048f906001600160a01b031681565b6104c26105b5366004613fa9565b505f90565b6001546104c29060ff1681565b6104336113a3565b6015546104c29060ff1681565b6104026105ea366004613ec0565b6113d6565b6104026105fd3660046141f5565b61143e565b6104336105b5366004613fa9565b60095461048f9061010090046001600160a01b031681565b61048f5f80516020614a6983398151915281565b5f610433565b6104c2611490565b61043360075481565b610402610661366004613fa9565b611522565b60045461048f906001600160a01b031681565b610402610687366004613ec0565b61155e565b61040261069a366004614261565b6115bc565b600b5461048f9061010090046001600160a01b031681565b600e5461048f906001600160a01b031681565b600b546104c29060ff1681565b610433600a5481565b6104026106ee366004613f43565b61189b565b60055461048f906001600160a01b031681565b60015461048f9061010090046001600160a01b031681565b6104336118eb565b61046f6119a2565b61074161073c366004613fa9565b611a30565b604080516001600160a01b0395861681529385166020850152911515918301919091529091166060820152608001610419565b610433611a7b565b60105461048f906001600160a01b031681565b61074161079d366004613fa9565b611aab565b6104026107b0366004613ec0565b611aba565b610433600c5481565b6017546104c29060ff1681565b6104026107d9366004613ec0565b611b22565b6104026107ec366004614138565b611c47565b610402611c67565b610402610807366004613ec0565b611ccd565b6104c261081a366004613fa9565b611e22565b61040261082d3660046142d7565b611faf565b610433611fc2565b610402610848366004613fa9565b611fdd565b61048f73a062ae8a9c5e11aaa026fc2670b0d65ccc8b285881565b61043360145481565b60025461048f906001600160a01b031681565b61040261201a565b61040261089a366004613fa9565b612130565b6108a761216d565b6006546001600160a01b03908116908216036108f25760405162461bcd60e51b8152602060048201526005602482015264085dd85b9d60da1b60448201526064015b60405180910390fd5b6002546001600160a01b039081169082160361093a5760405162461bcd60e51b81526020600482015260076024820152662173686172657360c81b60448201526064016108e9565b60605f5b81518110156109b657818181518110610959576109596142f7565b60200260200101516001600160a01b0316836001600160a01b0316036109ae5760405162461bcd60e51b815260206004820152600a602482015269085c1c9bdd1958dd195960b21b60448201526064016108e9565b60010161093e565b50610a396109c2612191565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015610a04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a28919061430b565b6001600160a01b03851691906121fc565b5050565b5f8054610a4990614322565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7590614322565b8015610ac05780601f10610a9757610100808354040283529160200191610ac0565b820191905f5260205f20905b815481529060010190602001808311610aa357829003601f168201915b505050505081565b606060168054610ad790614322565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0390614322565b8015610b4e5780601f10610b2557610100808354040283529160200191610b4e565b820191905f5260205f20905b815481529060010190602001808311610b3157829003601f168201915b5050505050905090565b610b6061225f565b600b805460ff19168215159081179091556040519081527f6ad28df1b554fa6cacd46ae82fa811748d53798feeb437ddf234bf3083953319906020015b60405180910390a150565b610bb061225f565b6040516001600160a01b03821681527fc8db9c35f716b87af1fbb83f03c78646061931269301fd7ba6dcf189b4cdc2fc9060200160405180910390a1600180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60605f6011805480602002602001604051908101604052809291908181526020015f905b82821015610ca3575f848152602090819020604080516080810182526003860290920180546001600160a01b03908116845260018083015480831686880152600160a01b900460ff161515938501939093526002909101541660608301529083529092019101610c38565b505050509050610cb2816122fd565b91505090565b6002546040516339ebf82360e01b81523060048201525f9182916001600160a01b03909116906339ebf8239060240161012060405180830381865afa158015610d03573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d279190614354565b604001511180610d3d57505f610d3b611fc2565b115b905090565b6002545f906001600160a01b03163314610d875760405162461bcd60e51b8152602060048201526006602482015265085d985d5b1d60d21b60448201526064016108e9565b5f610d918361240e565b600654909350909150610dae906001600160a01b031633836121fc565b50919050565b6015545f9060ff16610dc4575f80fd5b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81523060601b601482018190526e5af43d82803e903d91602b57fd5bf360881b6028830152906037815ff0604051636cb6c31560e11b81529093506001600160a01b038416915063d96d862a90610e46908c908c908c908c908c908c908c9060040161443c565b5f604051808303815f87803b158015610e5d575f80fd5b505af1158015610e6f573d5f803e3d5ffd5b50506040516001600160a01b03851692507f783540fb4221a3238720dc7038937d0d79982bcf895274aa6ad179f82cf0d53c91505f90a250979650505050505050565b610eba6124d8565b60078190556040518181527fbb2c369a0355a34b02ab5fce0643150c87e1c8dfe7c918d465591879f57948b190602001610b9d565b610ef76124f4565b6002546040805163bf3759b560e01b81529051610f69926001600160a01b03169163bf3759b59160048083019260209291908290030181865afa158015610f40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f64919061430b565b612643565b565b610f736124f4565b5f805f60025f9054906101000a90046001600160a01b03166001600160a01b031663bf3759b56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fea919061430b565b6009549091505f9060ff1615611045575f6110036126c3565b90508281101561101e5761101781846144b3565b9350611033565b828111156110335761103083826144b3565b94505b61103d84846144b3565b915050611056565b61104e8261273b565b919550935090505b600b805460ff191690556040515f81527f6ad28df1b554fa6cacd46ae82fa811748d53798feeb437ddf234bf30839533199060200160405180910390a16002546040516339ebf82360e01b81523060048201525f916001600160a01b0316906339ebf8239060240161012060405180830381865afa1580156110da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110fe9190614354565b60c001516002546040516328766ebf60e21b81526004810188905260248101879052604481018590529192506001600160a01b03169063a1d9bafc906064016020604051808303815f875af1158015611159573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117d919061430b565b925061118883612643565b60015460ff1680156111a9575060015461010090046001600160a01b031615155b156112795760015460405163c70fa00b60e01b815260048101879052602481018690526044810184905260648101859052608481018390526101009091046001600160a01b03169063c70fa00b9060a401602060405180830381865afa158015611215573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123991906144c6565b6112745760405162461bcd60e51b815260206004820152600c60248201526b216865616c7468636865636b60a01b60448201526064016108e9565b6112ba565b604051600181527ff769f6bf659bbbdabf212d830720ce893eedc57f25ebb8e44edf5b300618a35b9060200160405180910390a16001805460ff1916811790555b6040805186815260208101869052908101839052606081018490527f4c0f499ffe6befa0ca7c826b0916cf87bea98de658013e76938489368d60d5099060800160405180910390a15050505050565b61131161216d565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546040516370a0823160e01b81523060048201525f9161010090046001600160a01b0316906370a08231906024015b602060405180830381865afa15801561137f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3d919061430b565b600b546040516246613160e11b81523060048201525f9161010090046001600160a01b031690628cc26290602401611364565b6113de6124d8565b6001600160a01b0381166113f0575f80fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f202ddb4a2e345f6323ed90f8fc8559d770a7abbbeee84dde8aca3351fe715490602001610b9d565b6114466124d8565b5f611452828483614525565b507f300e67d5a415b6d015a471d9c7b95dd58f3e8290af965e84e0f845de2996dda682826040516114849291906145de565b60405180910390a15050565b6009545f9061010090046001600160a01b03166114ad5750600190565b600960019054906101000a90046001600160a01b03166001600160a01b03166334a9e75c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114fe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3d91906144c6565b61152a61216d565b612710811115611538575f80fd5b5f811180156115505750600d546001600160a01b0316155b15611559575f80fd5b600c55565b61156661225f565b60098054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f711be97287cb9ec921887b9be36e148e1a27c6b158547b22b9704ffc54447a0f90602001610b9d565b6115c461225f565b6115cf60115f613e51565b6115da60125f613e51565b6017805460ff19168215151790555f5b8351811015611693576011848281518110611607576116076142f7565b6020908102919091018101518254600180820185555f94855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151818601805460408601519285166001600160a81b031990911617600160a01b92151592909202919091179055606090920151600290920180549093169116179055016115ea565b505f5b825181101561173f5760128382815181106116b3576116b36142f7565b6020908102919091018101518254600180820185555f94855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151818601805460408601519285166001600160a81b031990911617600160a01b9215159290920291909117905560609092015160029092018054909316911617905501611696565b50600e546001600160a01b03165f80516020614a69833981519152148015906117a9575060116001845161177391906144b3565b81548110611783576117836142f7565b5f918252602090912060016003909202010154600e546001600160a01b03908116911614155b156117eb5760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718103937baba329032b93937b960711b60448201526064016108e9565b600f546001600160a01b03165f80516020614a6983398151915214801590611854575060126001835161181e91906144b3565b8154811061182e5761182e6142f7565b5f918252602090912060016003909202010154600f546001600160a01b03908116911614155b156118965760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718903937baba329032b93937b960711b60448201526064016108e9565b505050565b6118a361225f565b60405181151581527ff769f6bf659bbbdabf212d830720ce893eedc57f25ebb8e44edf5b300618a35b9060200160405180910390a16001805460ff1916911515919091179055565b6040516378a051ad60e11b8152670de0b6b3a764000060048201525f80516020614a6983398151915260248201525f908190738134a2fdc127549480865fb8e5a9e8a8a95a54c59063f140a35a90604401602060405180830381865afa158015611957573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197b919061430b565b9050670de0b6b3a764000061198e6113a3565b611998908361460c565b610cb29190614623565b60605f6012805480602002602001604051908101604052809291908181526020015f9082821015610ca3575f848152602090819020604080516080810182526003860290920180546001600160a01b03908116845260018083015480831686880152600160a01b900460ff161515938501939093526002909101541660608301529083529092019101610c38565b60128181548110611a3f575f80fd5b5f9182526020909120600390910201805460018201546002909201546001600160a01b03918216935081831692600160a01b900460ff16911684565b6006546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401611364565b60118181548110611a3f575f80fd5b611ac26124d8565b6001600160a01b038116611ad4575f80fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f352ececae6d7d1e6d26bcf2c549dfd55be1637e9b22dc0cf3b71ddb36097a6b490602001610b9d565b6002546001600160a01b03163314611b38575f80fd5b6002546040805163fbfa77cf60e01b815290516001600160a01b039283169284169163fbfa77cf9160048083019260209291908290030181865afa158015611b82573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ba69190614642565b6001600160a01b031614611bb8575f80fd5b611bc181612e9c565b6006546040516370a0823160e01b8152306004820152611c449183916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611c0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c31919061430b565b6006546001600160a01b031691906121fc565b50565b611c5387878787612f97565b611c5e8383836131d8565b50505050505050565b611c6f61225f565b600b54604051630c00007b60e41b81523060048201526101009091046001600160a01b03169063c00007b0906024015f604051808303815f87803b158015611cb5575f80fd5b505af1158015611cc7573d5f803e3d5ffd5b50505050565b611cd5613a74565b6001600160a01b038116611ce7575f80fd5b6002546004805460405163095ea7b360e01b81526001600160a01b03918216928101929092525f60248301529091169063095ea7b3906044016020604051808303815f875af1158015611d3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d6091906144c6565b50600480546001600160a01b0319166001600160a01b03838116918217835560025460405163095ea7b360e01b8152938401929092525f196024840152169063095ea7b3906044016020604051808303815f875af1158015611dc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611de891906144c6565b506040516001600160a01b03821681527fafbb66abf8f3b719799940473a4052a3717cdd8e40fb6c8a3faadab316b1a06990602001610b9d565b5f611e2b610cb8565b611e3657505f919050565b5f611e3f6118eb565b9050601454811115611e545750600192915050565b611e5c611490565b611e6857505f92915050565b600b5460ff1615611e7c5750600192915050565b601354811115611e8f5750600192915050565b6002546040516339ebf82360e01b81523060048201525f916001600160a01b0316906339ebf8239060240161012060405180830381865afa158015611ed6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611efa9190614354565b90506008548160a0015142611f0f91906144b3565b1115611f1f575060019392505050565b600a5460025f9054906101000a90046001600160a01b03166001600160a01b031663112c1f9b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f96919061430b565b1115611fa6575060019392505050565b505f9392505050565b611fb761225f565b601391909155601455565b5f611fcb611333565b611fd3611a7b565b610d3d919061465d565b611fe56124d8565b60088190556040518181527f5430e11864ad7aa9775b07d12657fe52df9aa2ba734355bd8ef8747be2c800c590602001610b9d565b612022613aac565b6009805460ff191660011790556002546040516339ebf82360e01b81523060048201526001600160a01b03909116906339ebf8239060240161012060405180830381865afa158015612076573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209a9190614354565b60400151156121065760025f9054906101000a90046001600160a01b03166001600160a01b031663a0e4af9a6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156120ef575f80fd5b505af1158015612101573d5f803e3d5ffd5b505050505b6040517f97e963041e952738788b9d4871d854d282065b8f90a464928d6528f2e9a4fd0b905f90a1565b61213861225f565b600a8190556040518181527fe5ef7832c564a10cbe7b4f1e01ac33a406cb63fcf430a97a9af8616d150af5f390602001610b9d565b612175612191565b6001600160a01b0316336001600160a01b031614610f69575f80fd5b60025460408051635aa6e67560e01b815290515f926001600160a01b031691635aa6e6759160048083019260209291908290030181865afa1580156121d8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3d9190614642565b6040516001600160a01b03831660248201526044810182905261189690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613ac8565b60025f9054906101000a90046001600160a01b03166001600160a01b03166388a8d6026040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122d39190614642565b6001600160a01b0316336001600160a01b031614806122f55750612175612191565b610f69575f80fd5b60605f8251600161230e919061465d565b6001600160401b0381111561232557612325613fc0565b60405190808252806020026020018201604052801561234e578160200160208202803683370190505b509050825f81518110612363576123636142f7565b60200260200101515f0151815f81518110612380576123806142f7565b60200260200101906001600160a01b031690816001600160a01b0316815250505f5b8351811015612407578381815181106123bd576123bd6142f7565b602002602001015160200151828260016123d7919061465d565b815181106123e7576123e76142f7565b6001600160a01b03909216602092830291909101909101526001016123a2565b5092915050565b5f805f612419611a7b565b9050808411156124c8575f61242c611333565b905080156124a557600b548286039061010090046001600160a01b0316632e1a7d4d6124588484613b9b565b6040518263ffffffff1660e01b815260040161247691815260200190565b5f604051808303815f87803b15801561248d575f80fd5b505af115801561249f573d5f803e3d5ffd5b50505050505b5f6124ae611a7b565b90506124ba8682613b9b565b9450848603935050506124d2565b5091925f92509050565b50915091565b6003546001600160a01b03163314806122f55750612175612191565b6005546001600160a01b031633148061251757506003546001600160a01b031633145b8061253a5750612525612191565b6001600160a01b0316336001600160a01b0316145b806125c9575060025f9054906101000a90046001600160a01b03166001600160a01b031663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa158015612590573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125b49190614642565b6001600160a01b0316336001600160a01b0316145b806122f5575060025f9054906101000a90046001600160a01b03166001600160a01b03166388a8d6026040518163ffffffff1660e01b8152600401602060405180830381865afa15801561261f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121759190614642565b60095460ff16156126515750565b5f61265a611a7b565b90508015610a3957600b5460405163b6b55f2560e01b8152600481018390526101009091046001600160a01b03169063b6b55f25906024015f604051808303815f87803b1580156126a9575f80fd5b505af11580156126bb573d5f803e3d5ffd5b505050505050565b5f806126cd611333565b9050801561273357600b54604051632e1a7d4d60e01b8152600481018390526101009091046001600160a01b031690632e1a7d4d906024015f604051808303815f87803b15801561271c575f80fd5b505af115801561272e573d5f803e3d5ffd5b505050505b610cb2611a7b565b600b54604051630c00007b60e41b81523060048201525f918291829161010090046001600160a01b03169063c00007b0906024015f604051808303815f87803b158015612786575f80fd5b505af1158015612798573d5f803e3d5ffd5b50506040516370a0823160e01b81523060048201525f92505f80516020614a6983398151915291506370a0823190602401602060405180830381865afa1580156127e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612808919061430b565b600c54600d54919250906001600160a01b0316811580159061283257506001600160a01b03811615155b156128ca5761271082840204801561285c5761285c5f80516020614a6983398151915283836121fc565b6040516370a0823160e01b81523060048201525f80516020614a69833981519152906370a0823190602401602060405180830381865afa1580156128a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c6919061430b565b9350505b678ac7230489e80000831115612dba575f6128e6600285614623565b90505f6128f382866144b3565b601054909150600160a01b900460ff16156129ce57600e54600f5460105460405163f5ba53c760e01b81526001600160a01b03938416600482015291831660248301529190911660448201525f9073a062ae8a9c5e11aaa026fc2670b0d65ccc8b28589063f5ba53c790606401602060405180830381865afa15801561297b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061299f919061430b565b9050670de0b6b3a76400006129b4828861460c565b6129be9190614623565b91506129ca82876144b3565b9250505b600e546001600160a01b03165f80516020614a6983398151915214612aee5760175460ff1615612a6a57604051634466c10f60e11b815273a062ae8a9c5e11aaa026fc2670b0d65ccc8b2858906388cd821e90612a389085905f9060119030904290600401614670565b5f604051808303815f87803b158015612a4f575f80fd5b505af1158015612a61573d5f803e3d5ffd5b50505050612aee565b60405163cac88ea960e01b815273a062ae8a9c5e11aaa026fc2670b0d65ccc8b28589063cac88ea990612aaa9085905f9060119030904290600401614670565b5f604051808303815f875af1158015612ac5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612aec9190810190614717565b505b600f546001600160a01b03165f80516020614a6983398151915214612c0e5760175460ff1615612b8a57604051634466c10f60e11b815273a062ae8a9c5e11aaa026fc2670b0d65ccc8b2858906388cd821e90612b589084905f9060129030904290600401614670565b5f604051808303815f87803b158015612b6f575f80fd5b505af1158015612b81573d5f803e3d5ffd5b50505050612c0e565b60405163cac88ea960e01b815273a062ae8a9c5e11aaa026fc2670b0d65ccc8b28589063cac88ea990612bca9084905f9060129030904290600401614670565b5f604051808303815f875af1158015612be5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c0c9190810190614717565b505b600e546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015612c54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c78919061430b565b600f546040516370a0823160e01b81523060048201529192505f916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612cc3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ce7919061430b565b600e54600f54601054604051635a47ddc360e01b81526001600160a01b039384166004820152929091166024830152600160a01b900460ff161515604482015260648101849052608481018290525f60a4820181905260c48201523060e48201524261010482015290915073a062ae8a9c5e11aaa026fc2670b0d65ccc8b285890635a47ddc390610124016060604051808303815f875af1158015612d8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612db291906147a7565b505050505050505b5f612dc3611fc2565b6002546040516339ebf82360e01b81523060048201529192505f916001600160a01b03909116906339ebf8239060240161012060405180830381865afa158015612e0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e339190614354565b60c001519050808210612e8a5780820397508895505f612e53878a61465d565b90505f612e5f8261240e565b50905080821115612e835780881115612e7d578097505f9950612e83565b87810399505b5050612e90565b81810396505b50505050509193909250565b5f612ea5611333565b90508015612f0b57600b54604051632e1a7d4d60e01b8152600481018390526101009091046001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015612ef4575f80fd5b505af1158015612f06573d5f803e3d5ffd5b505050505b6040516370a0823160e01b81523060048201525f905f80516020614a69833981519152906370a0823190602401602060405180830381865afa158015612f53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f77919061430b565b90508015611896576118965f80516020614a6983398151915284836121fc565b6006546001600160a01b031615612ff05760405162461bcd60e51b815260206004820152601c60248201527f537472617465677920616c726561647920696e697469616c697a65640000000060448201526064016108e9565b600280546001600160a01b0319166001600160a01b03861690811790915560408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa158015613047573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061306b9190614642565b600680546001600160a01b0319166001600160a01b0392909216918217905561309690855f19613bb4565b600380546001600160a01b038086166001600160a01b031992831617909255600480548584169083161781556005805485851693169290921790915562278d006008556002546040805163313ce56760e01b81529051919093169263313ce56792818101926020929091908290030181865afa158015613118573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061313c919061430b565b61314790600a6148b5565b61315490620f424061460c565b600a556002546004805460405163095ea7b360e01b81526001600160a01b03918216928101929092525f1960248301529091169063095ea7b3906044016020604051808303815f875af11580156131ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131d191906144c6565b5050505050565b600b5461010090046001600160a01b03161561322c5760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016108e9565b600b8054610100600160a81b0319166101006001600160a01b0386811682029290921792839055600654604080516372f702f360e01b815290519184169492909204909216916372f702f3916004808201926020929091908290030181865afa15801561329b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132bf9190614642565b6001600160a01b03161461330b5760405162461bcd60e51b81526020600482015260136024820152720cec2eaceca40e0deded840dad2e6dac2e8c6d606b1b60448201526064016108e9565b600654604080516322be3de160e01b815290516001600160a01b039092169182916322be3de19160048083019260209291908290030181865afa158015613354573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061337891906144c6565b601060146101000a81548160ff021916908315150217905550806001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133f19190614642565b600e5f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613452573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134769190614642565b600f5f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134fb9190614642565b601080546001600160a01b0319166001600160a01b03929092169190911790555f5b83518110156135c657601184828151811061353a5761353a6142f7565b6020908102919091018101518254600180820185555f94855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151818601805460408601519285166001600160a81b031990911617600160a01b921515929092029190911790556060909201516002909201805490931691161790550161351d565b505f5b82518110156136725760128382815181106135e6576135e66142f7565b6020908102919091018101518254600180820185555f94855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151818601805460408601519285166001600160a81b031990911617600160a01b92151592909202919091179055606090920151600290920180549093169116179055016135c9565b50600e546001600160a01b03165f80516020614a6983398151915214613765575f80516020614a698339815191526001600160a01b031660115f815481106136bc576136bc6142f7565b5f9182526020909120600390910201546001600160a01b031614158061372357506011600184516136ed91906144b3565b815481106136fd576136fd6142f7565b5f918252602090912060016003909202010154600e546001600160a01b03908116911614155b156137655760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718103937baba329032b93937b960711b60448201526064016108e9565b600f546001600160a01b03165f80516020614a6983398151915214613857575f80516020614a698339815191526001600160a01b031660125f815481106137ae576137ae6142f7565b5f9182526020909120600390910201546001600160a01b031614158061381557506012600183516137df91906144b3565b815481106137ef576137ef6142f7565b5f918252602090912060016003909202010154600f546001600160a01b03908116911614155b156138575760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718903937baba329032b93937b960711b60448201526064016108e9565b62278d00600855690a968163f0a57b400000600a55633b9aca0060135564174876e80060145560065460405163095ea7b360e01b81526001600160a01b0386811660048301525f1960248301529091169063095ea7b3906044016020604051808303815f875af11580156138cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138f191906144c6565b50600e5461391e906001600160a01b031673a062ae8a9c5e11aaa026fc2670b0d65ccc8b28585f19613bb4565b600f5461394a906001600160a01b031673a062ae8a9c5e11aaa026fc2670b0d65ccc8b28585f19613bb4565b60405163095ea7b360e01b815273a062ae8a9c5e11aaa026fc2670b0d65ccc8b285860048201525f1960248201525f80516020614a698339815191529063095ea7b3906044016020604051808303815f875af11580156139ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139d091906144c6565b5060065f9054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015613a20573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613a4791908101906148c0565b604051602001613a57919061494f565b604051602081830303815290604052601690816131d19190614993565b613a7c612191565b6001600160a01b0316336001600160a01b031614806122f557506003546001600160a01b03163314610f69575f80fd5b6003546001600160a01b031633148061253a5750612525612191565b5f613b1c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613cc79092919063ffffffff16565b905080515f1480613b3c575080806020019051810190613b3c91906144c6565b6118965760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016108e9565b5f818310613ba95781613bab565b825b90505b92915050565b801580613c2c5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613c06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c2a919061430b565b155b613c975760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016108e9565b6040516001600160a01b03831660248201526044810182905261189690849063095ea7b360e01b90606401612228565b6060613cd584845f85613cdd565b949350505050565b606082471015613d3e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016108e9565b5f80866001600160a01b03168587604051613d599190614a4d565b5f6040518083038185875af1925050503d805f8114613d93576040519150601f19603f3d011682016040523d82523d5f602084013e613d98565b606091505b5091509150613da987838387613db4565b979650505050505050565b60608315613e225782515f03613e1b576001600160a01b0385163b613e1b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108e9565b5081613cd5565b613cd58383815115613e375781518083602001fd5b8060405162461bcd60e51b81526004016108e99190613f04565b5080545f8255600302905f5260205f2090810190611c4491905b80821115613ea85780546001600160a01b031990811682556001820180546001600160a81b03191690556002820180549091169055600301613e6b565b5090565b6001600160a01b0381168114611c44575f80fd5b5f60208284031215613ed0575f80fd5b8135613edb81613eac565b9392505050565b5f5b83811015613efc578181015183820152602001613ee4565b50505f910152565b602081525f8251806020840152613f22816040850160208701613ee2565b601f01601f19169190910160400192915050565b8015158114611c44575f80fd5b5f60208284031215613f53575f80fd5b8135613edb81613f36565b602080825282518282018190525f918401906040840190835b81811015613f9e5783516001600160a01b0316835260209384019390920191600101613f77565b509095945050505050565b5f60208284031215613fb9575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715613ff657613ff6613fc0565b60405290565b60405161012081016001600160401b0381118282101715613ff657613ff6613fc0565b604051601f8201601f191681016001600160401b038111828210171561404757614047613fc0565b604052919050565b5f6001600160401b0382111561406757614067613fc0565b5060051b60200190565b5f82601f830112614080575f80fd5b813561409361408e8261404f565b61401f565b8082825260208201915060208360071b8601019250858311156140b4575f80fd5b602085015b8381101561412e57608081880312156140d0575f80fd5b6140d8613fd4565b81356140e381613eac565b815260208201356140f381613eac565b6020820152604082013561410681613f36565b6040820152606082013561411981613eac565b606082015283526020909201916080016140b9565b5095945050505050565b5f805f805f805f60e0888a03121561414e575f80fd5b873561415981613eac565b9650602088013561416981613eac565b9550604088013561417981613eac565b9450606088013561418981613eac565b9350608088013561419981613eac565b925060a08801356001600160401b038111156141b3575f80fd5b6141bf8a828b01614071565b92505060c08801356001600160401b038111156141da575f80fd5b6141e68a828b01614071565b91505092959891949750929550565b5f8060208385031215614206575f80fd5b82356001600160401b0381111561421b575f80fd5b8301601f8101851361422b575f80fd5b80356001600160401b03811115614240575f80fd5b856020828401011115614251575f80fd5b6020919091019590945092505050565b5f805f60608486031215614273575f80fd5b83356001600160401b03811115614288575f80fd5b61429486828701614071565b93505060208401356001600160401b038111156142af575f80fd5b6142bb86828701614071565b92505060408401356142cc81613f36565b809150509250925092565b5f80604083850312156142e8575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561431b575f80fd5b5051919050565b600181811c9082168061433657607f821691505b602082108103610dae57634e487b7160e01b5f52602260045260245ffd5b5f610120828403128015614366575f80fd5b5061436f613ffc565b825181526020808401519082015260408084015190820152606080840151908201526080808401519082015260a0808401519082015260c0808401519082015260e08084015190820152610100928301519281019290925250919050565b5f8151808452602084019350602083015f5b8281101561443257815180516001600160a01b0390811688526020808301518216818a01526040808401511515908a015260609283015190911691880191909152608090960195909101906001016143df565b5093949350505050565b6001600160a01b0388811682528781166020830152868116604083015285811660608301528416608082015260e060a082018190525f9061447f908301856143cd565b82810360c084015261449181856143cd565b9a9950505050505050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115613bae57613bae61449f565b5f602082840312156144d6575f80fd5b8151613edb81613f36565b601f82111561189657805f5260205f20601f840160051c810160208510156145065750805b601f840160051c820191505b818110156131d1575f8155600101614512565b6001600160401b0383111561453c5761453c613fc0565b6145508361454a8354614322565b836144e1565b5f601f841160018114614581575f851561456a5750838201355b5f19600387901b1c1916600186901b1783556131d1565b5f83815260208120601f198716915b828110156145b05786850135825560209485019460019092019101614590565b50868210156145cc575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b8082028115828204841417613bae57613bae61449f565b5f8261463d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215614652575f80fd5b8151613edb81613eac565b80820180821115613bae57613bae61449f565b5f60a0820187835286602084015260a0604084015280865480835260c085019150875f5260205f2092505f5b818110156146ed5783546001600160a01b039081168452600185810154808316602087015260a01c60ff1615156040860152600286015490911660608501526003909401936080909301920161469c565b50506001600160a01b038616606085015291506147079050565b8260808301529695505050505050565b5f60208284031215614727575f80fd5b81516001600160401b0381111561473c575f80fd5b8201601f8101841361474c575f80fd5b805161475a61408e8261404f565b8082825260208201915060208360051b85010192508683111561477b575f80fd5b6020840193505b8284101561479d578351825260209384019390910190614782565b9695505050505050565b5f805f606084860312156147b9575f80fd5b5050815160208301516040909301519094929350919050565b6001815b600184111561480d578085048111156147f1576147f161449f565b60018416156147ff57908102905b60019390931c9280026147d6565b935093915050565b5f8261482357506001613bae565b8161482f57505f613bae565b8160018114614845576002811461484f5761486b565b6001915050613bae565b60ff8411156148605761486061449f565b50506001821b613bae565b5060208310610133831016604e8410600b841016171561488e575081810a613bae565b61489a5f1984846147d2565b805f19048211156148ad576148ad61449f565b029392505050565b5f613bab8383614815565b5f602082840312156148d0575f80fd5b81516001600160401b038111156148e5575f80fd5b8201601f810184136148f5575f80fd5b80516001600160401b0381111561490e5761490e613fc0565b614921601f8201601f191660200161401f565b818152856020838501011115614935575f80fd5b614946826020830160208601613ee2565b95945050505050565b7f53747261746567794165726f64726f6d65466163746f72792d0000000000000081525f8251614986816019850160208701613ee2565b9190910160190192915050565b81516001600160401b038111156149ac576149ac613fc0565b6149c0816149ba8454614322565b846144e1565b6020601f8211600181146149f2575f83156149db5750848201515b5f19600385901b1c1916600184901b1784556131d1565b5f84815260208120601f198516915b82811015614a215787850151825560209485019460019092019101614a01565b5084821015614a3e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8251614a5e818460208701613ee2565b919091019291505056fe0000000000000000000000009560e827af36c94d2ac33a39bce1fe78631088dba264697066735822122098857805f78ecc3e2b9c3339766db9b0e54d4e7fbd90a4228279ae798ddaa4b164736f6c634300081a00330000000000000000000000009560e827af36c94d2ac33a39bce1fe78631088db000000000000000000000000de8747070f81a5217bd812d3833f725f588e3dec00000000000000000000000084195de69b8b131ddaa4be4f75633fcd7f430b7c0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000010000000000000000000000009560e827af36c94d2ac33a39bce1fe78631088db0000000000000000000000007f5c764cbc14f9669b88837ca1490cca17c316070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1046053aa5682b4f9a81b5481394da16be5ff5a0000000000000000000000000000000000000000000000000000000000000000