0 txs
0 calls
constructor
constructor(address pool_, address crvPool_, uint8 curvePoolType_, address depositZap_, address crvToken_, uint256 crvSlippage_, address masterOracle_, address swapper_, uint256 collateralIdx_, uint256 convexPoolId_, string name_)
functions
ADDRESS_PROVIDER
viewfunction ADDRESS_PROVIDER() view returns (address)
BOOSTER
viewfunction BOOSTER() view returns (address)
collateral
viewfunction collateral() view returns (address)
collateralIdx
viewfunction collateralIdx() view returns (uint256)
collateralToken
viewfunction collateralToken() view returns (address)
convexPoolId
viewfunction convexPoolId() view returns (uint256)
CRV_MINTER
viewfunction CRV_MINTER() view returns (address)
CRV
viewfunction CRV() view returns (address)
crvGauge
viewfunction crvGauge() view returns (address)
crvLp
viewfunction crvLp() view returns (address)
crvPool
viewfunction crvPool() view returns (address)
crvSlippage
viewfunction crvSlippage() view returns (uint256)
curvePoolType
viewfunction curvePoolType() view returns (uint8)
CVX
viewfunction CVX() view returns (address)
cvxCrvRewards
viewfunction cvxCrvRewards() view returns (address)
feeCollector
viewfunction feeCollector() view returns (address)
GAUGE_FACTORY
viewfunction GAUGE_FACTORY() view returns (address)
getRewardTokens
viewfunction getRewardTokens() view returns (address[])
governor
viewfunction governor() view returns (address)
isReservedToken
viewfunction isReservedToken(address token_) view returns (bool)
keepers
viewfunction keepers() view returns (address[])
lpBalanceHere
viewfunction lpBalanceHere() view returns (uint256 _lpHere)
lpBalanceHereAndStaked
viewfunction lpBalanceHereAndStaked() view returns (uint256 _lpHereAndStaked)
lpBalanceStaked
viewfunction lpBalanceStaked() view returns (uint256 _total)
masterOracle
viewfunction masterOracle() view returns (address)
NAME
viewfunction NAME() view returns (string)
pool
viewfunction pool() view returns (address)
receiptToken
viewfunction receiptToken() view returns (address)
rewardTokens
viewfunction rewardTokens(uint256) view returns (address)
swapper
viewfunction swapper() view returns (address)
token
viewfunction token() view returns (address)
tvl
viewfunction tvl() view returns (uint256)
VERSION
viewfunction VERSION() view returns (string)
addKeeper
nonpayablefunction addKeeper(address _keeperAddress)
approveToken
nonpayablefunction approveToken(uint256 _approvalAmount)
claimAndSwapRewards
nonpayablefunction claimAndSwapRewards(uint256 _minAmountOut) returns (uint256 _amountOut)
migrate
nonpayablefunction migrate(address _newStrategy)
rebalance
nonpayablefunction rebalance() returns (uint256 _profit, uint256 _loss, uint256 _payback)
refetchRewardTokens
nonpayablefunction refetchRewardTokens()
removeKeeper
nonpayablefunction removeKeeper(address _keeperAddress)
swapToCollateral
nonpayablefunction swapToCollateral(address _tokenIn, uint256 _minAmountOut) returns (uint256 _amountOut)
sweep
nonpayablefunction sweep(address _fromToken)
updateCrvSlippage
nonpayablefunction updateCrvSlippage(uint256 newCrvSlippage_)
updateFeeCollector
nonpayablefunction updateFeeCollector(address _feeCollector)
updateMasterOracle
nonpayablefunction updateMasterOracle(address newMasterOracle_)
updateSwapper
nonpayablefunction updateSwapper(address _swapper)
withdraw
nonpayablefunction withdraw(uint256 _amount)
events
CrvSlippageUpdated
event CrvSlippageUpdated(uint256 oldCrvSlippage, uint256 newCrvSlippage)
MasterOracleUpdated
event MasterOracleUpdated(address oldMasterOracle, address newMasterOracle)
UpdatedFeeCollector
event UpdatedFeeCollector(address indexed previousFeeCollector, address indexed newFeeCollector)
UpdatedSwapper
event UpdatedSwapper(address indexed oldSwapper, address indexed newSwapper)
errors
No errors.
creation bytecode
0x6102006040523480156200001257600080fd5b50604051620074b5380380620074b5833981016040819052620000359162000fcb565b8a8a8a8a8a8a8a8a8a89898360006001600160a01b0383166200009f5760405162461bcd60e51b815260206004820152601460248201527f706f6f6c2d616464726573732d69732d7a65726f00000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b038216620000f75760405162461bcd60e51b815260206004820152601760248201527f737761707065722d616464726573732d69732d7a65726f000000000000000000604482015260640162000096565b600280546001600160a01b0319166001600160a01b0384811691909117909155831660a081905260408051637e062a3560e11b8152905163fc0c546a91600480820192602092909190829003018186803b1580156200015557600080fd5b505afa1580156200016a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001909190620010b5565b6001600160a01b03908116608052600080546001600160a01b031916918316919091179055620001d7620001c13390565b60036200083760201b620024941790919060201c565b620002195760405162461bcd60e51b81526020600482015260116024820152701859190b5ad9595c195c8b59985a5b1959607a1b604482015260640162000096565b5050506001600160a01b038616620002685760405162461bcd60e51b815260206004820152601160248201527018dc9d8b5d1bdad95b8b5a5ccb5b9d5b1b607a1b604482015260640162000096565b6001600160a01b038916620002af5760405162461bcd60e51b815260206004820152600c60248201526b1c1bdbdb0b5a5ccb5b9d5b1b60a21b604482015260640162000096565b60405163124fd3dd60e21b815260076004820152600090735ffe7fb82894076ecb99a30d6a32e969e6e35e989063493f4f749060240160206040518083038186803b158015620002fe57600080fd5b505afa15801562000313573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003399190620010b5565b604051633795104960e01b81526001600160a01b038c8116600483015291925060009183169063379510499060240160206040518083038186803b1580156200038157600080fd5b505afa15801562000396573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bc9190620010b5565b90506001600160a01b038116620004035760405162461bcd60e51b815260206004820152600a6024820152691b1c0b5a5ccb5b9d5b1b60b21b604482015260640162000096565b60405163014e018160e31b81526001600160a01b038c81166004830152831690630a700c089060240160206040518083038186803b1580156200044557600080fd5b505afa1580156200045a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004809190620010dc565b8410620004c55760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590b58dbdb1b185d195c985b60721b604482015260640162000096565b60405163a77576ef60e01b81526001600160a01b038c8116600483015262000568919084169063a77576ef906024016101006040518083038186803b1580156200050e57600080fd5b505afa15801562000523573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005499190620010f6565b85600881106200055d576200055d62001187565b602002015162000857565b60405163daf297b960e01b81526001600160a01b038c811660048301526000919084169063daf297b99060240160206040518083038186803b158015620005ae57600080fd5b505afa158015620005c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005e99190620010b5565b90506001600160a01b038116620006335760405162461bcd60e51b815260206004820152600d60248201526c19d85d59d94b5a5ccb5b9d5b1b609a1b604482015260640162000096565b6001600160a01b03808a1660c0528c81166101005282811660e0819052908216610120526006899055600080546001600160a01b03191690911790556101408590528a60088111156200068a576200068a6200119d565b610180816008811115620006a257620006a26200119d565b9052506001600160a01b038c8116838216146101a0528a811661016052600780546001600160a01b0319169189169190911790558351620006eb90600590602087019062000db7565b5050604051631526fe2760e01b8152600481018f905260009c508c9b5073f403c135812408bfbe8713b5a23a04b3d48aae319a50631526fe2799506024019750620007399650505050505050565b60c06040518083038186803b1580156200075257600080fd5b505afa15801562000767573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200078d9190620011b3565b505093505050915060e0516001600160a01b0316826001600160a01b031614620007ef5760405162461bcd60e51b815260206004820152601260248201527134b731b7b93932b1ba16b63816ba37b5b2b760711b604482015260640162000096565b6001600160a01b0381166101c0526101e08490526200080d620008bf565b8051620008239160089160209091019062000e46565b5050505050505050505050505050620012d7565b60006200084e836001600160a01b03841662000b5e565b90505b92915050565b6080516001600160a01b0316816001600160a01b031614620008bc5760405162461bcd60e51b815260206004820152601360248201527f636f6c6c61746572616c2d6d69736d6174636800000000000000000000000000604482015260640162000096565b50565b60606000806101c0516001600160a01b031663d55a23f46040518163ffffffff1660e01b815260040160206040518083038186803b1580156200090157600080fd5b505afa15801562000916573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200093c9190620010dc565b905060005b81811015620009c7576000620009578262000bb0565b905060c0516001600160a01b0316816001600160a01b0316141580156200099b57506001600160a01b038116734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b14155b15620009b15783620009ad8162001261565b9450505b5080620009be8162001261565b91505062000941565b50620009d58260026200127f565b6001600160401b03811115620009ef57620009ef62000eed565b60405190808252806020026020018201604052801562000a19578160200160208202803683370190505b50925060c0518360008151811062000a355762000a3562001187565b60200260200101906001600160a01b031690816001600160a01b031681525050734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b8360018151811062000a805762000a8062001187565b6001600160a01b0390921660209283029190910190910152600260005b8281101562000b5757600062000ab38262000bb0565b905060c0516001600160a01b0316816001600160a01b03161415801562000af757506001600160a01b038116734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b14155b1562000b415780868462000b0b8162001261565b95508151811062000b205762000b2062001187565b60200260200101906001600160a01b031690816001600160a01b0316815250505b508062000b4e8162001261565b91505062000a9d565b5050505090565b600081815260018301602052604081205462000ba75750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000851565b50600062000851565b6000806101c0516001600160a01b03166340c35446846040518263ffffffff1660e01b815260040162000be591815260200190565b60206040518083038186803b15801562000bfe57600080fd5b505afa15801562000c13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c399190620010b5565b6001600160a01b031663f7c618c16040518163ffffffff1660e01b815260040160206040518083038186803b15801562000c7257600080fd5b505afa15801562000c87573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cad9190620010b5565b600254604051636eb1769f60e11b81523060048201526001600160a01b03918216602482015291925082169063dd62ed3e9060440160206040518083038186803b15801562000cfb57600080fd5b505afa92505050801562000d2e575060408051601f3d908101601f1916820190925262000d2b91810190620010dc565b60015b62000db057806001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000d6d57600080fd5b505afa15801562000d82573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000da89190620010b5565b905062000851565b5092915050565b82805462000dc5906200129a565b90600052602060002090601f01602090048101928262000de9576000855562000e34565b82601f1062000e0457805160ff191683800117855562000e34565b8280016001018555821562000e34579182015b8281111562000e3457825182559160200191906001019062000e17565b5062000e4292915062000e9e565b5090565b82805482825590600052602060002090810192821562000e34579160200282015b8281111562000e3457825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000e67565b5b8082111562000e42576000815560010162000e9f565b6001600160a01b0381168114620008bc57600080fd5b805162000ed88162000eb5565b919050565b80516009811062000ed857600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000f2e5762000f2e62000eed565b604052919050565b600082601f83011262000f4857600080fd5b81516001600160401b0381111562000f645762000f6462000eed565b602062000f7a601f8301601f1916820162000f03565b828152858284870101111562000f8f57600080fd5b60005b8381101562000faf57858101830151828201840152820162000f92565b8381111562000fc15760008385840101525b5095945050505050565b60008060008060008060008060008060006101608c8e03121562000fee57600080fd5b8b5162000ffb8162000eb5565b60208d0151909b506200100e8162000eb5565b99506200101e60408d0162000edd565b98506200102e60608d0162000ecb565b97506200103e60808d0162000ecb565b965060a08c015195506200105560c08d0162000ecb565b94506200106560e08d0162000ecb565b6101008d01516101208e01516101408f015192965090945092506001600160401b038111156200109457600080fd5b620010a28e828f0162000f36565b9150509295989b509295989b9093969950565b600060208284031215620010c857600080fd5b8151620010d58162000eb5565b9392505050565b600060208284031215620010ef57600080fd5b5051919050565b60006101008083850312156200110b57600080fd5b83601f8401126200111b57600080fd5b6040518181016001600160401b03811182821017156200113f576200113f62000eed565b6040529083019080858311156200115557600080fd5b845b838110156200117c5780516200116d8162000eb5565b82526020918201910162001157565b509095945050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60008060008060008060c08789031215620011cd57600080fd5b8651620011da8162000eb5565b6020880151909650620011ed8162000eb5565b6040880151909550620012008162000eb5565b6060880151909450620012138162000eb5565b6080880151909350620012268162000eb5565b60a088015190925080151581146200123d57600080fd5b809150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b60006000198214156200127857620012786200124b565b5060010190565b600082198211156200129557620012956200124b565b500190565b600181811c90821680620012af57607f821691505b60208210811415620012d157634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051615da96200170c600039600081816106e50152614bfd0152600081816105ca01528181611841015281816128ad015281816136130152818161389c01528181613e96015261473a015260008181612f5401528181613b95015261504601526000818161033701528181612edf01528181612f1a01528181613028015281816130630152818161311d015281816139c801528181613a0301528181613a4901528181613a8e01528181613ad301528181613b1801528181613b5d01528181613bd301528181614e7001528181614eb501528181614efa01528181614f3f01528181614f8401528181614fc90152818161500e0152615084015260008181612f9a015281816130ea01528181613155015281816131d201528181613d9e01528181613dfa01528181613e4e0152818161497b01528181614a0901528181614a3a01528181614abe0152818161543e015281816154da015281816155980152818161567101526156a001526000818161047901528181611fff0152818161279501528181614080015281816143a40152818161515201528181615226015281816152c501528181615361015281816154000152818161549c0152818161555a015261563501526000818161075e0152613d7701526000818161062b01528181613199015281816132210152818161327801528181613c9c015281816148850152818161491d01528181614a7e0152818161519001528181615264015281816153030152818161539f0152818161550f015281816155cd015281816156dd01526157550152600081816105520152818161132a015281816114d201528181611f600152818161286b01528181612d43015281816130b10152818161397c01528181613d5501528181613e2c015281816140dc015281816149c901528181614b640152614e450152600081816105790152818161295801528181612a2d0152612adb0152600081816103c8015281816109fd01528181610b7001528181610dec01528181610f230152818161106a0152818161113f015281816111f2015281816113a1015281816116810152818161187b0152818161194801528181611b7301528181611d6201528181612bd701528181614284015281816143210152614b1c015260008181610604015281816106b40152818161085501528181610c6c01528181610d0f01528181610fb001528181611048015281816110b6015281816111720152818161136501528181611af70152818161203d015281816120c6015281816121ab01528181612379015281816123b70152818161274101528181612c520152818161399d01528181613c7a01528181613cce01528181613dd8015281816141040152818161441b0152818161455a0152818161463901528181614afa0152614e240152615da96000f3fe608060405234801561001057600080fd5b50600436106103055760003560e01c8063945c9142116101a7578063d3033c39116100ee578063eaada38211610097578063fc0c546a11610071578063fc0c546a14610748578063fd57a4df14610759578063ffa1ad741461078057600080fd5b8063eaada3821461070f578063ec78e83214610722578063ee330ee31461073557600080fd5b8063de603fdc116100c8578063de603fdc146106d8578063e529ee95146106e0578063e5328e061461070757600080fd5b8063d3033c3914610696578063d572fd7f146106a9578063d8dfeb45146106b257600080fd5b8063b20fdc0d11610150578063c965fa8a1161012a578063c965fa8a14610668578063ce5494bb14610670578063d2c35ce81461068357600080fd5b8063b20fdc0d14610626578063c415b95c1461064d578063c4f59f9b1461066057600080fd5b8063a7404b7011610181578063a7404b70146105c5578063abc9b45e146105ec578063b2016bd4146105ff57600080fd5b8063945c914214610574578063951dc22c1461059b578063a3f4df7e146105b057600080fd5b80634032b72b1161026b57806375b0ffd1116102145780637bb7bed1116101ee5780637bb7bed1146105175780637d7c2a1c1461052a5780637f44579b1461054d57600080fd5b806375b0ffd1146104ec5780637752e19414610507578063795dae661461050f57600080fd5b80634a2b9e07116102455780634a2b9e071461049b57806374db9ad4146104b6578063759cb53b146104d157600080fd5b80634032b72b1461043e578063440d72481461045157806348cd2ddd1461047457600080fd5b806314ae9f2e116102cd5780632b3297f9116102a75780632b3297f9146104055780632e1a7d4d146104185780633ac9fc111461042b57600080fd5b806314ae9f2e146103b057806316f0115b146103c35780631848effa146103ea57600080fd5b806301681a621461030a57806304f4efc51461031f57806306beb80a146103325780630c340a241461036f5780631026013a1461038f575b600080fd5b61031d610318366004615894565b6107a4565b005b61031d61032d3660046158b1565b6109fb565b6103597f000000000000000000000000000000000000000000000000000000000000000081565b60405161036691906158e0565b60405180910390f35b610377610b6c565b6040516001600160a01b039091168152602001610366565b6103a261039d3660046158b1565b610c04565b604051908152602001610366565b61031d6103be366004615894565b610dea565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b610377735ffe7fb82894076ecb99a30d6a32e969e6e35e9881565b600254610377906001600160a01b031681565b61031d6104263660046158b1565b610f20565b61031d6104393660046158b1565b611199565b61031d61044c366004615894565b6111f0565b61046461045f366004615894565b611326565b6040519015158152602001610366565b6103a27f000000000000000000000000000000000000000000000000000000000000000081565b61037773abc000d88f23bb45525e447528dbf656a9d55bf581565b61037773d061d61a4d941c39e5453435b6345dc261c2fce081565b610377734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b81565b61037773f403c135812408bfbe8713b5a23a04b3d48aae3181565b61031d61139f565b6103a26114ba565b6103776105253660046158b1565b611555565b61053261157f565b60408051938452602084019290925290820152606001610366565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6105a36115e5565b6040516103669190615908565b6105b86115f1565b6040516103669190615981565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b61031d6105fa366004615894565b61167f565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b600154610377906001600160a01b031681565b6105a36117c7565b6103a2611829565b61031d61067e366004615894565b611878565b61031d610691366004615894565b611b71565b61031d6106a4366004615894565b611d60565b6103a260065481565b7f0000000000000000000000000000000000000000000000000000000000000000610377565b6103a2611f41565b6103a27f000000000000000000000000000000000000000000000000000000000000000081565b6103a2611fed565b600754610377906001600160a01b031681565b600054610377906001600160a01b031681565b6103a26107433660046159b4565b612074565b6000546001600160a01b0316610377565b6103777f000000000000000000000000000000000000000000000000000000000000000081565b6105b860405180604001604052806005815260200164352e322e3160d81b81525081565b6107b1335b6003906124b0565b6107fb5760405162461bcd60e51b815260206004820152601660248201527531b0b63632b916b4b996b737ba16b096b5b2b2b832b960511b60448201526064015b60405180910390fd5b6001546001600160a01b03166108535760405162461bcd60e51b815260206004820152601560248201527f6665652d636f6c6c6563746f722d6e6f742d736574000000000000000000000060448201526064016107f2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614156108d55760405162461bcd60e51b815260206004820152601f60248201527f6e6f742d616c6c6f7765642d746f2d73776565702d636f6c6c61746572616c0060448201526064016107f2565b6108de81611326565b156109225760405162461bcd60e51b815260206004820152601460248201527306e6f742d616c6c6f7765642d746f2d73776565760641b60448201526064016107f2565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156109605760015461095d906001600160a01b0316476124d2565b50565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b1580156109a257600080fd5b505afa1580156109b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109da91906159e0565b6001549091506109f7906001600160a01b038481169116836125f0565b5050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015610a5457600080fd5b505afa158015610a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8c91906159f9565b6001600160a01b0316336001600160a01b031614610ada5760405162461bcd60e51b815260206004820152601a6024820152600080516020615d5483398151915260448201526064016107f2565b6127108110610b2b5760405162461bcd60e51b815260206004820152601660248201527f696e76616c69642d736c6970706167652d76616c75650000000000000000000060448201526064016107f2565b60065460408051918252602082018390527f43a94473b3422f31e660358900c02b907f22142a3224beace1f2b9f1fa079a9e910160405180910390a1600655565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015610bc757600080fd5b505afa158015610bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bff91906159f9565b905090565b6000610c0f336107a9565b610c545760405162461bcd60e51b815260206004820152601660248201527531b0b63632b916b4b996b737ba16b096b5b2b2b832b960511b60448201526064016107f2565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015610cb657600080fd5b505afa158015610cca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cee91906159e0565b9050610cf8612680565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015610d5957600080fd5b505afa158015610d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9191906159e0565b610d9b9190615a2c565b915082821015610de45760405162461bcd60e51b81526020600482015260146024820152731b9bdd0b595b9bdd59da0b585b5bdd5b9d13dd5d60621b60448201526064016107f2565b50919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4357600080fd5b505afa158015610e57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7b91906159f9565b6001600160a01b0316336001600160a01b031614610ec95760405162461bcd60e51b815260206004820152601a6024820152600080516020615d5483398151915260448201526064016107f2565b610ed4600382612779565b61095d5760405162461bcd60e51b815260206004820152601460248201527f72656d6f76652d6b65657065722d6661696c656400000000000000000000000060448201526064016107f2565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610f985760405162461bcd60e51b815260206004820152601960248201527f63616c6c65722d69732d6e6f742d7665737065722d706f6f6c0000000000000060448201526064016107f2565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015610ffa57600080fd5b505afa15801561100e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103291906159e0565b905081811061108f576109f76001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000846125f0565b6110a161109c8284615a2c565b61278e565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561110057600080fd5b505afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113891906159e0565b90506109f77f0000000000000000000000000000000000000000000000000000000000000000611168848461283f565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691906125f0565b6111a2336107a9565b6111e75760405162461bcd60e51b815260206004820152601660248201527531b0b63632b916b4b996b737ba16b096b5b2b2b832b960511b60448201526064016107f2565b61095d81612855565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561124957600080fd5b505afa15801561125d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128191906159f9565b6001600160a01b0316336001600160a01b0316146112cf5760405162461bcd60e51b815260206004820152601a6024820152600080516020615d5483398151915260448201526064016107f2565b6112da600382612494565b61095d5760405162461bcd60e51b815260206004820152601160248201527f6164642d6b65657065722d6661696c656400000000000000000000000000000060448201526064016107f2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061139957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b92915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f857600080fd5b505afa15801561140c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143091906159f9565b6001600160a01b0316336001600160a01b03161461147e5760405162461bcd60e51b815260206004820152601a6024820152600080516020615d5483398151915260448201526064016107f2565b611486612680565b61148e6128a6565b80516114a2916008916020909101906157af565b506114ad6000612855565b6114b8600019612855565b565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a08231906024015b60206040518083038186803b15801561151d57600080fd5b505afa158015611531573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bff91906159e0565b6008818154811061156557600080fd5b6000918252602090912001546001600160a01b0316905081565b6000808061158c336107a9565b6115d15760405162461bcd60e51b815260206004820152601660248201527531b0b63632b916b4b996b737ba16b096b5b2b2b832b960511b60448201526064016107f2565b6115d9612b96565b9250925092505b909192565b6060610bff6003612c43565b600580546115fe90615a43565b80601f016020809104026020016040519081016040528092919081815260200182805461162a90615a43565b80156116775780601f1061164c57610100808354040283529160200191611677565b820191906000526020600020905b81548152906001019060200180831161165a57829003601f168201915b505050505081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156116d857600080fd5b505afa1580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171091906159f9565b6001600160a01b0316336001600160a01b03161461175e5760405162461bcd60e51b815260206004820152601a6024820152600080516020615d5483398151915260448201526064016107f2565b600754604080516001600160a01b03928316815291831660208301527fc96bca3f57d35a1057a3357bced51fac157918147faa56845639671c516ec69c910160405180910390a1600780546001600160a01b0319166001600160a01b0392909216919091179055565b6060600880548060200260200160405190810160405280929190818152602001828054801561181f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611801575b5050505050905090565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401611505565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146118f05760405162461bcd60e51b815260206004820152601960248201527f63616c6c65722d69732d6e6f742d7665737065722d706f6f6c0000000000000060448201526064016107f2565b6001600160a01b0381166119465760405162461bcd60e51b815260206004820152601c60248201527f6e65772d73747261746567792d616464726573732d69732d7a65726f0000000060448201526064016107f2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119a957600080fd5b505afa1580156119bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e191906159f9565b6001600160a01b031614611a375760405162461bcd60e51b815260206004820152601660248201527f6e6f742d76616c69642d6e65772d73747261746567790000000000000000000060448201526064016107f2565b611a4081612c50565b6000546040516370a0823160e01b8152306004820152611ad49183916001600160a01b03909116906370a082319060240160206040518083038186803b158015611a8957600080fd5b505afa158015611a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac191906159e0565b6000546001600160a01b031691906125f0565b6040516370a0823160e01b815230600482015261095d9082906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015611b3957600080fd5b505afa158015611b4d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116891906159e0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015611bca57600080fd5b505afa158015611bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0291906159f9565b6001600160a01b0316336001600160a01b031614611c505760405162461bcd60e51b815260206004820152601a6024820152600080516020615d5483398151915260448201526064016107f2565b6001600160a01b038116611ca65760405162461bcd60e51b815260206004820152601d60248201527f6665652d636f6c6c6563746f722d616464726573732d69732d7a65726f00000060448201526064016107f2565b6001546001600160a01b0382811691161415611d045760405162461bcd60e51b815260206004820152601560248201527f6665652d636f6c6c6563746f722d69732d73616d65000000000000000000000060448201526064016107f2565b6001546040516001600160a01b038084169216907f0f06062680f9bd68e786e9980d9bb03d73d5620fc3b345e417b6eacb310b970690600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015611db957600080fd5b505afa158015611dcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df191906159f9565b6001600160a01b0316336001600160a01b031614611e3f5760405162461bcd60e51b815260206004820152601a6024820152600080516020615d5483398151915260448201526064016107f2565b6001600160a01b038116611e955760405162461bcd60e51b815260206004820152601760248201527f737761707065722d616464726573732d69732d7a65726f00000000000000000060448201526064016107f2565b6002546001600160a01b0382811691161415611ee55760405162461bcd60e51b815260206004820152600f60248201526e737761707065722d69732d73616d6560881b60448201526064016107f2565b6002546040516001600160a01b038084169216907f6c953b7ec311055c20b96a42cea31e89528e375b1bf953a503db40854b3188fe90600090a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000611f4b611829565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a08231906024015b60206040518083038186803b158015611fab57600080fd5b505afa158015611fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe391906159e0565b610bff9190615a78565b6000612028611ffa611f41565b6120237f0000000000000000000000000000000000000000000000000000000000000000612e3a565b612ecc565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401611f93565b600061207f336107a9565b6120c45760405162461bcd60e51b815260206004820152601660248201527531b0b63632b916b4b996b737ba16b096b5b2b2b832b960511b60448201526064016107f2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614156121465760405162461bcd60e51b815260206004820152601f60248201527f6e6f742d616c6c6f7765642d746f2d73776565702d636f6c6c61746572616c0060448201526064016107f2565b61214f83611326565b156121935760405162461bcd60e51b815260206004820152601460248201527306e6f742d616c6c6f7765642d746f2d73776565760641b60448201526064016107f2565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b1580156121f557600080fd5b505afa158015612209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222d91906159e0565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038616906370a082319060240160206040518083038186803b15801561227257600080fd5b505afa158015612286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122aa91906159e0565b905080156123a057600254604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529086169063dd62ed3e9060440160206040518083038186803b1580156122fd57600080fd5b505afa158015612311573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233591906159e0565b81111561237357600254612357906001600160a01b03878116911660006132fa565b600254612373906001600160a01b0387811691166000196132fa565b61239e857f000000000000000000000000000000000000000000000000000000000000000083613425565b505b6040516370a0823160e01b815230600482015282907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561240157600080fd5b505afa158015612415573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243991906159e0565b6124439190615a2c565b92508383101561248c5760405162461bcd60e51b81526020600482015260146024820152731b9bdd0b595b9bdd59da0b585b5bdd5b9d13dd5d60621b60448201526064016107f2565b505092915050565b60006124a9836001600160a01b0384166134c9565b9392505050565b6001600160a01b038116600090815260018301602052604081205415156124a9565b804710156125225760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107f2565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461256f576040519150601f19603f3d011682016040523d82523d6000602084013e612574565b606091505b50509050806125eb5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107f2565b505050565b6040516001600160a01b0383166024820152604481018290526125eb90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613518565b6126886135ea565b505060085460005b818110156109f7576000600882815481106126ad576126ad615a90565b60009182526020822001546040516370a0823160e01b81523060048201526001600160a01b03909116925082906370a082319060240160206040518083038186803b1580156126fb57600080fd5b505afa15801561270f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061273391906159e0565b9050801561276657612766827f0000000000000000000000000000000000000000000000000000000000000000836136e4565b50508061277290615aa6565b9050612690565b60006124a9836001600160a01b038416613786565b60006127b97f0000000000000000000000000000000000000000000000000000000000000000612e3a565b905060006127c56114ba565b905060006127d1611829565b6127db9083615a78565b905060006128066127ec8386612ecc565b6127f68488615ac1565b6128009190615ae0565b8361283f565b905080612814575050505050565b8281111561282e5761282e6128298483615a2c565b613879565b612838818561396c565b5050505050565b600081831061284e57816124a9565b5090919050565b61285e81613c5c565b61095d6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673f403c135812408bfbe8713b5a23a04b3d48aae31836132fa565b60606000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d55a23f46040518163ffffffff1660e01b815260040160206040518083038186803b15801561290457600080fd5b505afa158015612918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293c91906159e0565b905060005b818110156129db57600061295482613e73565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316141580156129b557506001600160a01b038116734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b14155b156129c857836129c481615aa6565b9450505b50806129d381615aa6565b915050612941565b506129e7826002615a78565b67ffffffffffffffff8111156129ff576129ff615b02565b604051908082528060200260200182016040528015612a28578160200160208202803683370190505b5092507f000000000000000000000000000000000000000000000000000000000000000083600081518110612a5f57612a5f615a90565b60200260200101906001600160a01b031690816001600160a01b031681525050734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b83600181518110612aa757612aa7615a90565b6001600160a01b0390921660209283029190910190910152600260005b82811015612b8f576000612ad782613e73565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614158015612b3857506001600160a01b038116734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b14155b15612b7c57808684612b4981615aa6565b955081518110612b5b57612b5b615a90565b60200260200101906001600160a01b031690816001600160a01b0316815250505b5080612b8781615aa6565b915050612ac4565b5050505090565b6000806000612ba3614079565b612bab61425e565b6040516302df682360e11b815260048101849052602481018390526044810182905292955090935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906305bed04690606401600060405180830381600087803b158015612c2357600080fd5b505af1158015612c37573d6000803e3d6000fd5b505050506115e0614620565b606060006124a9836146c8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031663d8dfeb456040518163ffffffff1660e01b815260040160206040518083038186803b158015612cb357600080fd5b505afa158015612cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ceb91906159f9565b6001600160a01b031614612d415760405162461bcd60e51b815260206004820152601660248201527f77726f6e672d636f6c6c61746572616c2d746f6b656e0000000000000000000060448201526064016107f2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612da457600080fd5b505afa158015612db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddc91906159f9565b6001600160a01b031614612e325760405162461bcd60e51b815260206004820152601360248201527f77726f6e672d726563656970742d746f6b656e0000000000000000000000000060448201526064016107f2565b61095d614724565b60006f7fffffffffffffffffffffffffffffff198212158015612e6c57506f8000000000000000000000000000000082125b612ec85760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016107f2565b5090565b600082612edb57506000611399565b60027f00000000000000000000000000000000000000000000000000000000000000006008811115612f0f57612f0f6158ca565b1480612f75575060077f00000000000000000000000000000000000000000000000000000000000000006008811115612f4a57612f4a6158ca565b148015612f7557507f0000000000000000000000000000000000000000000000000000000000000000155b156130245760405163cc2b27d760e01b815260048101849052600f83900b60248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cc2b27d7906044015b60206040518083038186803b158015612fe557600080fd5b505afa158015612ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301d91906159e0565b9050611399565b60067f00000000000000000000000000000000000000000000000000000000000000006008811115613058576130586158ca565b1480613095575060077f00000000000000000000000000000000000000000000000000000000000000006008811115613093576130936158ca565b145b15613119576040516341b028f360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052600f84900b60448301527f000000000000000000000000000000000000000000000000000000000000000016906341b028f390606401612fcd565b60087f0000000000000000000000000000000000000000000000000000000000000000600881111561314d5761314d6158ca565b1415613258577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615613201576040516341b028f360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052600f84900b60448301527f000000000000000000000000000000000000000000000000000000000000000016906341b028f390606401612fcd565b60405163cc2b27d760e01b815260048101849052600f83900b60248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cc2b27d790604401612fcd565b60405163cc2b27d760e01b815260048101849052600f83900b60248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cc2b27d79060440160206040518083038186803b1580156132c257600080fd5b505afa1580156132d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a991906159e0565b8015806133835750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b15801561334957600080fd5b505afa15801561335d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061338191906159e0565b155b6133f55760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016107f2565b6040516001600160a01b0383166024820152604481018290526125eb90849063095ea7b360e01b9060640161261c565b600254604051636ccb2b0160e01b81526001600160a01b038581166004830152848116602483015260448201849052600160648301523060848301526000921690636ccb2b019060a401602060405180830381600087803b15801561348957600080fd5b505af115801561349d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c191906159e0565b949350505050565b600081815260018301602052604081205461351057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611399565b506000611399565b600061356d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661479a9092919063ffffffff16565b8051909150156125eb578080602001905181019061358b9190615b18565b6125eb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107f2565b604051637050ccd960e01b81523060048201526001602482015260009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637050ccd990604401602060405180830381600087803b15801561365757600080fd5b505af115801561366b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368f9190615b18565b6136db5760405162461bcd60e51b815260206004820152601360248201527f7265776172642d636c61696d2d6661696c65640000000000000000000000000060448201526064016107f2565b50600091829150565b600254604051636ccb2b0160e01b81526001600160a01b0385811660048301528481166024830152604482018490526001606483015230608483015290911690636ccb2b019060a401602060405180830381600087803b15801561374757600080fd5b505af1925050508015613777575060408051601f3d908101601f19168201909252613774918101906159e0565b60015b61378057505050565b50505050565b6000818152600183016020526040812054801561386f5760006137aa600183615a2c565b85549091506000906137be90600190615a2c565b90508181146138235760008660000182815481106137de576137de615a90565b906000526020600020015490508087600001848154811061380157613801615a90565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061383457613834615b3a565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611399565b6000915050611399565b801561095d57604051636197390160e11b815260048101829052600060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c32e720290604401602060405180830381600087803b1580156138e857600080fd5b505af11580156138fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139209190615b18565b61095d5760405162461bcd60e51b815260206004820152601a60248201527f77697468647261772d616e642d756e777261702d6661696c656400000000000060448201526064016107f2565b81613975575050565b60006139c27f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000856147a9565b905060007f000000000000000000000000000000000000000000000000000000000000000060088111156139f8576139f86158ca565b1480613a35575060017f00000000000000000000000000000000000000000000000000000000000000006008811115613a3357613a336158ca565b145b15613a45576125eb83828461485e565b60037f00000000000000000000000000000000000000000000000000000000000000006008811115613a7957613a796158ca565b1415613a8a576125eb8382846148ef565b60047f00000000000000000000000000000000000000000000000000000000000000006008811115613abe57613abe6158ca565b1415613acf576125eb8382846148ef565b60027f00000000000000000000000000000000000000000000000000000000000000006008811115613b0357613b036158ca565b1415613b14576125eb838284614954565b60067f00000000000000000000000000000000000000000000000000000000000000006008811115613b4857613b486158ca565b1415613b59576125eb8382846149b2565b60077f00000000000000000000000000000000000000000000000000000000000000006008811115613b8d57613b8d6158ca565b1415613bcf577f000000000000000000000000000000000000000000000000000000000000000015613bc4576125eb8382846149b2565b6125eb838284614954565b60087f00000000000000000000000000000000000000000000000000000000000000006008811115613c0357613c036158ca565b1415613c14576125eb838284614a38565b60405162461bcd60e51b815260206004820152601a60248201527f77697468647261772d66726f6d2d63757276652d6661696c656400000000000060448201526064016107f2565b613c6581614aed565b6002546001600160a01b0390811690613cc1907f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000846132fa565b613cf56001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682846132fa565b60085460005b81811015613d4757613d37838560088481548110613d1b57613d1b615a90565b6000918252602090912001546001600160a01b031691906132fa565b613d4081615aa6565b9050613cfb565b50613d9c6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000856132fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316156125eb57613e1f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000856132fa565b6125eb6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000856132fa565b604051632061aa2360e11b81526004810182905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c354469060240160206040518083038186803b158015613ed857600080fd5b505afa158015613eec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1091906159f9565b6001600160a01b031663f7c618c16040518163ffffffff1660e01b815260040160206040518083038186803b158015613f4857600080fd5b505afa158015613f5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f8091906159f9565b600254604051636eb1769f60e11b81523060048201526001600160a01b03918216602482015291925082169063dd62ed3e9060440160206040518083038186803b158015613fcd57600080fd5b505afa925050508015613ffd575060408051601f3d908101601f19168201909252613ffa918101906159e0565b60015b61407257806001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561403a57600080fd5b505afa15801561404e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061301d91906159f9565b5092915050565b60006140a47f0000000000000000000000000000000000000000000000000000000000000000612e3a565b905060006140b0611829565b6140b86114ba565b6140c29190615a78565b600754604051632d9198e160e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018490529293506000929091169063b64663849060640160206040518083038186803b15801561415c57600080fd5b505afa158015614170573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061419491906159e0565b905060006127106006546127106141ab9190615a2c565b6141b59084615ac1565b6141bf9190615ae0565b905060006127106006546127106141d69190615a78565b6141e09085615ac1565b6141ea9190615ae0565b905060006141f88587612ecc565b905080831115801561420a5750818111155b6142565760405162461bcd60e51b815260206004820152601160248201527f736c6970706167652d746f6f2d6869676800000000000000000000000000000060448201526064016107f2565b505050505050565b604051636a9eee1360e11b81523060048201526000908190819081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d53ddc269060240160206040518083038186803b1580156142c657600080fd5b505afa1580156142da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142fe91906159e0565b604051639f2b283360e01b81523060048201529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639f2b28339060240160206040518083038186803b15801561436357600080fd5b505afa158015614377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061439b91906159e0565b905060006143c87f0000000000000000000000000000000000000000000000000000000000000000612e3a565b905060006143d46114ba565b905060006143e0611829565b6143ea9083615a78565b905060006143f88285612ecc565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561445d57600080fd5b505afa158015614471573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061449591906159e0565b905060006144a38383615a78565b9050868111156144be576144b78782615a2c565b9a506144cb565b6144c88188615a2c565b99505b60006144d7898d615a78565b9050828111156145e35760006144f66144f08584615a2c565b8661283f565b905080156145e157600061451e8661450e8985615ac1565b6145189190615ae0565b8861283f565b905080156145df578781111561453b5761453b6128298983615a2c565b614545818a61396c565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b1580156145a457600080fd5b505afa1580156145b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145dc91906159e0565b94505b505b505b6145ed838a61283f565b99508983116145fd576000614610565b61461061460a8b85615a2c565b8d61283f565b9b50505050505050505050909192565b6040516370a0823160e01b81523060048201526146c0907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561468357600080fd5b505afa158015614697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146bb91906159e0565b614b41565b6114b8614b4c565b60608160000180548060200260200160405190810160405280929190818152602001828054801561471857602002820191906000526020600020905b815481526020019060010190808311614704575b50505050509050919050565b6040516324f81cd160e11b8152600160048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906349f039a290602401600060405180830381600087803b15801561478657600080fd5b505af1158015613780573d6000803e3d6000fd5b60606134c18484600085614cec565b60006127106006546127106147be9190615a2c565b600754604051632d9198e160e21b81526001600160a01b0388811660048301528781166024830152604482018790529091169063b64663849060640160206040518083038186803b15801561481257600080fd5b505afa158015614826573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061484a91906159e0565b6148549190615ac1565b6134c19190615ae0565b604051630d2680e960e11b815260048101849052600f82900b6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631a4d01d2906064015b600060405180830381600087803b1580156148d257600080fd5b505af11580156148e6573d6000803e3d6000fd5b50505050505050565b60405163517a55a360e01b815260048101849052600f82900b602482015260448101839052600160648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063517a55a3906084016148b8565b604051630d2680e960e11b815260048101849052600f82900b6024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631a4d01d2906064016148b8565b6040516314f6943160e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052600f83900b6044830152606482018490527f000000000000000000000000000000000000000000000000000000000000000016906329ed2862906084016148b8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161561485e576040516314f6943160e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201859052600f83900b6044830152606482018490527f000000000000000000000000000000000000000000000000000000000000000016906329ed2862906084016148b8565b61095d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836132fa565b61095d816000614e14565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015614bae57600080fd5b505afa158015614bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614be691906159e0565b9050801561095d576040516321d0683360e11b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018290526001604482015273f403c135812408bfbe8713b5a23a04b3d48aae31906343a0d06690606401602060405180830381600087803b158015614c6857600080fd5b505af1158015614c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ca09190615b18565b61095d5760405162461bcd60e51b815260206004820152601660248201527f626f6f737465722d6465706f7369742d6661696c65640000000000000000000060448201526064016107f2565b606082471015614d4d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107f2565b843b614d9b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107f2565b600080866001600160a01b03168587604051614db79190615b50565b60006040518083038185875af1925050503d8060008114614df4576040519150601f19603f3d011682016040523d82523d6000602084013e614df9565b606091505b5091509150614e0982828661510d565b979650505050505050565b81614e1d575050565b6000614e6a7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000856147a9565b905060007f00000000000000000000000000000000000000000000000000000000000000006008811115614ea057614ea06158ca565b1415614eb1576125eb838284615146565b60037f00000000000000000000000000000000000000000000000000000000000000006008811115614ee557614ee56158ca565b1415614ef6576125eb83828461521a565b60017f00000000000000000000000000000000000000000000000000000000000000006008811115614f2a57614f2a6158ca565b1415614f3b576125eb8382846152b9565b60047f00000000000000000000000000000000000000000000000000000000000000006008811115614f6f57614f6f6158ca565b1415614f80576125eb838284615355565b60027f00000000000000000000000000000000000000000000000000000000000000006008811115614fb457614fb46158ca565b1415614fc5576125eb8382846153f4565b60067f00000000000000000000000000000000000000000000000000000000000000006008811115614ff957614ff96158ca565b141561500a576125eb838284615490565b60077f0000000000000000000000000000000000000000000000000000000000000000600881111561503e5761503e6158ca565b1415615080577f000000000000000000000000000000000000000000000000000000000000000015615075576125eb83828461554e565b6125eb8382846153f4565b60087f000000000000000000000000000000000000000000000000000000000000000060088111156150b4576150b46158ca565b14156150c5576125eb83828461560c565b60405162461bcd60e51b815260206004820152601760248201527f6465706f7369742d746f2d63757276652d6661696c656400000000000000000060448201526064016107f2565b6060831561511c5750816124a9565b82511561512c5782518084602001fd5b8160405162461bcd60e51b81526004016107f29190615981565b61514e615810565b83817f00000000000000000000000000000000000000000000000000000000000000006002811061518157615181615a90565b60200201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630b4c7e4d836151c15760006151c3565b855b83866040518463ffffffff1660e01b81526004016151e2929190615b8f565b6000604051808303818588803b1580156151fb57600080fd5b505af115801561520f573d6000803e3d6000fd5b505050505050505050565b615222615810565b83817f00000000000000000000000000000000000000000000000000000000000000006002811061525557615255615a90565b60200201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663ee22be2383615295576000615297565b855b838660016040518563ffffffff1660e01b81526004016151e293929190615baa565b6152c161582e565b83817f0000000000000000000000000000000000000000000000000000000000000000600381106152f4576152f4615a90565b60200201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634515cef383615334576000615336565b855b83866040518463ffffffff1660e01b81526004016151e2929190615bf1565b61535d61582e565b83817f00000000000000000000000000000000000000000000000000000000000000006003811061539057615390615a90565b60200201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016632b6e993a836153d05760006153d2565b855b838660016040518563ffffffff1660e01b81526004016151e293929190615c0c565b6153fc61584c565b83817f00000000000000000000000000000000000000000000000000000000000000006004811061542f5761542f615a90565b60200201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663029b2f348361546f576000615471565b855b83866040518463ffffffff1660e01b81526004016151e2929190615c53565b61549861582e565b83817f0000000000000000000000000000000000000000000000000000000000000000600381106154cb576154cb615a90565b60200201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a31851798361550b57600061550d565b855b7f000000000000000000000000000000000000000000000000000000000000000084876040518563ffffffff1660e01b81526004016151e293929190615c6e565b61555661584c565b83817f00000000000000000000000000000000000000000000000000000000000000006004811061558957615589615a90565b60200201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663384e03db836155c95760006155cb565b855b7f000000000000000000000000000000000000000000000000000000000000000084876040518563ffffffff1660e01b81526004016151e293929190615c99565b6040805160088082526101208201909252600091602082016101008036833701905050905083817f00000000000000000000000000000000000000000000000000000000000000008151811061566457615664615a90565b60209081029190910101527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615615753577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fd9de631836156d95760006156db565b855b7f000000000000000000000000000000000000000000000000000000000000000084876040518563ffffffff1660e01b815260040161571c93929190615cff565b6000604051808303818588803b15801561573557600080fd5b505af1158015615749573d6000803e3d6000fd5b5050505050613780565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b72df5de8361578e576000615790565b855b83866040518463ffffffff1660e01b81526004016151e2929190615d31565b828054828255906000526020600020908101928215615804579160200282015b8281111561580457825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906157cf565b50612ec892915061586a565b60405180604001604052806002906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b5b80821115612ec8576000815560010161586b565b6001600160a01b038116811461095d57600080fd5b6000602082840312156158a657600080fd5b81356124a98161587f565b6000602082840312156158c357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016009831061590257634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252825182820181905260009190848201906040850190845b818110156159495783516001600160a01b031683529284019291840191600101615924565b50909695505050505050565b60005b83811015615970578181015183820152602001615958565b838111156137805750506000910152565b60208152600082518060208401526159a0816040850160208701615955565b601f01601f19169190910160400192915050565b600080604083850312156159c757600080fd5b82356159d28161587f565b946020939093013593505050565b6000602082840312156159f257600080fd5b5051919050565b600060208284031215615a0b57600080fd5b81516124a98161587f565b634e487b7160e01b600052601160045260246000fd5b600082821015615a3e57615a3e615a16565b500390565b600181811c90821680615a5757607f821691505b60208210811415610de457634e487b7160e01b600052602260045260246000fd5b60008219821115615a8b57615a8b615a16565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415615aba57615aba615a16565b5060010190565b6000816000190483118215151615615adb57615adb615a16565b500290565b600082615afd57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600060208284031215615b2a57600080fd5b815180151581146124a957600080fd5b634e487b7160e01b600052603160045260246000fd5b60008251615b62818460208701615955565b9190910192915050565b8060005b6002811015613780578151845260209384019390910190600101615b70565b60608101615b9d8285615b6c565b8260408301529392505050565b60808101615bb88286615b6c565b8360408301528215156060830152949350505050565b8060005b6003811015613780578151845260209384019390910190600101615bd2565b60808101615bff8285615bce565b8260608301529392505050565b60a08101615c1a8286615bce565b8360608301528215156080830152949350505050565b8060005b6004811015613780578151845260209384019390910190600101615c34565b60a08101615c618285615c30565b8260808301529392505050565b6001600160a01b038416815260a08101615c8b6020830185615bce565b826080830152949350505050565b6001600160a01b038416815260c08101615cb66020830185615c30565b8260a0830152949350505050565b600081518084526020808501945080840160005b83811015615cf457815187529582019590820190600101615cd8565b509495945050505050565b6001600160a01b0384168152606060208201526000615d216060830185615cc4565b9050826040830152949350505050565b604081526000615d446040830185615cc4565b9050826020830152939250505056fe63616c6c65722d69732d6e6f742d7468652d676f7665726e6f72000000000000a2646970667358221220c1ffba122dfda7c3046d28d4538b18399aa963943d3605be7d34c6954f0497b264736f6c63430008090033000000000000000000000000d1c117319b3595fbc39b471ab1fd485629eb05f2000000000000000000000000d65ed4bce447195187f37ce7d82f56adf1826f8f00000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d533a949740bb3306d119cc777fa900ba034cd52000000000000000000000000000000000000000000000000000000000000003200000000000000000000000080704acdf97723963263c78f861f091ad04f46e2000000000000000000000000229f19942612a8dbdec3643cb23f88685ccd56a5000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001a200000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000012436f6e7665785f796e455448785f574554480000000000000000000000000000