0 txs
0 calls
constructor
constructor(address _factory, address _WETH)
functions
factory
viewfunction factory() view returns (address)
getAmountIn
purefunction getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) pure returns (uint256 amountIn)
getAmountOut
purefunction getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) pure returns (uint256 amountOut)
getAmountsIn
viewfunction getAmountsIn(uint256 amountOut, address[] path) view returns (uint256[] amounts)
getAmountsOut
viewfunction getAmountsOut(uint256 amountIn, address[] path) view returns (uint256[] amounts)
getTokenInPair
viewfunction getTokenInPair(address pair, address token) view returns (uint256 balance)
owner
viewfunction owner() view returns (address)
quote
purefunction quote(uint256 amountA, uint256 reserveA, uint256 reserveB) pure returns (uint256 amountB)
vault
viewfunction vault() view returns (address)
WETH
viewfunction WETH() view returns (address)
addLiquidity
nonpayablefunction addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns (uint256 amountA, uint256 amountB, uint256 liquidity)
addLiquidityETH
payablefunction addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity)
changeOwner
nonpayablefunction changeOwner(address _owner)
removeLiquidity
nonpayablefunction removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns (uint256 amountA, uint256 amountB)
removeLiquidityETH
nonpayablefunction removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns (uint256 amountToken, uint256 amountETH)
removeLiquidityETHSupportingFeeOnTransferTokens
nonpayablefunction removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns (uint256 amountETH)
removeLiquidityETHWithPermit
nonpayablefunction removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns (uint256 amountToken, uint256 amountETH)
removeLiquidityETHWithPermitSupportingFeeOnTransferTokens
nonpayablefunction removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns (uint256 amountETH)
removeLiquidityWithPermit
nonpayablefunction removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) returns (uint256 amountA, uint256 amountB)
setVault
nonpayablefunction setVault(address vaultAddress)
swapETHForExactTokens
payablefunction swapETHForExactTokens(uint256 amountOut, address[] path, address to, uint256 deadline) payable returns (uint256[] amounts)
swapExactETHForTokens
payablefunction swapExactETHForTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable returns (uint256[] amounts)
swapExactETHForTokensSupportingFeeOnTransferTokens
payablefunction swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] path, address to, uint256 deadline) payable
swapExactTokensForETH
nonpayablefunction swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns (uint256[] amounts)
swapExactTokensForETHSupportingFeeOnTransferTokens
nonpayablefunction swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline)
swapExactTokensForTokens
nonpayablefunction swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns (uint256[] amounts)
swapExactTokensForTokensSupportingFeeOnTransferTokens
nonpayablefunction swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline)
swapTokensForExactETH
nonpayablefunction swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns (uint256[] amounts)
swapTokensForExactTokens
nonpayablefunction swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] path, address to, uint256 deadline) returns (uint256[] amounts)
take
nonpayablefunction take(address token, uint256 amount)
events
No events.
errors
No errors.
creation bytecode
0x60c060405234801561001057600080fd5b5060405162004bf838038062004bf88339818101604052604081101561003557600080fd5b5080516020909101516001600160601b0319606092831b8116608052600180546001600160a01b03191633179055911b1660a05260805160601c60a05160601c614a6662000192600039806101e15280610e6a5280610f1e528061145652806116345280611a8c5280611bac5280611c185280611cea528061205a52806120f8528061213252806121da52806126c7528061293152806129875280612aaa5280612dbe5280612e725280612efc5280613cb55280613d06525080610fac5280611066528061116d52806111a652806112e1528061139b52806114e4528061161252806117655280611b1e5280611b515280611d7d5280611e365280611f1d52806120d65280612271528061243a528061264c528061267552806126a5528061281252806129655280612b3d5280612bf3528061348e52806134d652806139685280613aba52806141d5528061428e52806143415250614a666000f3fe6080604052600436106101d15760003560e01c80638803dbee116100f7578063baa2abde11610095578063e8e3370011610064578063e8e3370014610cbe578063f305d71914610d3e578063fb3bdb4114610d84578063fbfa77cf14610e085761020a565b8063baa2abde14610b24578063c45a015514610b81578063d06ca61f14610b96578063ded9382a14610c4b5761020a565b8063ad5c4648116100d1578063ad5c464814610a02578063ad615dec14610a17578063af2979eb14610a4d578063b6f9de9514610aa05761020a565b80638803dbee146109085780638da5cb5b1461099e578063a6f9dae1146109cf5761020a565b8063521802081161016f5780636f7abe6a1161013e5780636f7abe6a1461077d578063791ac947146107b85780637ff36ab51461084e57806385f8c259146108d25761020a565b806352180208146106085780635b0d5984146106415780635c11d795146106b45780636817031b1461074a5761020a565b80631f00ca74116101ab5780631f00ca74146103a95780632195995c1461045e57806338ed1739146104dc5780634a25d94a146105725761020a565b806302751cec1461020f578063054d50d41461027b57806318cbafe5146102c35761020a565b3661020a57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461020857fe5b005b600080fd5b34801561021b57600080fd5b50610262600480360360c081101561023257600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610e1d565b6040805192835260208301919091528051918290030190f35b34801561028757600080fd5b506102b16004803603606081101561029e57600080fd5b5080359060208101359060400135610eb9565b60408051918252519081900360200190f35b3480156102cf57600080fd5b50610359600480360360a08110156102e657600080fd5b813591602081013591810190606081016040820135600160201b81111561030c57600080fd5b82018360208201111561031e57600080fd5b803590602001918460208302840111600160201b8311171561033f57600080fd5b91935091506001600160a01b038135169060200135610ece565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561039557818101518382015260200161037d565b505050509050019250505060405180910390f35b3480156103b557600080fd5b50610359600480360360408110156103cc57600080fd5b81359190810190604081016020820135600160201b8111156103ed57600080fd5b8201836020820111156103ff57600080fd5b803590602001918460208302840111600160201b8311171561042057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611166945050505050565b34801561046a57600080fd5b50610262600480360361016081101561048257600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561119c565b3480156104e857600080fd5b50610359600480360360a08110156104ff57600080fd5b813591602081013591810190606081016040820135600160201b81111561052557600080fd5b82018360208201111561053757600080fd5b803590602001918460208302840111600160201b8311171561055857600080fd5b91935091506001600160a01b038135169060200135611296565b34801561057e57600080fd5b50610359600480360360a081101561059557600080fd5b813591602081013591810190606081016040820135600160201b8111156105bb57600080fd5b8201836020820111156105cd57600080fd5b803590602001918460208302840111600160201b831117156105ee57600080fd5b91935091506001600160a01b038135169060200135611406565b34801561061457600080fd5b506102086004803603604081101561062b57600080fd5b506001600160a01b038135169060200135611592565b34801561064d57600080fd5b506102b1600480360361014081101561066557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e0820135169061010081013590610120013561160a565b3480156106c057600080fd5b50610208600480360360a08110156106d757600080fd5b813591602081013591810190606081016040820135600160201b8111156106fd57600080fd5b82018360208201111561070f57600080fd5b803590602001918460208302840111600160201b8311171561073057600080fd5b91935091506001600160a01b038135169060200135611718565b34801561075657600080fd5b506102086004803603602081101561076d57600080fd5b50356001600160a01b0316611995565b34801561078957600080fd5b506102b1600480360360408110156107a057600080fd5b506001600160a01b0381358116916020013516611a13565b3480156107c457600080fd5b50610208600480360360a08110156107db57600080fd5b813591602081013591810190606081016040820135600160201b81111561080157600080fd5b82018360208201111561081357600080fd5b803590602001918460208302840111600160201b8311171561083457600080fd5b91935091506001600160a01b038135169060200135611a3e565b6103596004803603608081101561086457600080fd5b81359190810190604081016020820135600160201b81111561088557600080fd5b82018360208201111561089757600080fd5b803590602001918460208302840111600160201b831117156108b857600080fd5b91935091506001600160a01b038135169060200135611ca2565b3480156108de57600080fd5b506102b1600480360360608110156108f557600080fd5b5080359060208101359060400135611ec5565b34801561091457600080fd5b50610359600480360360a081101561092b57600080fd5b813591602081013591810190606081016040820135600160201b81111561095157600080fd5b82018360208201111561096357600080fd5b803590602001918460208302840111600160201b8311171561098457600080fd5b91935091506001600160a01b038135169060200135611ed2565b3480156109aa57600080fd5b506109b3611fcb565b604080516001600160a01b039092168252519081900360200190f35b3480156109db57600080fd5b50610208600480360360208110156109f257600080fd5b50356001600160a01b0316611fda565b348015610a0e57600080fd5b506109b3612058565b348015610a2357600080fd5b506102b160048036036060811015610a3a57600080fd5b508035906020810135906040013561207c565b348015610a5957600080fd5b506102b1600480360360c0811015610a7057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612089565b61020860048036036080811015610ab657600080fd5b81359190810190604081016020820135600160201b811115610ad757600080fd5b820183602082011115610ae957600080fd5b803590602001918460208302840111600160201b83111715610b0a57600080fd5b91935091506001600160a01b038135169060200135612194565b348015610b3057600080fd5b50610262600480360360e0811015610b4757600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356123ec565b348015610b8d57600080fd5b506109b361264a565b348015610ba257600080fd5b5061035960048036036040811015610bb957600080fd5b81359190810190604081016020820135600160201b811115610bda57600080fd5b820183602082011115610bec57600080fd5b803590602001918460208302840111600160201b83111715610c0d57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061266e945050505050565b348015610c5757600080fd5b506102626004803603610140811015610c6f57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e0820135169061010081013590610120013561269b565b348015610cca57600080fd5b50610d206004803603610100811015610ce257600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356127af565b60408051938452602084019290925282820152519081900360600190f35b610d20600480360360c0811015610d5457600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a001356128e2565b61035960048036036080811015610d9a57600080fd5b81359190810190604081016020820135600160201b811115610dbb57600080fd5b820183602082011115610dcd57600080fd5b803590602001918460208302840111600160201b83111715610dee57600080fd5b91935091506001600160a01b038135169060200135612a62565b348015610e1457600080fd5b506109b3612c9a565b6000808242811015610e64576040805162461bcd60e51b81526020600482015260186024820152600080516020614a11833981519152604482015290519081900360640190fd5b610e93897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a6123ec565b9093509150610ea3898685612ca9565b610ead8583612dba565b50965096945050505050565b6000610ec6848484612f87565b949350505050565b60608142811015610f14576040805162461bcd60e51b81526020600482015260186024820152600080516020614a11833981519152604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866000198101818110610f4e57fe5b905060200201356001600160a01b03166001600160a01b031614610fa7576040805162461bcd60e51b815260206004820152601d602482015260008051602061492e833981519152604482015290519081900360640190fd5b6110057f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061305f92505050565b9150868260018451038151811061101857fe5b6020026020010151101561105d5760405162461bcd60e51b815260040180806020018281038252602b815260200180614997602b913960400191505060405180910390fd5b6110fb336110c47f00000000000000000000000000000000000000000000000000000000000000008989600081811061109257fe5b905060200201356001600160a01b03168a8a60018181106110af57fe5b905060200201356001600160a01b03166131ab565b888860008181106110d157fe5b905060200201356001600160a01b0316856000815181106110ee57fe5b602002602001015161326b565b61113a828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506133d9915050565b61115b848360018551038151811061114e57fe5b6020026020010151612dba565b509695505050505050565b60606111937f0000000000000000000000000000000000000000000000000000000000000000848461366f565b90505b92915050565b60008060006111cc7f00000000000000000000000000000000000000000000000000000000000000008f8f6131ab565b90506000876111db578c6111df565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561125557600080fd5b505af1158015611269573d6000803e3d6000fd5b5050505061127c8f8f8f8f8f8f8f6123ec565b809450819550505050509b509b9950505050505050505050565b606081428110156112dc576040805162461bcd60e51b81526020600482015260186024820152600080516020614a11833981519152604482015290519081900360640190fd5b61133a7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061305f92505050565b9150868260018451038151811061134d57fe5b602002602001015110156113925760405162461bcd60e51b815260040180806020018281038252602b815260200180614997602b913960400191505060405180910390fd5b6113c7336110c47f00000000000000000000000000000000000000000000000000000000000000008989600081811061109257fe5b61115b828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506133d9915050565b6060814281101561144c576040805162461bcd60e51b81526020600482015260186024820152600080516020614a11833981519152604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168686600019810181811061148657fe5b905060200201356001600160a01b03166001600160a01b0316146114df576040805162461bcd60e51b815260206004820152601d602482015260008051602061492e833981519152604482015290519081900360640190fd5b61153d7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061366f92505050565b9150868260008151811061154d57fe5b6020026020010151111561105d5760405162461bcd60e51b81526004018080602001828103825260278152602001806149076027913960400191505060405180910390fd5b6000546001600160a01b031633146115ee576040805162461bcd60e51b815260206004820152601a6024820152792ab734b9bbb0b82b192937baba32b91d102327a92124a22222a760311b604482015290519081900360640190fd5b6000546116069083906001600160a01b0316836137a7565b5050565b6000806116587f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006131ab565b9050600086611667578b61166b565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156116e157600080fd5b505af11580156116f5573d6000803e3d6000fd5b505050506117078d8d8d8d8d8d612089565b9d9c50505050505050505050505050565b804281101561175c576040805162461bcd60e51b81526020600482015260186024820152600080516020614a11833981519152604482015290519081900360640190fd5b6117d1336117ae7f00000000000000000000000000000000000000000000000000000000000000008888600081811061179157fe5b905060200201356001600160a01b0316898960018181106110af57fe5b878760008181106117bb57fe5b905060200201356001600160a01b03168a61326b565b6000858560001981018181106117e357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561183f57600080fd5b505afa158015611853573d6000803e3d6000fd5b505050506040513d602081101561186957600080fd5b505160408051602088810282810182019093528882529293506118ab929091899189918291850190849080828437600092019190915250889250613911915050565b8661194e82888860001981018181106118c057fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561191c57600080fd5b505afa158015611930573d6000803e3d6000fd5b505050506040513d602081101561194657600080fd5b505190613c47565b101561198b5760405162461bcd60e51b815260040180806020018281038252602b815260200180614997602b913960400191505060405180910390fd5b5050505050505050565b6001546001600160a01b031633146119f1576040805162461bcd60e51b815260206004820152601a6024820152792ab734b9bbb0b82b192937baba32b91d102327a92124a22222a760311b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b8042811015611a82576040805162461bcd60e51b81526020600482015260186024820152600080516020614a11833981519152604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001685856000198101818110611abc57fe5b905060200201356001600160a01b03166001600160a01b031614611b15576040805162461bcd60e51b815260206004820152601d602482015260008051602061492e833981519152604482015290519081900360640190fd5b611b4a336117ae7f00000000000000000000000000000000000000000000000000000000000000008888600081811061179157fe5b6000611ba27f000000000000000000000000000000000000000000000000000000000000000087876000198101818110611b8057fe5b905060200201356001600160a01b0316888860028b8b9050038181106110af57fe5b90506000611bd0827f0000000000000000000000000000000000000000000000000000000000000000611a13565b9050611c10878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613911915050565b6000611c3c837f0000000000000000000000000000000000000000000000000000000000000000611a13565b90506000611c4a8383613c47565b905089811015611c8b5760405162461bcd60e51b815260040180806020018281038252602b815260200180614997602b913960400191505060405180910390fd5b611c958782612dba565b5050505050505050505050565b60608142811015611ce8576040805162461bcd60e51b81526020600482015260186024820152600080516020614a11833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611d1f57fe5b905060200201356001600160a01b03166001600160a01b031614611d78576040805162461bcd60e51b815260206004820152601d602482015260008051602061492e833981519152604482015290519081900360640190fd5b611dd67f00000000000000000000000000000000000000000000000000000000000000003488888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061305f92505050565b91508682600184510381518110611de957fe5b60200260200101511015611e2e5760405162461bcd60e51b815260040180806020018281038252602b815260200180614997602b913960400191505060405180910390fd5b611e7c611e627f00000000000000000000000000000000000000000000000000000000000000008888600081811061179157fe5b83600081518110611e6f57fe5b6020026020010151613c97565b611ebb828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506133d9915050565b5095945050505050565b6000610ec6848484613d89565b60608142811015611f18576040805162461bcd60e51b81526020600482015260186024820152600080516020614a11833981519152604482015290519081900360640190fd5b611f767f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061366f92505050565b91508682600081518110611f8657fe5b602002602001015111156113925760405162461bcd60e51b81526004018080602001828103825260278152602001806149076027913960400191505060405180910390fd5b6001546001600160a01b031681565b6001546001600160a01b03163314612036576040805162461bcd60e51b815260206004820152601a6024820152792ab734b9bbb0b82b192937baba32b91d102327a92124a22222a760311b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610ec6848484613e61565b600081428110156120cf576040805162461bcd60e51b81526020600482015260186024820152600080516020614a11833981519152604482015290519081900360640190fd5b600061211c7f00000000000000000000000000000000000000000000000000000000000000008a7f00000000000000000000000000000000000000000000000000000000000000006131ab565b9050600061212a828b611a13565b905061215b8a7f00000000000000000000000000000000000000000000000000000000000000008b8b8b308b6123ec565b945061217d90508a876121786121718684611a13565b8590613c47565b612ca9565b6121878685612dba565b5050509695505050505050565b80428110156121d8576040805162461bcd60e51b81526020600482015260186024820152600080516020614a11833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168585600081811061220f57fe5b905060200201356001600160a01b03166001600160a01b031614612268576040805162461bcd60e51b815260206004820152601d602482015260008051602061492e833981519152604482015290519081900360640190fd5b346122a161229b7f0000000000000000000000000000000000000000000000000000000000000000888860008161179157fe5b82613c97565b6000868660001981018181106122b357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561230f57600080fd5b505afa158015612323573d6000803e3d6000fd5b505050506040513d602081101561233957600080fd5b5051604080516020898102828101820190935289825292935061237b9290918a918a918291850190849080828437600092019190915250899250613911915050565b8761194e828989600019810181811061239057fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561191c57600080fd5b6000808242811015612433576040805162461bcd60e51b81526020600482015260186024820152600080516020614a11833981519152604482015290519081900360640190fd5b60006124607f00000000000000000000000000000000000000000000000000000000000000008c8c6131ab565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b1580156124bb57600080fd5b505af11580156124cf573d6000803e3d6000fd5b505050506040513d60208110156124e557600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561253257600080fd5b505af1158015612546573d6000803e3d6000fd5b505050506040513d604081101561255c57600080fd5b508051602090910151909250905060006125768e8e613f07565b509050806001600160a01b03168e6001600160a01b03161461259957818361259c565b82825b90975095506125ad848f898c613fe5565b506125ba848e888c613fe5565b508a8710156125fa5760405162461bcd60e51b815260040180806020018281038252602681526020018061494e6026913960400191505060405180910390fd5b898610156126395760405162461bcd60e51b81526004018080602001828103825260268152602001806148716026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606111937f0000000000000000000000000000000000000000000000000000000000000000848461305f565b60008060006126eb7f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006131ab565b90506000876126fa578c6126fe565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561277457600080fd5b505af1158015612788573d6000803e3d6000fd5b5050505061279a8e8e8e8e8e8e610e1d565b909f909e509c50505050505050505050505050565b600080600083428110156127f8576040805162461bcd60e51b81526020600482015260186024820152600080516020614a11833981519152604482015290519081900360640190fd5b6128068c8c8c8c8c8c6141c5565b909450925060006128387f00000000000000000000000000000000000000000000000000000000000000008e8e6131ab565b905061284633828f8861326b565b61285233828e8761326b565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b1580156128a157600080fd5b505af11580156128b5573d6000803e3d6000fd5b505050506040513d60208110156128cb57600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561292b576040805162461bcd60e51b81526020600482015260186024820152600080516020614a11833981519152604482015290519081900360640190fd5b6129598a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c6141c5565b909450925060006129ab7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006131ab565b90506129b933828d8861326b565b6129c38185613c97565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015612a1257600080fd5b505af1158015612a26573d6000803e3d6000fd5b505050506040513d6020811015612a3c57600080fd5b5051925034841015612a5457612a5433853403614456565b505096509650969350505050565b60608142811015612aa8576040805162461bcd60e51b81526020600482015260186024820152600080516020614a11833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110612adf57fe5b905060200201356001600160a01b03166001600160a01b031614612b38576040805162461bcd60e51b815260206004820152601d602482015260008051602061492e833981519152604482015290519081900360640190fd5b612b967f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061366f92505050565b91503482600081518110612ba657fe5b60200260200101511115612beb5760405162461bcd60e51b81526004018080602001828103825260278152602001806149076027913960400191505060405180910390fd5b612c1f611e627f00000000000000000000000000000000000000000000000000000000000000008888600081811061179157fe5b612c5e828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506133d9915050565b81600081518110612c6b57fe5b6020026020010151341115611ebb57611ebb3383600081518110612c8b57fe5b60200260200101513403614456565b6000546001600160a01b031681565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612cf857600080fd5b505afa158015612d0c573d6000803e3d6000fd5b505050506040513d6020811015612d2257600080fd5b5051905081811015612da9576000546001600160a01b0316631268754f85612d4a8585613c47565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015612d9057600080fd5b505af1158015612da4573d6000803e3d6000fd5b505050505b612db48484846137a7565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612e2957600080fd5b505afa158015612e3d573d6000803e3d6000fd5b505050506040513d6020811015612e5357600080fd5b5051905081811015612efa576000546001600160a01b0316631268754f7f0000000000000000000000000000000000000000000000000000000000000000612e9b8585613c47565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015612ee157600080fd5b505af1158015612ef5573d6000803e3d6000fd5b505050505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612f6057600080fd5b505af1158015612f74573d6000803e3d6000fd5b50505050612f828383614456565b505050565b6000808411612fc75760405162461bcd60e51b815260040180806020018281038252602b8152602001806149e6602b913960400191505060405180910390fd5b600083118015612fd75750600082115b6130125760405162461bcd60e51b81526004018080602001828103825260288152602001806148976028913960400191505060405180910390fd5b6000613020856103e5614549565b9050600061302e8285614549565b9050600061304883613042886103e8614549565b906145ac565b905080828161305357fe5b04979650505050505050565b60606002825110156130b8576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff811180156130d057600080fd5b506040519080825280602002602001820160405280156130fa578160200160208202803683370190505b509050828160008151811061310b57fe5b60200260200101818152505060005b60018351038110156131a35760008061315d8786858151811061313957fe5b602002602001015187866001018151811061315057fe5b60200260200101516145fb565b9150915061317f84848151811061317057fe5b60200260200101518383612f87565b84846001018151811061318e57fe5b6020908102919091010152505060010161311a565b509392505050565b60008060006131ba8585613f07565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f4688139b4adfcc9aed91a4b4e43d25483fe2f137b4d6589a7728186db0f1de59609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156132ba57600080fd5b505afa1580156132ce573d6000803e3d6000fd5b505050506040513d60208110156132e457600080fd5b505190506132f4838630856146c2565b6133a6816133a0856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561334857600080fd5b505afa15801561335c573d6000803e3d6000fd5b505050506040513d602081101561337257600080fd5b50516001600160a01b038089166000908152600260209081526040808320938b1683529290522054906145ac565b90613c47565b6001600160a01b039485166000908152600260209081526040808320969097168252949094529390922092909255505050565b60005b6001835103811015612db4576000808483815181106133f757fe5b602002602001015185846001018151811061340e57fe5b60200260200101519150915060006134268383613f07565b509050600087856001018151811061343a57fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146134685782600061346c565b6000835b91509150600060028a510388106134835788613485565b305b905060006134b47f000000000000000000000000000000000000000000000000000000000000000089896131ab565b90506134c281888785613fe5565b5060028b510389101561356f5760006135127f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061350557fe5b60200260200101516131ab565b6001600160a01b038082166000908152600260209081526040808320938d168352929052205490915061354590876145ac565b6001600160a01b039182166000908152600260209081526040808320948c16835293905291909120555b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038681166064850152608060848501908152845160a486018190529187169563022c0d9f958b958b958b9592949093909260c48601928190849084905b838110156135f45781810151838201526020016135dc565b50505050905090810190601f1680156136215780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561364357600080fd5b505af1158015613657573d6000803e3d6000fd5b50506001909a0199506133dc98505050505050505050565b60606002825110156136c8576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff811180156136e057600080fd5b5060405190808252806020026020018201604052801561370a578160200160208202803683370190505b509050828160018351038151811061371e57fe5b60209081029190910101528151600019015b80156131a3576000806137608786600186038151811061374c57fe5b602002602001015187868151811061315057fe5b9150915061378284848151811061377357fe5b60200260200101518383613d89565b84600185038151811061379157fe5b6020908102919091010152505060001901613730565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106138245780518252601f199092019160209182019101613805565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613886576040519150601f19603f3d011682016040523d82523d6000602084013e61388b565b606091505b50915091508180156138b95750805115806138b957508080602001905160208110156138b657600080fd5b50515b61390a576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b60005b6001835103811015612f825760008084838151811061392f57fe5b602002602001015185846001018151811061394657fe5b602002602001015191509150600061395e8383613f07565b509050600061398e7f000000000000000000000000000000000000000000000000000000000000000085856131ab565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156139cf57600080fd5b505afa1580156139e3573d6000803e3d6000fd5b505050506040513d60608110156139f957600080fd5b5080516020909101516001600160701b0391821693501690506000806001600160a01b038a811690891614613a2f578284613a32565b83835b91509150613a44826133a0898d611a13565b9550613a51868383612f87565b945050505050600080856001600160a01b0316886001600160a01b031614613a7b57826000613a7f565b6000835b91509150600060028c51038a10613a96578a613a98565b305b9050613aa686898684613fe5565b5060028c51038a1015613b46576000613ae97f00000000000000000000000000000000000000000000000000000000000000008a8f8e6002018151811061350557fe5b6001600160a01b038082166000908152600260209081526040808320938e1683529290522054909150613b1c90866145ac565b6001600160a01b039182166000908152600260209081526040808320948d16835293905291909120555b604080516000808252602082019283905263022c0d9f60e01b835260248201868152604483018690526001600160a01b038581166064850152608060848501908152845160a48601819052918c169563022c0d9f958a958a958a9592949093909260c48601928190849084905b83811015613bcb578181015183820152602001613bb3565b50505050905090810190601f168015613bf85780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613c1a57600080fd5b505af1158015613c2e573d6000803e3d6000fd5b50506001909b019a506139149950505050505050505050565b80820382811115611196576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160a01b0380831660009081526002602090815260408083207f000000000000000000000000000000000000000000000000000000000000000090941683529290522054613ce890826145ac565b6001600160a01b0380841660009081526002602090815260408083207f000000000000000000000000000000000000000000000000000000000000000090941680845293909152808220939093558251630d0e30db60e41b81529251919263d0e30db092859260048084019391929182900301818588803b158015613d6c57600080fd5b505af1158015613d80573d6000803e3d6000fd5b50505050505050565b6000808411613dc95760405162461bcd60e51b815260040180806020018281038252602c815260200180614820602c913960400191505060405180910390fd5b600083118015613dd95750600082115b613e145760405162461bcd60e51b81526004018080602001828103825260288152602001806148976028913960400191505060405180910390fd5b6000613e2c6103e8613e268688614549565b90614549565b90506000613e406103e5613e268689613c47565b9050613e576001828481613e5057fe5b04906145ac565b9695505050505050565b6000808411613ea15760405162461bcd60e51b81526004018080602001828103825260258152602001806148e26025913960400191505060405180910390fd5b600083118015613eb15750600082115b613eec5760405162461bcd60e51b81526004018080602001828103825260288152602001806148976028913960400191505060405180910390fd5b82613ef78584614549565b81613efe57fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415613f5b5760405162461bcd60e51b815260040180806020018281038252602581526020018061484c6025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610613f7b578284613f7e565b83835b90925090506001600160a01b038216613fde576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6001600160a01b03808516600090815260026020908152604080832093871683529290529081205483111561404b5760405162461bcd60e51b81526004018080602001828103825260238152602001806148bf6023913960400191505060405180910390fd5b6001600160a01b0380861660009081526002602090815260408083209388168352929052205461407b9084613c47565b6001600160a01b0380871660009081526002602090815260408083208985168452909152902091909155821630146141ba576000846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156140fc57600080fd5b505afa158015614110573d6000803e3d6000fd5b505050506040513d602081101561412657600080fd5b50519050838110156141ad576000546001600160a01b0316631268754f8661414e8785613c47565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561419457600080fd5b505af11580156141a8573d6000803e3d6000fd5b505050505b6141b88584866137a7565b505b506001949350505050565b60008060006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a439058a8a6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561425157600080fd5b505afa158015614265573d6000803e3d6000fd5b505050506040513d602081101561427b57600080fd5b50516001600160a01b03161415614339577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c9c6539689896040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050602060405180830381600087803b15801561430c57600080fd5b505af1158015614320573d6000803e3d6000fd5b505050506040513d602081101561433657600080fd5b50505b6000806143677f00000000000000000000000000000000000000000000000000000000000000008b8b6145fb565b91509150816000148015614379575080155b1561438957879350869250614449565b6000614396898484613e61565b90508781116143e957858110156143de5760405162461bcd60e51b81526004018080602001828103825260268152602001806148716026913960400191505060405180910390fd5b889450925082614447565b60006143f6898486613e61565b90508981111561440257fe5b878110156144415760405162461bcd60e51b815260040180806020018281038252602681526020018061494e6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106144a25780518252601f199092019160209182019101614483565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614504576040519150601f19603f3d011682016040523d82523d6000602084013e614509565b606091505b5050905080612f825760405162461bcd60e51b81526004018080602001828103825260238152602001806149746023913960400191505060405180910390fd5b60008115806145645750508082028282828161456157fe5b04145b611196576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015611196576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b600080600061460a8585613f07565b50905060008061461b8888886131ab565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561465357600080fd5b505afa158015614667573d6000803e3d6000fd5b505050506040513d606081101561467d57600080fd5b5080516020909101516001600160701b0391821693501690506001600160a01b03878116908416146146b05780826146b3565b81815b90999098509650505050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106147475780518252601f199092019160209182019101614728565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146147a9576040519150601f19603f3d011682016040523d82523d6000602084013e6147ae565b606091505b50915091508180156147dc5750805115806147dc57508080602001905160208110156147d957600080fd5b50515b6148175760405162461bcd60e51b81526004018080602001828103825260248152602001806149c26024913960400191505060405180910390fd5b50505050505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a205452414e534645525f4f55545f4641494c4544556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e56414c49445f50415448000000556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54556e69737761705632526f757465723a20455850495245440000000000000000a26469706673582212206e902c61e82678588b867b37c8f2d320d6077684c8d2f606c6ad8eac0026aa2c64736f6c634300060c0033000000000000000000000000c03efb3e3ddfb0c0f3c148a2afe10ccfa1c5819e000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2