4 txs
22 calls
constructor
constructor(address pool_, address swapper_, address compRewards_, address rewardToken_, address comet_, address borrowToken_, address vPool_, string name_)
functions
borrowBalance
viewfunction borrowBalance() view returns (uint256)
borrowToken
viewfunction borrowToken() view returns (address)
collateral
viewfunction collateral() view returns (address)
collateralToken
viewfunction collateralToken() view returns (address)
comet
viewfunction comet() view returns (address)
compRewards
viewfunction compRewards() view returns (address)
feeCollector
viewfunction feeCollector() view returns (address)
governor
viewfunction governor() view returns (address)
isReservedToken
viewfunction isReservedToken(address token_) view returns (bool)
keepers
viewfunction keepers() view returns (address[])
maxBorrowLimit
viewfunction maxBorrowLimit() view returns (uint256)
minBorrowLimit
viewfunction minBorrowLimit() view returns (uint256)
NAME
viewfunction NAME() view returns (string)
pool
viewfunction pool() view returns (address)
receiptToken
viewfunction receiptToken() view returns (address)
rewardToken
viewfunction rewardToken() view returns (address)
slippage
viewfunction slippage() view returns (uint256)
swapper
viewfunction swapper() view returns (address)
token
viewfunction token() view returns (address)
tvl
viewfunction tvl() view returns (uint256)
VERSION
viewfunction VERSION() view returns (string)
vPool
viewfunction vPool() view returns (address)
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)
removeKeeper
nonpayablefunction removeKeeper(address _keeperAddress)
swapToCollateral
nonpayablefunction swapToCollateral(address _tokenIn, uint256 _minAmountOut) returns (uint256 _amountOut)
sweep
nonpayablefunction sweep(address _fromToken)
updateBorrowLimit
nonpayablefunction updateBorrowLimit(uint256 _minBorrowLimit, uint256 _maxBorrowLimit)
updateFeeCollector
nonpayablefunction updateFeeCollector(address _feeCollector)
updateSlippage
nonpayablefunction updateSlippage(uint256 _newSlippage)
updateSwapper
nonpayablefunction updateSwapper(address _swapper)
withdraw
nonpayablefunction withdraw(uint256 _amount)
events
UpdatedBorrowLimit
event UpdatedBorrowLimit(uint256 previousMinBorrowLimit, uint256 newMinBorrowLimit, uint256 previousMaxBorrowLimit, uint256 newMaxBorrowLimit)
UpdatedFeeCollector
event UpdatedFeeCollector(address indexed previousFeeCollector, address indexed newFeeCollector)
UpdatedSlippage
event UpdatedSlippage(uint256 previousSlippage, uint256 newSlippage)
UpdatedSwapper
event UpdatedSwapper(address indexed oldSwapper, address indexed newSwapper)
errors
No errors.
creation bytecode
0x610160604052611b5860065561213460075561012c6008553480156200002457600080fd5b5060405162006a9c38038062006a9c8339810160408190526200004791620005a0565b878787878787868686846001600160a01b038316620000ad5760405162461bcd60e51b815260206004820152601460248201527f706f6f6c2d616464726573732d69732d7a65726f00000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601760248201527f737761707065722d616464726573732d69732d7a65726f0000000000000000006044820152606401620000a4565b600280546001600160a01b0319166001600160a01b0384811691909117909155831660a081905260408051637e062a3560e11b8152905163fc0c546a91600480820192602092909190829003018186803b1580156200016357600080fd5b505afa15801562000178573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019e919062000717565b6001600160a01b03908116608052600080546001600160a01b031916918316919091179055620001e5620001cf3390565b60036200045960201b620021191790919060201c565b620002275760405162461bcd60e51b81526020600482015260116024820152701859190b5ad9595c195c8b59985a5b1959607a1b6044820152606401620000a4565b5050506001600160a01b038516620002825760405162461bcd60e51b815260206004820152601760248201527f726577617264732d616464726573732d69732d7a65726f0000000000000000006044820152606401620000a4565b6001600160a01b038316620002da5760405162461bcd60e51b815260206004820152601560248201527f636f6d65742d616464726573732d69732d7a65726f00000000000000000000006044820152606401620000a4565b6001600160a01b038416620003325760405162461bcd60e51b815260206004820152601c60248201527f7265776172642d746f6b656e2d616464726573732d69732d7a65726f000000006044820152606401620000a4565b6001600160a01b0380861660c05284811660e05283811661010052821661012052805162000368906005906020840190620004cb565b5050505050505050610120516001600160a01b0316826001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b757600080fd5b505afa158015620003cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f2919062000717565b6001600160a01b0316146200043e5760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a590b59dc9bddcb5c1bdbdb607a1b6044820152606401620000a4565b506001600160a01b031661014052506200077b945050505050565b600062000470836001600160a01b03841662000479565b90505b92915050565b6000818152600183016020526040812054620004c25750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000473565b50600062000473565b828054620004d9906200073e565b90600052602060002090601f016020900481019282620004fd576000855562000548565b82601f106200051857805160ff191683800117855562000548565b8280016001018555821562000548579182015b82811115620005485782518255916020019190600101906200052b565b50620005569291506200055a565b5090565b5b808211156200055657600081556001016200055b565b6001600160a01b03811681146200058757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b600080600080600080600080610100898b031215620005be57600080fd5b8851620005cb8162000571565b809850506020808a0151620005e08162000571565b60408b0151909850620005f38162000571565b60608b0151909750620006068162000571565b60808b0151909650620006198162000571565b60a08b01519095506200062c8162000571565b60c08b01519094506200063f8162000571565b60e08b01519093506001600160401b03808211156200065d57600080fd5b818c0191508c601f8301126200067257600080fd5b8151818111156200068757620006876200058a565b604051601f8201601f19908116603f01168101908382118183101715620006b257620006b26200058a565b816040528281528f86848701011115620006cb57600080fd5b600093505b82841015620006ef5784840186015181850187015292850192620006d0565b82841115620007015760008684830101525b8096505050505050509295985092959890939650565b6000602082840312156200072a57600080fd5b8151620007378162000571565b9392505050565b600181811c908216806200075357607f821691505b602082108114156200077557634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e051610100516101205161014051615f9362000b096000396000818161039a015281816111a3015281816122fe0152818161238e0152818161240a0152818161276701528181612795015281816152860152818161538f01528181615438015261587b01526000818161037301528181610cfe015281816127450152818161283f01528181612a8301528181613f070152818161408c0152818161428a015281816142de01528181614567015281816147800152818161483e015281816148f10152818161499101528181614a1c01528181614eca0152818161553a01526156fa01526000818161043501528181611a840152818161251a015281816125e0015281816126b6015281816127c8015281816129d801528181612c1f01528181612e8401528181612f8c0152818161305e015281816133ef015281816139ea01528181613acc01528181613bc301528181613c6a01528181613cec01528181613d1b0152818161414801528181614224015281816142ac0152818161468f01528181614d6501528181614dfa01528181614ef901528181614fab0152818161505e015281816154ee015281816155690152818161575001526157d6015260008181610505015281816134970152818161352701526143120152600081816102fa01526134240152600081816102a5015281816107ca01528181610a4601528181610b7c01528181610d8d01528181610ed401528181610fa90152818161105c015281816112df015281816113ac015281816115d7015281816117c601528181611f330152818161289e0152818161293b01528181612dfb0152614f8101526000818161040e015281816104a501528181610620015281816108c60152818161096901528181610e1a01528181610eb201528181610f2001528181610fdc0152818161155b015281816119bd01528181611a5c01528181611b6301528181611c4801528181611e1601528181611e5401528181612329015281816124e5015281816125ab015281816126840152818161280301528181612b5201528181612bf101528181612d20015281816130320152818161354801528181613aa101528181613b9801528181613e2701528181614202015281816142560152818161458801528181614601015281816146b601528181614758015281816149b201528181614a4401528181614aff01528181614bc001528181614f5f01526154bf0152615f936000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80637d7c2a1c11610125578063d8dfeb45116100ad578063ee330ee31161007c578063ee330ee3146104ed578063f7c618c114610500578063fb7ee10214610527578063fc0c546a1461053a578063ffa1ad741461054b57600080fd5b8063d8dfeb45146104a3578063e260d747146104c9578063e5328e06146104d2578063ec78e832146104da57600080fd5b8063ba3e9c12116100f4578063ba3e9c1214610430578063c415b95c14610457578063ce5494bb1461046a578063d2c35ce81461047d578063d3033c391461049057600080fd5b80637d7c2a1c146103bc578063951dc22c146103df578063a3f4df7e146103f4578063b2016bd41461040957600080fd5b80632b3297f9116101a85780633e032a3b116101775780633e032a3b1461032f5780634032b72b14610338578063440d72481461034b578063456dc17a1461036e5780636719578c1461039557600080fd5b80632b3297f9146102cf5780632e1a7d4d146102e25780632f9cb53e146102f55780633ac9fc111461031c57600080fd5b806314ae9f2e116101e457806314ae9f2e1461027a57806315b0d4961461028d57806316f0115b146102a0578063243cd14e146102c757600080fd5b806301681a62146102165780630181686c1461022b5780630c340a24146102475780631026013a14610267575b600080fd5b610229610224366004615900565b61056f565b005b61023460075481565b6040519081526020015b60405180910390f35b61024f6107c6565b6040516001600160a01b03909116815260200161023e565b61023461027536600461591d565b61085e565b610229610288366004615900565b610a44565b61022961029b36600461591d565b610b7a565b61024f7f000000000000000000000000000000000000000000000000000000000000000081565b610234610cdf565b60025461024f906001600160a01b031681565b6102296102f036600461591d565b610d8a565b61024f7f000000000000000000000000000000000000000000000000000000000000000081565b61022961032a36600461591d565b611003565b61023460085481565b610229610346366004615900565b61105a565b61035e610359366004615900565b611190565b604051901515815260200161023e565b61024f7f000000000000000000000000000000000000000000000000000000000000000081565b61024f7f000000000000000000000000000000000000000000000000000000000000000081565b6103c46111dd565b6040805193845260208401929092529082015260600161023e565b6103e7611242565b60405161023e9190615936565b6103fc61124e565b60405161023e91906159af565b61024f7f000000000000000000000000000000000000000000000000000000000000000081565b61024f7f000000000000000000000000000000000000000000000000000000000000000081565b60015461024f906001600160a01b031681565b610229610478366004615900565b6112dc565b61022961048b366004615900565b6115d5565b61022961049e366004615900565b6117c4565b7f000000000000000000000000000000000000000000000000000000000000000061024f565b61023460065481565b6102346119a5565b60005461024f906001600160a01b031681565b6102346104fb3660046159e2565b611b11565b61024f7f000000000000000000000000000000000000000000000000000000000000000081565b610229610535366004615a0e565b611f31565b6000546001600160a01b031661024f565b6103fc604051806040016040528060058152602001641a9718971960d91b81525081565b61057c335b600390612135565b6105c65760405162461bcd60e51b815260206004820152601660248201527531b0b63632b916b4b996b737ba16b096b5b2b2b832b960511b60448201526064015b60405180910390fd5b6001546001600160a01b031661061e5760405162461bcd60e51b815260206004820152601560248201527f6665652d636f6c6c6563746f722d6e6f742d736574000000000000000000000060448201526064016105bd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614156106a05760405162461bcd60e51b815260206004820152601f60248201527f6e6f742d616c6c6f7765642d746f2d73776565702d636f6c6c61746572616c0060448201526064016105bd565b6106a981611190565b156106ed5760405162461bcd60e51b815260206004820152601460248201527306e6f742d616c6c6f7765642d746f2d73776565760641b60448201526064016105bd565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561072b57600154610728906001600160a01b031647612157565b50565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b15801561076d57600080fd5b505afa158015610781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a59190615a30565b6001549091506107c2906001600160a01b03848116911683612275565b5050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561082157600080fd5b505afa158015610835573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108599190615a59565b905090565b600061086933610574565b6108ae5760405162461bcd60e51b815260206004820152601660248201527531b0b63632b916b4b996b737ba16b096b5b2b2b832b960511b60448201526064016105bd565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561091057600080fd5b505afa158015610924573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109489190615a30565b90506109526122ed565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b1580156109b357600080fd5b505afa1580156109c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109eb9190615a30565b6109f59190615a8c565b915082821015610a3e5760405162461bcd60e51b81526020600482015260146024820152731b9bdd0b595b9bdd59da0b585b5bdd5b9d13dd5d60621b60448201526064016105bd565b50919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9d57600080fd5b505afa158015610ab1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad59190615a59565b6001600160a01b0316336001600160a01b031614610b235760405162461bcd60e51b815260206004820152601a6024820152600080516020615f3e83398151915260448201526064016105bd565b610b2e60038261234f565b6107285760405162461bcd60e51b815260206004820152601460248201527f72656d6f76652d6b65657065722d6661696c656400000000000000000000000060448201526064016105bd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015610bd357600080fd5b505afa158015610be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0b9190615a59565b6001600160a01b0316336001600160a01b031614610c595760405162461bcd60e51b815260206004820152601a6024820152600080516020615f3e83398151915260448201526064016105bd565b612710811115610c9e5760405162461bcd60e51b815260206004820152601060248201526f696e76616c69642d736c69707061676560801b60448201526064016105bd565b60085460408051918252602082018390527f282c65286b5ce3db38b8527661b948d366f1642008bb1f38bfe820cad1003a42910160405180910390a1600855565b6000610ce9612364565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015610d4857600080fd5b505afa158015610d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d809190615a30565b6108599190615aa3565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610e025760405162461bcd60e51b815260206004820152601960248201527f63616c6c65722d69732d6e6f742d7665737065722d706f6f6c0000000000000060448201526064016105bd565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015610e6457600080fd5b505afa158015610e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9c9190615a30565b9050818110610ef9576107c26001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084612275565b610f0b610f068284615a8c565b6124ad565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015610f6a57600080fd5b505afa158015610f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa29190615a30565b90506107c27f0000000000000000000000000000000000000000000000000000000000000000610fd28484612719565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190612275565b61100c33610574565b6110515760405162461bcd60e51b815260206004820152601660248201527531b0b63632b916b4b996b737ba16b096b5b2b2b832b960511b60448201526064016105bd565b6107288161272f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156110b357600080fd5b505afa1580156110c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110eb9190615a59565b6001600160a01b0316336001600160a01b0316146111395760405162461bcd60e51b815260206004820152601a6024820152600080516020615f3e83398151915260448201526064016105bd565b611144600382612119565b6107285760405162461bcd60e51b815260206004820152601160248201527f6164642d6b65657065722d6661696c656400000000000000000000000000000060448201526064016105bd565b600061119b826127c4565b806111d757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b92915050565b600080806111ea33610574565b61122f5760405162461bcd60e51b815260206004820152601660248201527531b0b63632b916b4b996b737ba16b096b5b2b2b832b960511b60448201526064016105bd565b611237612878565b925092509250909192565b60606108596003612e75565b6005805461125b90615abb565b80601f016020809104026020016040519081016040528092919081815260200182805461128790615abb565b80156112d45780601f106112a9576101008083540402835291602001916112d4565b820191906000526020600020905b8154815290600101906020018083116112b757829003601f168201915b505050505081565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146113545760405162461bcd60e51b815260206004820152601960248201527f63616c6c65722d69732d6e6f742d7665737065722d706f6f6c0000000000000060448201526064016105bd565b6001600160a01b0381166113aa5760405162461bcd60e51b815260206004820152601c60248201527f6e65772d73747261746567792d616464726573732d69732d7a65726f0000000060448201526064016105bd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561140d57600080fd5b505afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190615a59565b6001600160a01b03161461149b5760405162461bcd60e51b815260206004820152601660248201527f6e6f742d76616c69642d6e65772d73747261746567790000000000000000000060448201526064016105bd565b6114a481612e82565b6000546040516370a0823160e01b81523060048201526115389183916001600160a01b03909116906370a082319060240160206040518083038186803b1580156114ed57600080fd5b505afa158015611501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115259190615a30565b6000546001600160a01b03169190612275565b6040516370a0823160e01b81523060048201526107289082906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561159d57600080fd5b505afa1580156115b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd29190615a30565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561162e57600080fd5b505afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116669190615a59565b6001600160a01b0316336001600160a01b0316146116b45760405162461bcd60e51b815260206004820152601a6024820152600080516020615f3e83398151915260448201526064016105bd565b6001600160a01b03811661170a5760405162461bcd60e51b815260206004820152601d60248201527f6665652d636f6c6c6563746f722d616464726573732d69732d7a65726f00000060448201526064016105bd565b6001546001600160a01b03828116911614156117685760405162461bcd60e51b815260206004820152601560248201527f6665652d636f6c6c6563746f722d69732d73616d65000000000000000000000060448201526064016105bd565b6001546040516001600160a01b038084169216907f0f06062680f9bd68e786e9980d9bb03d73d5620fc3b345e417b6eacb310b970690600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561181d57600080fd5b505afa158015611831573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118559190615a59565b6001600160a01b0316336001600160a01b0316146118a35760405162461bcd60e51b815260206004820152601a6024820152600080516020615f3e83398151915260448201526064016105bd565b6001600160a01b0381166118f95760405162461bcd60e51b815260206004820152601760248201527f737761707065722d616464726573732d69732d7a65726f00000000000000000060448201526064016105bd565b6002546001600160a01b03828116911614156119495760405162461bcd60e51b815260206004820152600f60248201526e737761707065722d69732d73616d6560881b60448201526064016105bd565b6002546040516001600160a01b038084169216907f6c953b7ec311055c20b96a42cea31e89528e375b1bf953a503db40854b3188fe90600090a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015611a0757600080fd5b505afa158015611a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3f9190615a30565b604051632e12a4f760e11b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000001690635c2549ee9060440160206040518083038186803b158015611ac657600080fd5b505afa158015611ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afe9190615b07565b6001600160801b03166108599190615aa3565b6000611b1c33610574565b611b615760405162461bcd60e51b815260206004820152601660248201527531b0b63632b916b4b996b737ba16b096b5b2b2b832b960511b60448201526064016105bd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415611be35760405162461bcd60e51b815260206004820152601f60248201527f6e6f742d616c6c6f7765642d746f2d73776565702d636f6c6c61746572616c0060448201526064016105bd565b611bec83611190565b15611c305760405162461bcd60e51b815260206004820152601460248201527306e6f742d616c6c6f7765642d746f2d73776565760641b60448201526064016105bd565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015611c9257600080fd5b505afa158015611ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cca9190615a30565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038616906370a082319060240160206040518083038186803b158015611d0f57600080fd5b505afa158015611d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d479190615a30565b90508015611e3d57600254604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529086169063dd62ed3e9060440160206040518083038186803b158015611d9a57600080fd5b505afa158015611dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd29190615a30565b811115611e1057600254611df4906001600160a01b03878116911660006130e8565b600254611e10906001600160a01b0387811691166000196130e8565b611e3b857f000000000000000000000000000000000000000000000000000000000000000083613213565b505b6040516370a0823160e01b815230600482015282907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015611e9e57600080fd5b505afa158015611eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed69190615a30565b611ee09190615a8c565b925083831015611f295760405162461bcd60e51b81526020600482015260146024820152731b9bdd0b595b9bdd59da0b585b5bdd5b9d13dd5d60621b60448201526064016105bd565b505092915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8a57600080fd5b505afa158015611f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc29190615a59565b6001600160a01b0316336001600160a01b0316146120105760405162461bcd60e51b815260206004820152601a6024820152600080516020615f3e83398151915260448201526064016105bd565b61271081106120615760405162461bcd60e51b815260206004820152601860248201527f696e76616c69642d6d61782d626f72726f772d6c696d6974000000000000000060448201526064016105bd565b8015801561206d575081155b8061207757508181115b6120c35760405162461bcd60e51b815260206004820152601d60248201527f6d61782d73686f756c642d62652d6869676865722d7468616e2d6d696e00000060448201526064016105bd565b6006546007546040805192835260208301859052820152606081018290527fedd77444afdf63401315e81ffe86d08f7865796e8ad2e11acf1d56a1393f07d59060800160405180910390a1600691909155600755565b600061212e836001600160a01b0384166132b7565b9392505050565b6001600160a01b0381166000908152600183016020526040812054151561212e565b804710156121a75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016105bd565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146121f4576040519150601f19603f3d011682016040523d82523d6000602084013e6121f9565b606091505b50509050806122705760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016105bd565b505050565b6040516001600160a01b03831660248201526044810182905261227090849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b031990931692909217909152613306565b6122f56133d8565b60025461234d907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000061356d565b565b600061212e836001600160a01b038416613885565b6040516370a0823160e01b8152306004820152600090670de0b6b3a7640000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b1580156123d057600080fd5b505afa1580156123e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124089190615a30565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166399530b066040518163ffffffff1660e01b815260040160206040518083038186803b15801561246157600080fd5b505afa158015612475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124999190615a30565b6124a39190615b22565b6108599190615b41565b60006124ba600083613978565b9150506124c8816001614067565b604051632e12a4f760e11b81523060048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015260009161266d918591612668917f00000000000000000000000000000000000000000000000000000000000000001690635c2549ee9060440160206040518083038186803b15801561255c57600080fd5b505afa158015612570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125949190615b07565b6040516359e017bd60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526001600160801b0392909216917f000000000000000000000000000000000000000000000000000000000000000016906359e017bd90602401604080518083038186803b15801561262157600080fd5b505afa158015612635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126599190615baa565b516001600160801b0316612719565b612719565b60405163f3fef3a360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063f3fef3a390604401600060405180830381600087803b1580156126fc57600080fd5b505af1158015612710573d6000803e3d6000fd5b50505050505050565b6000818310612728578161212e565b5090919050565b612738816141e4565b61278c6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836130e8565b600254610728907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031683614339565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061283757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b806111d757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161492915050565b604051636a9eee1360e11b81523060048201526000908190819081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d53ddc269060240160206040518083038186803b1580156128e057600080fd5b505afa1580156128f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129189190615a30565b604051639f2b283360e01b81523060048201529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639f2b28339060240160206040518083038186803b15801561297d57600080fd5b505afa158015612991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b59190615a30565b604051630dd3126d60e21b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063374c49b49060240160206040518083038186803b158015612a1a57600080fd5b505afa158015612a2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a529190615a30565b90506000612a5e612364565b6040516370a0823160e01b815230600482015290915060009082906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015612ac557600080fd5b505afa158015612ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afd9190615a30565b612b079190615aa3565b905080831115612b2857612b23612b1e8285615a8c565b614560565b612b3a565b612b3a612b358483615a8c565b614820565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015612b9c57600080fd5b505afa158015612bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd49190615a30565b604051632e12a4f760e11b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301529192506000917f00000000000000000000000000000000000000000000000000000000000000001690635c2549ee9060440160206040518083038186803b158015612c6157600080fd5b505afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190615b07565b6001600160801b031690506000612cb08383615aa3565b905086811115612ccb57612cc48782615a8c565b9a50612cd8565b612cd58188615a8c565b99505b6000612ce4898d615aa3565b905080841015612da7576000612cfa8583615a8c565b90508015612da557612d0b816124ad565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015612d6a57600080fd5b505afa158015612d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da29190615a30565b94505b505b612db1848a612719565b9950898411612dc1576000612dd4565b612dd4612dce8b86615a8c565b8d612719565b6040516302df682360e11b815260048101829052602481018d9052604481018c9052909c507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906305bed04690606401600060405180830381600087803b158015612e4757600080fd5b505af1158015612e5b573d6000803e3d6000fd5b50505050612e67614ae7565b505050505050505050909192565b6060600061212e83614c59565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612ee557600080fd5b505afa158015612ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1d9190615a59565b6001600160a01b031614612f735760405162461bcd60e51b815260206004820152601360248201527f77726f6e672d726563656970742d746f6b656e0000000000000000000000000060448201526064016105bd565b604051630dd3126d60e21b8152306004820152613015907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063374c49b49060240160206040518083038186803b158015612fd657600080fd5b505afa158015612fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300e9190615a30565b6000614067565b604051632e12a4f760e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152610728917f000000000000000000000000000000000000000000000000000000000000000090911690635c2549ee9060440160206040518083038186803b1580156130a257600080fd5b505afa1580156130b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130da9190615b07565b6001600160801b03166124ad565b8015806131715750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b15801561313757600080fd5b505afa15801561314b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061316f9190615a30565b155b6131e35760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016105bd565b6040516001600160a01b03831660248201526044810182905261227090849063095ea7b360e01b906064016122a1565b600254604051636ccb2b0160e01b81526001600160a01b038581166004830152848116602483015260448201849052600160648301523060848301526000921690636ccb2b019060a401602060405180830381600087803b15801561327757600080fd5b505af115801561328b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132af9190615a30565b949350505050565b60008181526001830160205260408120546132fe575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556111d7565b5060006111d7565b600061335b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614cb59092919063ffffffff16565b80519091501561227057808060200190518101906133799190615c05565b6122705760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105bd565b604051635b81a7bf60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152600160448301527f0000000000000000000000000000000000000000000000000000000000000000169063b7034f7e90606401600060405180830381600087803b15801561346857600080fd5b505af115801561347c573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506370a082319060240160206040518083038186803b1580156134e257600080fd5b505afa1580156134f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061351a9190615a30565b90508015610728576107287f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000083614cc4565b6000836001600160a01b0316638bc6beb26040518163ffffffff1660e01b815260040160206040518083038186803b1580156135a857600080fd5b505afa1580156135bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e09190615a59565b90506001600160a01b0381161561387f5760405163d279c19160e01b81523060048201526001600160a01b0382169063d279c19190602401600060405180830381600087803b15801561363257600080fd5b505af1158015613646573d6000803e3d6000fd5b505050506000816001600160a01b031663c4f59f9b6040518163ffffffff1660e01b815260040160006040518083038186803b15801561368557600080fd5b505afa158015613699573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526136c19190810190615c27565b805190915060005b818110156127105760008382815181106136e5576136e5615cd9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561373057600080fd5b505afa158015613744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137689190615a30565b90506000811180156137a55750856001600160a01b031684838151811061379157613791615cd9565b60200260200101516001600160a01b031614155b1561386e57866001600160a01b0316636ccb2b018584815181106137cb576137cb615cd9565b60209081029190910101516040516001600160e01b031960e084901b1681526001600160a01b0391821660048201529089166024820152604481018490526001606482015230608482015260a401602060405180830381600087803b15801561383357600080fd5b505af1925050508015613863575060408051601f3d908101601f1916820190925261386091810190615a30565b60015b61386c5761386e565b505b5061387881615cef565b90506136c9565b50505050565b6000818152600183016020526040812054801561396e5760006138a9600183615a8c565b85549091506000906138bd90600190615a8c565b90508181146139225760008660000182815481106138dd576138dd615cd9565b906000526020600020015490508087600001848154811061390057613900615cd9565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061393357613933615d0a565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506111d7565b60009150506111d7565b600080831580613986575082155b6139d25760405162461bcd60e51b815260206004820152601160248201527f616c6c2d696e7075742d67742d7a65726f00000000000000000000000000000060448201526064016105bd565b604051630dd3126d60e21b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063374c49b49060240160206040518083038186803b158015613a3457600080fd5b505afa158015613a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a6c9190615a30565b905060075460001415613a8457600092509050614060565b604051632e12a4f760e11b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690635c2549ee9060440160206040518083038186803b158015613b1057600080fd5b505afa158015613b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b489190615b07565b6001600160801b0316905060008615613b6c57613b658783615aa3565b9050613b81565b85821115613b8157613b7e8683615a8c565b90505b604051631d9df61760e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690633b3bec2e906024016101006040518083038186803b158015613c0857600080fd5b505afa158015613c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c409190615d49565b60408181015190516341976e0960e01b81526001600160a01b0391821660048201529192506000917f0000000000000000000000000000000000000000000000000000000000000000909116906341976e099060240160206040518083038186803b158015613cae57600080fd5b505afa158015613cc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ce69190615a30565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166341976e097f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7dad6bd6040518163ffffffff1660e01b815260040160206040518083038186803b158015613d7257600080fd5b505afa158015613d86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613daa9190615a59565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015613de957600080fd5b505afa158015613dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e219190615a30565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015613e7e57600080fd5b505afa158015613e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb69190615e13565b613ec190600a615f12565b613ed390670de0b6b3a7640000615b22565b608085015167ffffffffffffffff16613eec8588615b22565b613ef69190615b22565b613f009190615b41565b90506000827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015613f5e57600080fd5b505afa158015613f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f969190615e13565b613fa190600a615f12565b613fab9084615b22565b613fb59190615b41565b905080613fd057600088995099505050505050505050614060565b600061271060075483613fe39190615b22565b613fed9190615b41565b90506000612710600654846140029190615b22565b61400c9190615b41565b9050818a111561402757614020818b615a8c565b9a50614055565b89811115614055576140398a82615a8c565b9b506000614045614d60565b9050808d111561405357809c505b505b505050505050505050505b9250929050565b81156107c2576000614077612364565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b1580156140d657600080fd5b505afa1580156140ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061410e9190615a30565b6141189190615aa3565b9050808311156141db578115614130576141306122ed565b604051630dd3126d60e21b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063374c49b49060240160206040518083038186803b15801561419257600080fd5b505afa1580156141a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ca9190615a30565b90506141d9612b1e8383615a8c565b505b61227083614eaa565b6141ed81614f52565b6002546001600160a01b0390811690614249907f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000846130e8565b61427d6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682846130e8565b6142d16001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000846130e8565b6143056001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682846130e8565b6107c26001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682846130e8565b6000836001600160a01b0316638bc6beb26040518163ffffffff1660e01b815260040160206040518083038186803b15801561437457600080fd5b505afa158015614388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143ac9190615a59565b90506001600160a01b0381161561387f576000816001600160a01b031663c4f59f9b6040518163ffffffff1660e01b815260040160006040518083038186803b1580156143f857600080fd5b505afa15801561440c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526144349190810190615c27565b805190915060005b818110156127105782818151811061445657614456615cd9565b6020908102919091010151604051636eb1769f60e11b81523060048201526001600160a01b0388811660248301529091169063dd62ed3e9060440160206040518083038186803b1580156144a957600080fd5b505afa1580156144bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144e19190615a30565b6145215761451c86868584815181106144fc576144fc615cd9565b60200260200101516001600160a01b03166130e89092919063ffffffff16565b614550565b6145398660008584815181106144fc576144fc615cd9565b61455086868584815181106144fc576144fc615cd9565b61455981615cef565b905061443c565b60006145ad7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084614fa6565b905080156107c25760006127106008546127106145ca9190615aa3565b6145d49084615b22565b6145de9190615b41565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561464357600080fd5b505afa158015614657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467b9190615a30565b90508082111561473e576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663f3fef3a37f00000000000000000000000000000000000000000000000000000000000000006146df8486615a8c565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561472557600080fd5b505af1158015614739573d6000803e3d6000fd5b505050505b6002546040516381cc619b60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526044820187905260648201859052306084830152909116906381cc619b9060a401602060405180830381600087803b1580156147e157600080fd5b505af11580156147f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148199190615a30565b5050505050565b8015610728576040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561488857600080fd5b505afa15801561489c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148c09190615a30565b905080821115614976576148dc6148d78284615a8c565b615282565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561493b57600080fd5b505afa15801561494f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149739190615a30565b90505b80156107c25760006149888383612719565b905060006149d77f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084614fa6565b905060006127106008546127106149ee9190615a8c565b6149f89084615b22565b614a029190615b41565b600254604051636ccb2b0160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526044820187905260648201849052306084830152929350911690636ccb2b019060a401602060405180830381600087803b158015614aa757600080fd5b505af1158015614abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614adf9190615a30565b505050505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015614b4957600080fd5b505afa158015614b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b819190615a30565b9050600080614b91836000613978565b90925090508015614c4757614ba7816000614067565b6040516370a0823160e01b8152306004820152612270907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015614c0a57600080fd5b505afa158015614c1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c429190615a30565b6154a2565b614c50836154a2565b6122708261551d565b606081600001805480602002602001604051908101604052809291908181526020018280548015614ca957602002820191906000526020600020905b815481526020019060010190808311614c95575b50505050509050919050565b60606132af84846000856155ce565b600254604051636ccb2b0160e01b81526001600160a01b0385811660048301528481166024830152604482018490526001606483015230608483015290911690636ccb2b019060a401602060405180830381600087803b158015614d2757600080fd5b505af1925050508015614d57575060408051601f3d908101601f19168201909252614d5491810190615a30565b60015b61387f57505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015614dbc57600080fd5b505afa158015614dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614df49190615a30565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638285ef406040518163ffffffff1660e01b815260040160206040518083038186803b158015614e5157600080fd5b505afa158015614e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e899190615a30565b9050808211614e99576000614ea3565b614ea38183615a8c565b9250505090565b614eb381615282565b604051631e573fb760e31b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063f2b9fdb8906044015b600060405180830381600087803b158015614f3e57600080fd5b505af1158015614819573d6000803e3d6000fd5b6107286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836130e8565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166341976e09614fe1876156f6565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b15801561502057600080fd5b505afa158015615034573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150589190615a30565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166341976e09615094876156f6565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b1580156150d357600080fd5b505afa1580156150e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061510b9190615a30565b905060008211801561511d5750600081115b6151575760405162461bcd60e51b815260206004820152600b60248201526a383934b1b296b2b93937b960a91b60448201526064016105bd565b80866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561519157600080fd5b505afa1580156151a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151c99190615e13565b6151d490600a615f12565b6151de9190615b22565b856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561521757600080fd5b505afa15801561522b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061524f9190615e13565b61525a90600a615f12565b6152648685615b22565b61526e9190615b22565b6152789190615b41565b9695505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166399530b066040518163ffffffff1660e01b815260040160206040518083038186803b1580156152dd57600080fd5b505afa1580156152f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906153159190615a30565b905060008161532c84670de0b6b3a7640000615b22565b6153369190615b41565b9050670de0b6b3a764000061534b8383615b22565b6153559190615b41565b8311615361578061536c565b61536c816001615aa3565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b1580156153d157600080fd5b505afa1580156153e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906154099190615a30565b9050808211615418578161541a565b805b9150811561387f57604051632e1a7d4d60e01b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561548457600080fd5b505af1158015615498573d6000803e3d6000fd5b5050505050505050565b801561072857604051631e573fb760e31b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063f2b9fdb890604401614f24565b80156107285760405163f3fef3a360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063f3fef3a390604401600060405180830381600087803b1580156155ad57600080fd5b505af11580156155c1573d6000803e3d6000fd5b5050505061072881615865565b60608247101561562f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105bd565b843b61567d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105bd565b600080866001600160a01b031685876040516156999190615f21565b60006040518083038185875af1925050503d80600081146156d6576040519150601f19603f3d011682016040523d82523d6000602084013e6156db565b606091505b50915091506156eb8282866158b2565b979650505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146157d457604051631d9df61760e11b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633b3bec2e906024016101006040518083038186803b15801561579357600080fd5b505afa1580156157a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906157cb9190615d49565b604001516111d7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7dad6bd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561582d57600080fd5b505afa158015615841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d79190615a59565b60405163b6b55f2560e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b6b55f2590602401614f24565b606083156158c157508161212e565b8251156158d15782518084602001fd5b8160405162461bcd60e51b81526004016105bd91906159af565b6001600160a01b038116811461072857600080fd5b60006020828403121561591257600080fd5b813561212e816158eb565b60006020828403121561592f57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156159775783516001600160a01b031683529284019291840191600101615952565b50909695505050505050565b60005b8381101561599e578181015183820152602001615986565b8381111561387f5750506000910152565b60208152600082518060208401526159ce816040850160208701615983565b601f01601f19169190910160400192915050565b600080604083850312156159f557600080fd5b8235615a00816158eb565b946020939093013593505050565b60008060408385031215615a2157600080fd5b50508035926020909101359150565b600060208284031215615a4257600080fd5b5051919050565b8051615a54816158eb565b919050565b600060208284031215615a6b57600080fd5b815161212e816158eb565b634e487b7160e01b600052601160045260246000fd5b600082821015615a9e57615a9e615a76565b500390565b60008219821115615ab657615ab6615a76565b500190565b600181811c90821680615acf57607f821691505b60208210811415610a3e57634e487b7160e01b600052602260045260246000fd5b80516001600160801b0381168114615a5457600080fd5b600060208284031215615b1957600080fd5b61212e82615af0565b6000816000190483118215151615615b3c57615b3c615a76565b500290565b600082615b5e57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715615ba257615ba2615b63565b604052919050565b600060408284031215615bbc57600080fd5b6040516040810181811067ffffffffffffffff82111715615bdf57615bdf615b63565b604052615beb83615af0565b8152615bf960208401615af0565b60208201529392505050565b600060208284031215615c1757600080fd5b8151801515811461212e57600080fd5b60006020808385031215615c3a57600080fd5b825167ffffffffffffffff80821115615c5257600080fd5b818501915085601f830112615c6657600080fd5b815181811115615c7857615c78615b63565b8060051b9150615c89848301615b79565b8181529183018401918481019088841115615ca357600080fd5b938501935b83851015615ccd5784519250615cbd836158eb565b8282529385019390850190615ca8565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415615d0357615d03615a76565b5060010190565b634e487b7160e01b600052603160045260246000fd5b805160ff81168114615a5457600080fd5b805167ffffffffffffffff81168114615a5457600080fd5b6000610100808385031215615d5d57600080fd5b6040519081019067ffffffffffffffff82118183101715615d8057615d80615b63565b81604052615d8d84615d20565b815260208401519150615d9f826158eb565b816020820152615db160408501615a49565b6040820152615dc260608501615d31565b6060820152615dd360808501615d31565b6080820152615de460a08501615d31565b60a0820152615df560c08501615d31565b60c0820152615e0660e08501615af0565b60e0820152949350505050565b600060208284031215615e2557600080fd5b61212e82615d20565b600181815b80851115615e69578160001904821115615e4f57615e4f615a76565b80851615615e5c57918102915b93841c9390800290615e33565b509250929050565b600082615e80575060016111d7565b81615e8d575060006111d7565b8160018114615ea35760028114615ead57615ec9565b60019150506111d7565b60ff841115615ebe57615ebe615a76565b50506001821b6111d7565b5060208310610133831016604e8410600b8410161715615eec575081810a6111d7565b615ef68383615e2e565b8060001904821115615f0a57615f0a615a76565b029392505050565b600061212e60ff841683615e71565b60008251615f33818460208701615983565b919091019291505056fe63616c6c65722d69732d6e6f742d7468652d676f7665726e6f72000000000000a264697066735822122063300a2883a52e79dfcff710ca347e4b4848594c2068d05317f9b3a0f3718e5764736f6c63430008090033000000000000000000000000ef4f4604106de23cdadfeae08fcc34602cb475c1000000000000000000000000229f19942612a8dbdec3643cb23f88685ccd56a50000000000000000000000001b0e765f6224c21223aea2af16c1c46e38885a40000000000000000000000000c00e94cb662c3520282e6f5717214004a7f26888000000000000000000000000c3d688b66703497daa19211eedff47f25384cdc3000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000a8b607aa09b6a2e306f93e74c282fb13f6a804520000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001e436f6d706f756e6456335f5665737065725f58795f4c494e4b5f555344430000