0 txs
0 calls
constructor
No constructor.
functions
ADDRESS_PROVIDER
viewfunction ADDRESS_PROVIDER() view returns (address)
feeCollector
viewfunction feeCollector() view returns (address)
feeTokenAmounts
viewfunction feeTokenAmounts(address) view returns (uint256)
getPair
viewfunction getPair(uint256 _pairIndex) view returns (tuple)
getPairIndex
viewfunction getPairIndex(address, address) view returns (uint256)
getTradingConfig
viewfunction getTradingConfig(uint256 _pairIndex) view returns (tuple)
getTradingFeeConfig
viewfunction getTradingFeeConfig(uint256 _pairIndex) view returns (tuple)
getVault
viewfunction getVault(uint256 _pairIndex) view returns (tuple vault)
isStableToken
viewfunction isStableToken(address) view returns (bool)
orderManager
viewfunction orderManager() view returns (address)
pairs
viewfunction pairs(uint256) view returns (uint256 pairIndex, address indexToken, address stableToken, address pairToken, bool enable, uint256 kOfSwap, uint256 expectIndexTokenP, uint256 maxUnbalancedP, uint256 unbalancedDiscountRate, uint256 addLpFeeP, uint256 removeLpFeeP)
pairsIndex
viewfunction pairsIndex() view returns (uint256)
poolTokenFactory
viewfunction poolTokenFactory() view returns (address)
poolView
viewfunction poolView() view returns (address)
positionManager
viewfunction positionManager() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
riskReserve
viewfunction riskReserve() view returns (address)
router
viewfunction router() view returns (address)
spotSwap
viewfunction spotSwap() view returns (address)
tradingConfigs
viewfunction tradingConfigs(uint256) view returns (uint256 minLeverage, uint256 maxLeverage, uint256 minTradeAmount, uint256 maxTradeAmount, uint256 maxPositionAmount, uint256 maintainMarginRate, uint256 priceSlipP, uint256 maxPriceDeviationP)
tradingFeeConfigs
viewfunction tradingFeeConfigs(uint256) view returns (uint256 lpFeeDistributeP, uint256 stakingFeeDistributeP, uint256 keeperFeeDistributeP, uint256 treasuryFeeDistributeP, uint256 reservedFeeDistributeP, uint256 ecoFundFeeDistributeP)
vaults
viewfunction vaults(uint256) view returns (uint256 indexTotalAmount, uint256 indexReservedAmount, uint256 stableTotalAmount, uint256 stableReservedAmount, uint256 averagePrice)
addLiquidity
nonpayablefunction addLiquidity(address recipient, uint256 _pairIndex, uint256 _indexAmount, uint256 _stableAmount, bytes data) returns (uint256 mintAmount, address slipToken, uint256 slipAmount)
addPair
nonpayablefunction addPair(address _indexToken, address _stableToken)
addStableToken
nonpayablefunction addStableToken(address _token)
claimFee
nonpayablefunction claimFee(address token, uint256 amount)
decreaseReserveAmount
nonpayablefunction decreaseReserveAmount(uint256 _pairIndex, uint256 _indexAmount, uint256 _stableAmount)
increaseReserveAmount
nonpayablefunction increaseReserveAmount(uint256 _pairIndex, uint256 _indexAmount, uint256 _stableAmount)
initialize
nonpayablefunction initialize(address addressProvider, address _poolTokenFactory)
removeLiquidity
nonpayablefunction removeLiquidity(address _receiver, uint256 _pairIndex, uint256 _amount, bool useETH, bytes data) returns (uint256 receivedIndexAmount, uint256 receivedStableAmount, uint256 feeAmount)
removeStableToken
nonpayablefunction removeStableToken(address _token)
setFeeCollector
nonpayablefunction setFeeCollector(address _feeCollector)
setLPStableProfit
nonpayablefunction setLPStableProfit(uint256 _pairIndex, int256 _profit)
setOrderManager
nonpayablefunction setOrderManager(address _orderManager)
setPoolView
nonpayablefunction setPoolView(address _poolView)
setPositionManager
nonpayablefunction setPositionManager(address _positionManager)
setRiskReserve
nonpayablefunction setRiskReserve(address _riskReserve)
setRouter
nonpayablefunction setRouter(address _router)
setSpotSwap
nonpayablefunction setSpotSwap(address _spotSwap)
transferEthTo
nonpayablefunction transferEthTo(address to, uint256 amount)
transferTokenOrSwap
nonpayablefunction transferTokenOrSwap(uint256 pairIndex, address token, address to, uint256 amount)
transferTokenTo
nonpayablefunction transferTokenTo(address token, address to, uint256 amount)
updateAveragePrice
nonpayablefunction updateAveragePrice(uint256 _pairIndex, uint256 _averagePrice)
updatePair
nonpayablefunction updatePair(uint256 _pairIndex, tuple _pair)
updateTradingConfig
nonpayablefunction updateTradingConfig(uint256 _pairIndex, tuple _tradingConfig)
updateTradingFeeConfig
nonpayablefunction updateTradingFeeConfig(uint256 _pairIndex, tuple _tradingFeeConfig)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AddLiquidity
event AddLiquidity(address indexed recipient, uint256 indexed pairIndex, uint256 indexAmount, uint256 stableAmount, uint256 lpAmount, uint256 indexFeeAmount, uint256 stableFeeAmount, address slipToken, uint256 slipFeeAmount, uint256 lpPrice)
AddStableToken
event AddStableToken(address sender, address token)
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
ClaimedFee
event ClaimedFee(address sender, address token, uint256 amount)
Initialized
event Initialized(uint8 version)
PairAdded
event PairAdded(address indexed indexToken, address indexed stableToken, address lpToken, uint256 index)
RemoveLiquidity
event RemoveLiquidity(address indexed recipient, uint256 indexed pairIndex, uint256 indexAmount, uint256 stableAmount, uint256 lpAmount, uint256 feeAmount, uint256 lpPrice)
RemoveStableToken
event RemoveStableToken(address sender, address token)
UpdateAveragePrice
event UpdateAveragePrice(uint256 indexed pairIndex, uint256 averagePrice)
UpdateFeeCollector
event UpdateFeeCollector(address sender, address oldAddress, address newAddress)
UpdateLPProfit
event UpdateLPProfit(uint256 indexed pairIndex, address token, int256 profit, uint256 totalAmount)
UpdateOrderManager
event UpdateOrderManager(address sender, address oldAddress, address newAddress)
UpdatePoolView
event UpdatePoolView(address sender, address oldAddress, address newAddress)
UpdatePositionManager
event UpdatePositionManager(address sender, address oldAddress, address newAddress)
UpdateReserveAmount
event UpdateReserveAmount(uint256 indexed pairIndex, int256 indexAmount, int256 stableAmount, uint256 indexReservedAmount, uint256 stableReservedAmount)
UpdateRiskReserve
event UpdateRiskReserve(address sender, address oldAddress, address newAddress)
UpdateRouter
event UpdateRouter(address sender, address oldAddress, address newAddress)
UpdateSpotSwap
event UpdateSpotSwap(address sender, address oldAddress, address newAddress)
UpdateTotalAmount
event UpdateTotalAmount(uint256 indexed pairIndex, int256 indexAmount, int256 stableAmount, uint256 indexTotalAmount, uint256 stableTotalAmount)
Upgraded
event Upgraded(address indexed implementation)
errors
No errors.
creation bytecode
0x60a08060405234610031573060805261507a90816100378239608051818181612e1601528181612f43015261373a0152f35b600080fdfe608060405260043610156100e6575b361561001957600080fd5b6065546040516315ab88c960e31b81526001600160a01b03916020908290600490829086165afa80156100da57829160009161009c575b5016331490811561008e575b501561006457005b60405162461bcd60e51b81526020600482015260026024820152616e7760f01b6044820152606490fd5b90506071541633143861005c565b91506020823d82116100d2575b816100b6602093836140c2565b810103126100cf57506100c982916143fb565b38610050565b80fd5b3d91506100a9565b6040513d6000823e3d90fd5b6000803560e01c80630280545414613f0f5780630d172a0114613e1b5780630da67fe714613d5a5780631848effa14613d315780631c27b53e14613cc757806326fdad2e14613b2457806330a66e1514613a315780633659cfe6146137155780633a336ee11461355f57806344c5999e14613536578063485cc955146133da5780634979e371146132b55780634b54b43e1461327c5780634e34f26b1461323d5780634f1ef28614612ec757806352d1902d14612e0357806355d4853114612c165780635760f2e314612af15780635e6b57dd146129d5578063684ae9e51461298a5780637734bd4614612928578063791b98bc146128ff5780637c7c829d146128335780638327f0e11461268657806388e4048e1461265d5780638c64ea4a146126005780639403b634146125b0578063962cfcbd146125925780639e9f5e2d146124625780639ef421b6146123fd578063a42dce80146122d8578063ad38fba5146121f8578063b6f3e08714611e35578063b91ac78814611d89578063bb04869d1461139a578063bdf391cc1461136b578063c0d7865514611246578063c0da840d14611121578063c415b95c146110f8578063d355a9b414611080578063d51d62ab14611057578063dda4079714610ed6578063e5bc030314610ead578063f3b39b6c146105e0578063f887ea40146105b7578063f9b6117f1461058e578063fcaaa10d146104695763fcc5a98014610302575061000e565b346100cf5760208060031936011261046557600461031e613fc9565b60655460405162435da560e01b81526001600160a01b03949093909182918591829088165afa801561041d5784938691610428575b508190602460405180978193637be53ca160e01b8352336004840152165afa801561041d577f72b4ed62e1ee37f0e29a1c7e7361816f24dfe3452f9ac21e3f3074f7668538db946103ac9287926103f0575b5050614427565b607580548284166001600160a01b031982161790915560408051338152939091166001600160a01b0390811660208501529091169082015280606081015b0390a180f35b61040f9250803d10610416575b61040781836140c2565b81019061440f565b38806103a5565b503d6103fd565b6040513d87823e3d90fd5b809450828092503d831161045e575b61044181836140c2565b8101031261045a578061045485946143fb565b90610353565b8480fd5b503d610437565b5080fd5b50346100cf57602080600319360112610465576004610486613fc9565b60655460405162435da560e01b81526001600160a01b03949093909182918591829088165afa801561041d5784938691610555575b508190602460405180978193637be53ca160e01b8352336004840152165afa801561041d577fc97a4232c1a0d14b35d5a822f82fefb6d78599a212c862721fc754f7b60b2aab946105139287926103f0575050614427565b606880548284166001600160a01b031982161790915560408051338152939091166001600160a01b0390811660208501529091169082015280606081016103ea565b809450828092503d8311610587575b61056e81836140c2565b8101031261045a578061058185946143fb565b906104bb565b503d610564565b50346100cf57806003193601126100cf576071546040516001600160a01b039091168152602090f35b50346100cf57806003193601126100cf576072546040516001600160a01b039091168152602090f35b50346100cf5760a03660031901126100cf576105fa613fc9565b6084356001600160401b038111610dc1576106199036906004016140fe565b9061062f60018060a01b03607254163314614537565b6065546106469084906001600160a01b031661459f565b6024358452606e6020526106f060ff6040862060405161066581614042565b8154815260018201546001600160a01b0390811660208301526002830154811660408301526003830154908116606083015260a090811c909316151560808201819052600483015493820193909352600582015460c0820152600682015460e08201526007820154610100820152600882015461012082015260099091015461014090910152614568565b6044351580158091610ea2575b61070690614b05565b610711602435614f3b565b606081015190939061072d906001600160a01b03161515614b36565b602084015160408501516001600160a01b039081169488948594939092169284919083610e39575b606435610dc5575b333b15610dc1576107a991839160405193849283926321326a7360e11b84528960048501528c60248501526044356044850152606435606485015260a0608485015260a4840191614b67565b038183335af18015610db657610da2575b5050610cf3575b5050606435610c4e575b5050606554604051632630c12f60e01b81529290602090849060049082906001600160a01b03165afa928315610c03578493610c0e575b50602082810151604051634bb3415360e01b81526001600160a01b0391821660048201529485916024918391165afa928315610c03578493610bcf575b5060675460405163044e9a1b60e01b81526024803560048301528101859052936001600160a01b039091169190602085604481865afa948515610bc4578695610b8a575b5060e0906084604051809581936379f45a07861b835260243560048401526044356024840152606435604484015260648301525afa801561041d57859486938780968194829383908492610b1d575b50899082819060018060a01b0360208701511687526073602052604087206108fb8b82546144ad565b90556040868101516001600160a01b03168852607360205287208054610922908a906144ad565b905560208601516001600160a01b038d8116911603610ac55750507f20f7411220a575a66d53613925a30fcd2faeb040572d77208808a70a0de8f0b791610968916144ad565b915b6024358552606f60205260408520906109c360026109898685546144ad565b93848155016109998382546144ad565b80915560405193849360243597859094939260609260808301968352602083015260408201520152565b0390a2606001516001600160a01b0316803b15610465576040516340c10f1960e01b81526001600160a01b0387166004820152602481018a905291908290604490829084905af18015610aba57610aa2575b5060609750604051926044358452606435602085015287604085015288840152608083015260018060a01b03841660a08301528460c083015260e08201527f1ce85287e0edb2517f46ae15d2959b2f7d62f2794db98cf303cf6cfe9795d2086101006024359360018060a01b031692a3604080519384526001600160a01b03919091166020840152820152f35b610aac899161405e565b610ab65787610a15565b8780fd5b6040513d8b823e3d90fd5b604086015191947f20f7411220a575a66d53613925a30fcd2faeb040572d77208808a70a0de8f0b794909350916001600160a01b038d8116911614610b0c575b505061096a565b610b1692506144ad565b8a38610b05565b985050509650505094505060e0823d60e011610b82575b81610b4160e093836140c2565b8101031261045a578151610b57602084016143fb565b946040840151938760608201519660808301519460c060a085015194015190999780999694906108d2565b3d9150610b34565b9094506020813d602011610bbc575b81610ba6602093836140c2565b81010312610bb757519360e0610883565b600080fd5b3d9150610b99565b6040513d88823e3d90fd5b9092506020813d602011610bfb575b81610beb602093836140c2565b81010312610bb75751913861083f565b3d9150610bde565b6040513d86823e3d90fd5b9092506020813d602011610c46575b81610c2a602093836140c2565b81010312610c4257610c3b906143fb565b9138610802565b8380fd5b3d9150610c1d565b906020610c60602493606435906144ad565b91604051938480926370a0823160e01b82523060048301525afa91821561041d578592610cbf575b5011610c955738806107cb565b60405162461bcd60e51b8152602060048201526002602482015261747360f01b6044820152606490fd5b9091506020813d602011610ceb575b81610cdb602093836140c2565b81010312610bb757519038610c88565b3d9150610cce565b6020610d04602493604435906144ad565b91604051938480926370a0823160e01b82523060048301525afa918215610d97578792610d63575b5011610d395738806107c1565b60405162461bcd60e51b8152602060048201526002602482015261746960f01b6044820152606490fd5b9091506020813d602011610d8f575b81610d7f602093836140c2565b81010312610bb757519038610d2c565b3d9150610d72565b6040513d89823e3d90fd5b610dab9061405e565b610ab65787386107ba565b6040513d84823e3d90fd5b8280fd5b6040516370a0823160e01b81523060048201529096506020816024818b5afa908115610e2e578391610df9575b509561075d565b9250506020823d602011610e26575b81610e15602093836140c2565b81010312610bb75789915138610df2565b3d9150610e08565b6040513d85823e3d90fd5b6040516370a0823160e01b8152306004820152909550602081602481885afa908115610e2e578391610e6d575b5094610755565b9250506020823d602011610e9a575b81610e89602093836140c2565b81010312610bb75789915138610e66565b3d9150610e7c565b5060643515156106fd565b50346100cf57806003193601126100cf576067546040516001600160a01b039091168152602090f35b50346100cf5760403660031901126100cf57610ef0613fc9565b60655460405162435da560e01b8152602092602435926001600160a01b03929085908290600490829087165afa908115610bc45783918691889161101c575b50602460405180948193636606a87360e11b8352336004840152165afa908115610bc4578691610fff575b5015610fd557917fafbbbdf627e5c98de87b970491cf6c1a475e060b8f4f76619bcec51f7f8b775493916060931680865260738352610f9f8260408820541015614463565b8086526073835260408620610fb5838254614502565b9055610fc2823383614ba9565b604051923384528301526040820152a180f35b60405162461bcd60e51b81526004810185905260026024820152611bdd60f21b6044820152606490fd5b6110169150853d87116104165761040781836140c2565b38610f5a565b92505081813d8311611050575b61103381836140c2565b8101031261104c578461104684926143fb565b38610f2f565b8580fd5b503d611029565b50346100cf57806003193601126100cf576075546040516001600160a01b039091168152602090f35b50346100cf5760203660031901126100cf576040610100916004358152606a60205220805490600181015490600281015460038201546004830154906005840154926007600686015495015495604051978852602088015260408701526060860152608085015260a084015260c083015260e0820152f35b50346100cf57806003193601126100cf576069546040516001600160a01b039091168152602090f35b50346100cf5760208060031936011261046557600461113e613fc9565b60655460405162435da560e01b81526001600160a01b03949093909182918591829088165afa801561041d578493869161120d575b508190602460405180978193637be53ca160e01b8352336004840152165afa801561041d577fb4de3a2a83ff870b8b12748946c690b64e45c9e45c04e72dd42a7942b5134e64946111cb9287926103f0575050614427565b607180548284166001600160a01b031982161790915560408051338152939091166001600160a01b0390811660208501529091169082015280606081016103ea565b809450828092503d831161123f575b61122681836140c2565b8101031261045a578061123985946143fb565b90611173565b503d61121c565b50346100cf57602080600319360112610465576004611263613fc9565b60655460405162435da560e01b81526001600160a01b03949093909182918591829088165afa801561041d5784938691611332575b508190602460405180978193637be53ca160e01b8352336004840152165afa801561041d577f8799a8185db1502b64c132a0d9e2dfe4bc81fa8902b7448833734362de2caada946112f09287926103f0575050614427565b607280548284166001600160a01b031982161790915560408051338152939091166001600160a01b0390811660208501529091169082015280606081016103ea565b809450828092503d8311611364575b61134b81836140c2565b8101031261045a578061135e85946143fb565b90611298565b503d611341565b50346100cf5760203660031901126100cf5761016061138b600435614f3b565b611398604051809261412b565bf35b50346100cf5760a03660031901126100cf57600435906001600160a01b03821682036100cf576064351515606435036100cf576084356001600160401b03811161046557906113ee600492369084016140fe565b909361140560018060a01b03607254163314614537565b6065546001600160a01b0390811693906114219083168561459f565b6024358152606e6020526114c86040822060405161143e81614042565b8154815260018201546001600160a01b0390811660208301526002830154811660408301526003830154908116606083015260a090811c60ff161515608083018190528984015491830191909152600583015460c0830152600683015460e08301526007830154610100830152600883015461012083015260099092015461014090910152614568565b6114d56044351515614b05565b60206114e2602435614f3b565b60608101519095906114fe906001600160a01b03161515614b36565b604051632630c12f60e01b815296879182905afa948515611d40578195611d4d575b50602084810151604051634bb3415360e01b81526001600160a01b0391821660048201529687916024918391165afa948515611d40578195611d0c575b5060675460405163044e9a1b60e01b8152602480356004830152810187905291906001600160a01b0316602083604481845afa928315610db6578293611cd8575b5060a0604051809263fb13d65560e01b825281806115d68c604435602435600485016040919493926060820195825260208201520152565b03915afa908115610db65782978399849785938695611c82575b5060608a01516001600160a01b0316333b15611c7e5790869161163b604051948593849362b501c160e71b855260048501526044356024850152606060448501526064840191614b67565b038183335af1801561041d57611c6b575b5060608801516001600160a01b0316803b1561045a57848091602460405180948193630852cd8d60e31b835260443560048401525af1801561041d57908591611c57575b50506004906116a0602435614ecd565b60208a81015160405163313ce56760e01b815294859182906001600160a01b03165afa928315610bc4579060049392918793611c36575b5060408b810151905163313ce56760e01b81529460209186919082906001600160a01b03165afa938415610d97578794611c05575b5086928151602083015190818111611bd2575b505087916060604082015191015190818111611b8f575b5050601260ff8216810311611b7b5761175760ff61175d9216601203614b88565b8d614b96565b93601260ff8216810311611b7b57916117a061179b928f8361179561179b9261178f60ff6117a69b9a16601203614b88565b90614b96565b96614bea565b6144ad565b94614bea565b11611b515761182c6118257f20f7411220a575a66d53613925a30fcd2faeb040572d77208808a70a0de8f0b79260018060a01b0360208b01511686526073602052604086206117f68282546144ad565b905560408a8101516001600160a01b0316875260736020528620805461181d9087906144ad565b90558a6144ad565b928a6144ad565b916024358452606f60205260408420906118b361188b61188584549361185481861015614ca5565b61187d8860028801966118758489549261187085851015614ca5565b614502565b809955614502565b80955561450f565b9561450f565b9160405193849360243597859094939260609260808301968352602083015260408201520152565b0390a28561196a575b50611942938680611946575b5050604080518681526020810188905260443591810191909152606081018490526080810191909152602435916001600160a01b0316907f202fcc956f1a9bf63ace8fb75373910b54ee3eaf3cbaa9c54afe1c700f3446709060a090a3604051938493846040919493926060820195825260208201520152565b0390f35b60409091015161196391906001600160a01b038581169116614ba9565b38866118c8565b60643580611ac8575b15611aa0576065546040516315ab88c960e31b815290602090829060049082906001600160a01b03165afa908115610db6578291611a66575b506001600160a01b0316803b1561046557818091602460405180948193632e1a7d4d60e01b83528c60048401525af18015610db657908291611a52575b508060206040516119f98161408c565b82815201886001600160a01b0387165af1611a126142f7565b5015611a2357611942935b936118bc565b60405162461bcd60e51b81526020600482015260076024820152660cae4e45acae8d60cb1b6044820152606490fd5b611a5b9061405e565b6100cf5780386119e9565b90506020813d602011611a98575b81611a81602093836140c2565b8101031261046557611a92906143fb565b386119ac565b3d9150611a74565b5060208401516119429490611ac39087906001600160a01b038681169116614ba9565b611a1d565b506020858101516065546040516315ab88c960e31b81526001600160a01b03928316939092909183916004918391165afa908115610e2e578391611b17575b506001600160a01b031614611973565b90506020813d602011611b49575b81611b32602093836140c2565b81010312610dc157611b43906143fb565b38611b07565b3d9150611b25565b60405162461bcd60e51b81526020600482015260026024820152611a5b60f21b6044820152606490fd5b634e487b7160e01b88526011600452602488fd5b611b9a929350614502565b60ff851660120360128111611bbe579061178f611bb692614b88565b903880611736565b634e487b7160e01b89526011600452602489fd5b611bdd929550614502565b601260ff8516810311611b7b57611bfd9061178f60ff8616601203614b88565b92388061171f565b611c2891945060203d602011611c2f575b611c2081836140c2565b810190614494565b923861170c565b503d611c16565b611c5091935060203d602011611c2f57611c2081836140c2565b91386116d7565b611c609061405e565b610c42578338611690565b611c779094919461405e565b923861164c565b8680fd5b98509350995097505060a0853d60a011611cd0575b81611ca460a093836140c2565b810103126104655784516020860151976040870151996080606089015198015192999a979293386115f0565b3d9150611c97565b9092506020813d602011611d04575b81611cf4602093836140c2565b810103126104655751913861159e565b3d9150611ce7565b9094506020813d602011611d38575b81611d28602093836140c2565b8101031261045a5751933861155d565b3d9150611d1b565b50604051903d90823e3d90fd5b9094506020813d602011611d81575b81611d69602093836140c2565b8101031261045a57611d7a906143fb565b9338611520565b3d9150611d5c565b50346100cf5760203660031901126100cf576040610160916004358152606e6020522080549060018060a01b0390816001820154169180600283015416906003830154600484015460ff600586015492600687015494600788015496600960088a0154990154996040519b8c5260208c015260408b0152811660608a015260a01c161515608088015260a087015260c086015260e0850152610100840152610120830152610140820152f35b50346100cf5760403660031901126100cf57611e4f613fc9565b611e57613fdf565b60655460405162435da560e01b81526001600160a01b03916020919082908290600490829087165afa908115610bc4578391839188916121c1575b50602460405180948193637be53ca160e01b8352336004840152165afa8015610bc457611ec69187916121a4575b50614427565b8184169283151580612199575b1561216f57828116948587526074835260ff6040882054161561214457848752606c8352604087208688528352611f0e604088205415614463565b60405163313ce56760e01b8082529084816004818a5afa908115610aba5760129160ff918b91612127575b5016111590816120d1575b50156120a657606654604051630b04656760e21b81526001600160a01b039283166004820152929091166024830152909291908190849060449082908a9087165af1928315610bc457869361206f575b50606e606d5491858852606c8152604088208789528152826040892055606c81526040882086895281528260408920558288525260408620908155600360018201916bffffffffffffffffffffffff60a01b9286848254161790556002810187848254161790550191831690825416179055606d5490600019821461205b5760018201606d55604080516001600160a01b0392909216825260208201929092527feda679f3434de965730a28b8b694f2a348c09a2c1bb3e226633b6af24841adc19190a380f35b634e487b7160e01b85526011600452602485fd5b9080935081813d831161209f575b61208781836140c2565b8101031261104c57612098906143fb565b9138611f94565b503d61207d565b60405162461bcd60e51b815260048101849052600360248201526221646560e81b6044820152606490fd5b905060405190815283816004818a5afa90811561211c5760129160ff918a916120ff575b5016111538611f44565b6121169150863d8811611c2f57611c2081836140c2565b386120f5565b6040513d8a823e3d90fd5b61213e9150873d8911611c2f57611c2081836140c2565b38611f39565b60405162461bcd60e51b8152600481018490526003602482015262085cdd60ea1b6044820152606490fd5b60405162461bcd60e51b8152600481018390526002602482015261021360f41b6044820152606490fd5b508281161515611ed3565b6121bb9150833d85116104165761040781836140c2565b38611ec0565b92505081813d83116121f1575b6121d881836140c2565b8101031261104c57816121eb84926143fb565b38611e92565b503d6121ce565b50346100cf5760403660031901126100cf5780808080612216613fc9565b607054602435919061224b90336001600160a01b03918216149081156122ca575b81156122bc575b81156122ae575b50614cd6565b612256824711614d07565b826040516122638161408c565b525af161226e6142f7565b50156122775780f35b60405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b6044820152606490fd5b606954163314905038612245565b60685481163314915061223e565b607154811633149150612237565b50346100cf576020806003193601126104655760046122f5613fc9565b60655460405162435da560e01b81526001600160a01b03949093909182918591829088165afa801561041d57849386916123c4575b508190602460405180978193637be53ca160e01b8352336004840152165afa801561041d577f91a2027f9be8d0393543cba68b2cc24f8deb24954889f5ed7333057e9bd18647946123829287926103f0575050614427565b606980548284166001600160a01b031982161790915560408051338152939091166001600160a01b0390811660208501529091169082015280606081016103ea565b809450828092503d83116123f6575b6123dd81836140c2565b8101031261045a57806123f085946143fb565b9061232a565b503d6123d3565b50346100cf5760803660031901126100cf57612417613fdf565b6001600160a01b03906044358281168103610c42576124538361245f946070541633149081156122ca5781156122bc5781156122ae5750614cd6565b60643591600435614d4a565b80f35b50346100cf5760208060031936011261046557600461247f613fc9565b60655460405162435da560e01b81526001600160a01b03949093909182918591829088165afa801561041d5784938691612559575b508190602460405180968193637be53ca160e01b8352336004840152165afa90811561041d577f23f19f475473ae6d9f214c387c64591569144b4e69902cc30cd2af11badf3198946125126074936103ea9689916125425750614427565b83168652526040808520805460ff1916905580513381526001600160a01b03909216602083015290918291820190565b6121bb9150843d86116104165761040781836140c2565b809450828092503d831161258b575b61257281836140c2565b8101031261045a578061258585946143fb565b906124b4565b503d612568565b50346100cf57806003193601126100cf576020606d54604051908152f35b50346100cf5760203660031901126100cf5760a06125cf600435614ecd565b6080604051918051835260208101516020840152604081015160408401526060810151606084015201516080820152f35b50346100cf5760203660031901126100cf57600480358252606f602090815260409283902080546001820154600283015460038401549390950154865192835293820152938401929092526060830191909152608082015260a090f35b50346100cf57806003193601126100cf576066546040516001600160a01b039091168152602090f35b50346100cf576101203660031901126100cf576004356101003660231901126104655760655460405162435da560e01b81526020916001600160a01b03919083908290600490829086165afa90811561041d578291849187916127fc575b50602460405180948193637be53ca160e01b8352336004840152165afa801561041d576127179186916125425750614427565b828452606e8252604084209080600183015416151591826127ec575b5050156127c257606a9060c435926127606305f5e1008086111590816127b4575b816127a6575b50614463565b8452526040822090602435825560443560018301556064356002830155608435600383015560a4356004830155600582015560e435600682015560076101043591015580f35b90506101043511153861275a565b80915060e435111590612754565b6064906040519062461bcd60e51b8252600482015260036024820152621c1b9d60ea1b6044820152fd5b6002015416151590503880612733565b92505081813d831161282c575b61281381836140c2565b8101031261045a578261282683926143fb565b386126e4565b503d612809565b50346100cf577f56150ce04aef562b211a1147ad2dad770a18c937c2a5309f2a476929bbcb079761286336613faf565b61287b60018060a09695961b036070541633146144d0565b838552606f6020526128f9604086206128d56128cf60018301956128c78660038954966128aa85891015614463565b01956128bf8488549261187085851015614463565b809a55614502565b80945561450f565b9361450f565b93604051948594859094939260609260808301968352602083015260408201520152565b0390a280f35b50346100cf57806003193601126100cf576070546040516001600160a01b039091168152602090f35b50346100cf5760203660031901126100cf57604060c0916004358152606b6020522080549060018101549060028101546003820154906005600484015493015493604051958652602086015260408501526060840152608083015260a0820152f35b50346100cf5760403660031901126100cf5760406020916129a9613fc9565b6129b1613fdf565b6001600160a01b039182168352606c85528383209116825283522054604051908152f35b50346100cf576020806003193601126104655760046129f2613fc9565b60655460405162435da560e01b81526001600160a01b03949093909182918591829088165afa801561041d5784938691612ab8575b508190602460405180968193637be53ca160e01b8352336004840152165afa90811561041d577fb6354f95e228e831e2aa88313d16f7245c10fe5dd84d851209116c19f3e7e07194612a856074936103ea9689916125425750614427565b83168652526040808520805460ff1916600117905580513381526001600160a01b03909216602083015290918291820190565b809450828092503d8311612aea575b612ad181836140c2565b8101031261045a5780612ae485946143fb565b90612a27565b503d612ac7565b50346100cf57602080600319360112610465576004612b0e613fc9565b60655460405162435da560e01b81526001600160a01b03949093909182918591829088165afa801561041d5784938691612bdd575b508190602460405180978193637be53ca160e01b8352336004840152165afa801561041d577f888f67ba778372c27e79bbfc2b6a7933c7f94ac44ea6110df376637c513641e494612b9b9287926103f0575050614427565b607080548284166001600160a01b031982161790915560408051338152939091166001600160a01b0390811660208501529091169082015280606081016103ea565b809450828092503d8311612c0f575b612bf681836140c2565b8101031261045a5780612c0985946143fb565b90612b43565b503d612bec565b50346100cf576101803660031901126100cf576101603660231901126100cf5760655460405162435da560e01b81526001600160a01b03916020919082908290600490829087165afa908115610c0357839183918691612dcc575b50602460405180948193637be53ca160e01b8352336004840152165afa8015610c0357612ca49185916121a45750614427565b6004358352606e815260408320918060018401541615159081612dbc575b5015612d92575060e435612cf66305f5e100808311159081612d83575b81612d74575b81612d65575b81612d575750614463565b60a435801515809103610c425760038301805460ff60a01b191660a09290921b60ff60a01b1691909117905560c435600483015560058201556101043560068201556101243560078201556101443560088201556101643560099091015580f35b90506101643511153861275a565b80915061014435111590612ceb565b80915061012435111590612ce5565b80915061010435111590612cdf565b6064906040519062461bcd60e51b8252600482015260036024820152620dccaf60eb1b6044820152fd5b9050600283015416151538612cc2565b92505081813d8311612dfc575b612de381836140c2565b81010312610c425781612df684926143fb565b38612c71565b503d612dd9565b50346100cf57806003193601126100cf577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003612e5c5760206040516000805160206150258339815191528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b5060403660031901126100cf57612edc613fc9565b9060249182356001600160401b038111610dc15736602382011215610dc157806004013590612f0a826140e3565b612f1760405191826140c2565b8281526020928382019236888383010111611c7e57818792898793018637830101526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690612f71308314156141a5565b612f8e600080516020615025833981519152928284541614614206565b6004858260655416604051928380926334cc866d60e21b82525afa90811561211c579082918991613205575b501633036131cb577f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612ffc57505050505061245f919250614267565b859394969516906040516352d1902d60e01b81528781600481865afa87918161319c575b506130805760405162461bcd60e51b815260048101899052602e818b01527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b979192939496959703613147575090859161309a84614267565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a280511580159061313f575b6130d6575b505050505080f35b6131349482917f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6040519661310a886140a7565b60278852870152660819985a5b195960ca1b60408701525190845af461312e6142f7565b91614327565b5038808083816130ce565b5060016130c9565b8460296084926040519262461bcd60e51b845260048401528201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152fd5b9091508881813d83116131c4575b6131b481836140c2565b81010312610ab657519038613020565b503d6131aa565b60405162461bcd60e51b8152600481018690526013818a015272556e617574686f72697a65642061636365737360681b6044820152606490fd5b809250878092503d8311613236575b61321e81836140c2565b81010312610ab65761323082916143fb565b38612fba565b503d613214565b50346100cf5760203660031901126100cf5760209060ff906040906001600160a01b03613268613fc9565b168152607484522054166040519015158152f35b50346100cf5760203660031901126100cf576020906040906001600160a01b036132a4613fc9565b168152607383522054604051908152f35b50346100cf576020806003193601126104655760046132d2613fc9565b60655460405162435da560e01b81526001600160a01b03949093909182918591829088165afa801561041d57849386916133a1575b508190602460405180978193637be53ca160e01b8352336004840152165afa801561041d577fc323e6b9ead1b2c846995d39cd9ad6731de0ce620397b30c21a9a6a9be0f23239461335f9287926103f0575050614427565b606780548284166001600160a01b031982161790915560408051338152939091166001600160a01b0390811660208501529091169082015280606081016103ea565b809450828092503d83116133d3575b6133ba81836140c2565b8101031261045a57806133cd85946143fb565b90613307565b503d6133b0565b50346100cf5760403660031901126100cf576004356001600160a01b0381811691829003610dc157602435908116809103610dc15782549160ff8360081c161592838094613529575b8015613512575b156134b65760ff1981166001178555836134a5575b506bffffffffffffffffffffffff60a01b9081606554161760655560665416176066556001606d5561346e5780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b61ffff19166101011784553861343f565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b15801561342a5750600160ff82161461342a565b50600160ff821610613423565b50346100cf57806003193601126100cf576068546040516001600160a01b039091168152602090f35b50346100cf5760403660031901126100cf57607054600435906001600160a01b039060243590821633148015613708575b156136db577f28e1a0159d995563bbd6a6946a34f4476a667aa813095cd747cbf8777b74249691606091848652606f60205260026040872092606e602052604088206040516135de81614042565b815481528260018301541660208201526101406009848685015416936040840194855260ff60038201548781168c87015260a01c1615156080850152600481015460a0850152600581015460c0850152600681015460e08501526007810154610100850152600881015461012085015201549101528884136000146136915761366684614520565b6136748487019182546144ad565b90555b51169201549060405192835260208301526040820152a280f35b828501805461369f86614520565b116136bf575b6136b86136b186614520565b8254614502565b9055613677565b6136d6838351166136cf87614520565b908b6146a0565b6136a5565b60405162461bcd60e51b815260206004820152600560248201526437b836b7b360d91b6044820152606490fd5b5081606954163314613590565b50346100cf5760208060031936011261046557613730613fc9565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116613767308214156141a5565b613784600080516020615025833981519152918383541614614206565b6004848360655416604051928380926334cc866d60e21b82525afa8015610bc457839187916139f9575b501633036139be57604051916137c38361408c565b8583527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156137fd5750505061245f9150614267565b83929316906040516352d1902d60e01b81528581600481865afa87918161398f575b506138805760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b949394036139385761389182614267565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8580a283835115801590613931575b6138cd575b5050505080f35b8061392794604051946138df866140a7565b602786527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c81870152660819985a5b195960ca1b604087015281519101845af461312e6142f7565b50388080836138c6565b50806138c1565b60405162461bcd60e51b815260048101849052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d83116139b7575b6139a781836140c2565b81010312610ab65751903861381f565b503d61399d565b60405162461bcd60e51b8152600481018590526013602482015272556e617574686f72697a65642061636365737360681b6044820152606490fd5b809250868092503d8311613a2a575b613a1281836140c2565b8101031261104c57613a2483916143fb565b386137ae565b503d613a08565b50346100cf5760203660031901126100cf576040816101009260e08351613a5781614026565b82815282602082015282858201528260608201528260808201528260a08201528260c082015201526004358152606a60205220604051613a9681614026565b8154918282526001810154602083019081526002820154604084019081526003830154606085019081526004840154916080860192835260058501549360a0870194855260e0600760068801549760c08a01988952015497019687526040519788525160208801525160408701525160608601525160808501525160a08401525160c08301525160e0820152f35b50346100cf5760e03660031901126100cf5760043560c03660231901126104655760655460405162435da560e01b81526020916001600160a01b03919083908290600490829086165afa90811561041d57829184918791613c90575b50602460405180948193637be53ca160e01b8352336004840152165afa801561041d57613bb39186916125425750614427565b828452606e825260408420908060018301541615159182613c80575b505015613c565760059060243590606435613bea81846144ad565b90613bf860443580936144ad565b91606b613c0860843580956144ad565b94613c1660a43580976144ad565b98613c336305f5e100613c2c60c435809d6144ad565b1115614463565b8a5252604088209485556001850155600284015560038301556004820155015580f35b6064906040519062461bcd60e51b825260048201526003602482015262706e6560e81b6044820152fd5b6002015416151590503880613bcf565b92505081813d8311613cc0575b613ca781836140c2565b8101031261045a5782613cba83926143fb565b38613b80565b503d613c9d565b50346100cf5760403660031901126100cf576004357f63eff9ad83aa78e212443a2702156d22d36e10bc8a296255ad3728c445726b436020602435613d1760018060a01b036070541633146144d0565b838552606f8252806004604087200155604051908152a280f35b50346100cf57806003193601126100cf576065546040516001600160a01b039091168152602090f35b50346100cf5760203660031901126100cf5760408160c09260a08351613d7f81613ff5565b828152826020820152828582015282606082015282608082015201526004358152606b60205220604051613db281613ff5565b8154918282526001810154602083019081526002820154604084019081526003830154916060850192835260a0600560048601549560808801968752015495019485526040519586525160208601525160408501525160608401525160808301525160a0820152f35b50346100cf5760603660031901126100cf57613e35613fc9565b613e3d613fdf565b6070549091604435916001600160a01b039190821633148015613f02575b8015613ef5575b8015613ee8575b613e7290614cd6565b6040516370a0823160e01b8152306004820152939116602084602481845afa93841561041d578594613eb3575b50613eae8361245f9511614d07565b614ba9565b93506020843d8211613ee0575b81613ecd602093836140c2565b8101031261045a57925192613eae613e9f565b3d9150613ec0565b5060695482163314613e69565b5033826068541614613e62565b5033826071541614613e5b565b50346100cf577f56150ce04aef562b211a1147ad2dad770a18c937c2a5309f2a476929bbcb0797613f3f36613faf565b90613f5860018060a09695961b036070541633146144d0565b838552606f6020526128f96040862060036001820191613f798584546144ad565b8093550190613f898583546144ad565b809255604051948594859094939260609260808301968352602083015260408201520152565b6060906003190112610bb757600435906024359060443590565b600435906001600160a01b0382168203610bb757565b602435906001600160a01b0382168203610bb757565b60c081019081106001600160401b0382111761401057604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b0382111761401057604052565b61016081019081106001600160401b0382111761401057604052565b6001600160401b03811161401057604052565b60a081019081106001600160401b0382111761401057604052565b602081019081106001600160401b0382111761401057604052565b606081019081106001600160401b0382111761401057604052565b90601f801991011681019081106001600160401b0382111761401057604052565b6001600160401b03811161401057601f01601f191660200190565b9181601f84011215610bb7578235916001600160401b038311610bb75760208381860195010111610bb757565b8051825260018060a01b03806020830151166020840152806040830151166040840152606082015116606083015260808101511515608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008082015190830152610120808201519083015261014080910151910152565b156141ac57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b1561420d57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b803b1561429c5760008051602061502583398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b3d15614322573d90614308826140e3565b9161431660405193846140c2565b82523d6000602084013e565b606090565b91929015614389575081511561433b575090565b3b156143445790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561439c5750805190602001fd5b6040519062461bcd60e51b82528160208060048301528251908160248401526000935b8285106143e2575050604492506000838284010152601f80199101168101030190fd5b84810182015186860160440152938101938593506143bf565b51906001600160a01b0382168203610bb757565b90816020910312610bb757518015158103610bb75790565b1561442e57565b60405162461bcd60e51b815260206004820152600d60248201526c37b7363ca837b7b620b236b4b760991b6044820152606490fd5b1561446a57565b60405162461bcd60e51b81526020600482015260026024820152610caf60f31b6044820152606490fd5b90816020910312610bb7575160ff81168103610bb75790565b919082018092116144ba57565b634e487b7160e01b600052601160045260246000fd5b156144d757565b60405162461bcd60e51b81526020600482015260036024820152626f706d60e81b6044820152606490fd5b919082039182116144ba57565b600160ff1b81146144ba5760000390565b6000811261452b5790565b6145349061450f565b90565b1561453e57565b60405162461bcd60e51b815260206004820152600260248201526137b960f11b6044820152606490fd5b1561456f57565b60405162461bcd60e51b8152602060048201526008602482015267191a5cd8589b195960c21b6044820152606490fd5b60405162435da560e01b8152602092916001600160a01b039084908390600490829085165afa9283156100da578492600094614663575b5060405163b36d691960e01b815290821660048201529283916024918391165afa9081156100da57600091614646575b5061460e5750565b6064906040519062461bcd60e51b825260048201526011602482015270189b1858dadb1a5cdd081858d8dbdd5b9d607a1b6044820152fd5b61465d9150823d84116104165761040781836140c2565b38614606565b919282819592953d8311614699575b61467c81836140c2565b810103126100cf575090602461469285936143fb565b93906145d6565b503d614672565b6000908152602091606e8352604092838320908451906146bf82614042565b8254825260018060a01b039182600185015416828201528260028501541687820152600384015497838916606083015260ff60809960a01c1615158983015260096004958681015460a0850152600581015460c0850152600681015460e08501526007810154610100850152600881015461012085015201546101408301528380607554169661475e8a51946311bc3cb960e11b86528886019061412b565b1661016483015261018482015287816101a481885afa918215614a0a5786988799889389956149b4575b508951636eb1769f60e11b808252308983019081526001600160a01b038b166020820152928816999290919085908290819060400103818d5afa9081156149aa579086918c91614975575b5010614840575b50505050826075541692833b15611c7e57928695949286926084958a519b8c988997637f0148ab60e11b8952880152166024860152604485015260648401525af191821561483657505061482b5750565b6148349061405e565b565b51903d90823e3d90fd5b8a51908152308882019081526001600160a01b038316602082015284908290819060400103818c5afa90811561496b578a9161493a575b506148d85789519263095ea7b360e01b90840152602483015260001960448301526044825281018181106001600160401b038211176148c55788526148bc9086614a14565b388080806147da565b634e487b7160e01b885260418652602488fd5b895162461bcd60e51b8152808801849052603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608490fd5b90508381813d8311614964575b61495181836140c2565b81010312614960575138614877565b8980fd5b503d614947565b8b513d8c823e3d90fd5b809250868092503d83116149a3575b61498e81836140c2565b8101031261499f57859051386147d3565b8a80fd5b503d614984565b8c513d8d823e3d90fd5b9a5050925090508188813d8311614a03575b6149d081836140c2565b8101031261104c576149e1886143fb565b906149ed818a016143fb565b928460608a8c01519b015193949a939490614788565b503d6149c6565b87513d88823e3d90fd5b60408051908101916001600160a01b03166001600160401b0383118284101761401057614a7d926040526000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af161312e6142f7565b805190828215928315614aed575b50505015614a965750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b614afd935082018101910161440f565b388281614a8b565b15614b0c57565b60405162461bcd60e51b8152602060048201526002602482015261696160f01b6044820152606490fd5b15614b3d57565b60405162461bcd60e51b8152602060048201526002602482015261069760f41b6044820152606490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b604d81116144ba57600a0a90565b818102929181159184041417156144ba57565b60405163a9059cbb60e01b60208201526001600160a01b0392909216602483015260448083019390935291815261483491614be56064836140c2565b614a14565b9060001981830981830291828083109203918083039214614c8f576c0c9f2c9cd04674edea400000009082821115614c52577f7d33c22789773a07feda8b6f0930e26fa397c439f1d5cf4b2eb27d7306d2dc99940990828211900360e21b9103601e1c170290565b60405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606490fd5b50506c0c9f2c9cd04674edea4000000091500490565b15614cac57565b60405162461bcd60e51b81526020600482015260026024820152610d2f60f31b6044820152606490fd5b15614cdd57565b60405162461bcd60e51b81526020600482015260026024820152611c1960f21b6044820152606490fd5b15614d0e57565b60405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606490fd5b93929190938215614ec6576000908082526020606e815260409081842093825194614d7486614042565b8054865260018060a01b038060018301541696878582015261014060098360028601541694858985015260ff6003820154868116606087015260a01c1615156080850152600481015460a0850152600581015460c0850152600681015460e08501526007810154610100850152600881015461012085015201549101528a16958614908115614ebc575b5015614e945782516370a0823160e01b8152306004820152918083602481895afa938415614e8957508193614e58575b505050614834959685809210614e47575b505050614ba9565b614e50926146a0565b388381614e3f565b9091809350813d8311614e82575b614e7081836140c2565b810103126100cf575051868580614e2e565b503d614e66565b51913d9150823e3d90fd5b50606491519062461bcd60e51b825260048201526002602482015261189d60f21b6044820152fd5b9050851438614dfe565b5050509050565b60806040918251614edd81614071565b6000928184809352826020820152828682015282606082015201528152606f60205220600460405191614f0f83614071565b805483526001810154602084015260028101546040840152600381015460608401520154608082015290565b604051614f4781614042565b60096000928383528360208401528360408401528360608401528360808401528360a08401528360c08401528360e0840152604061010094808686015261012092818487015281610140809701528152606e602052209060405194614fab86614042565b8254865260018301546001600160a01b0390811660208801526002840154811660408801526003840154908116606088015260a090811c60ff1615156080880152600484015490870152600583015460c0870152600683015460e08701526007830154908601526008820154908501520154908201529056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220d1214a6520ebe54999c453274d7b2b189b3f41e34455402c71630d44d2069d2c64736f6c63430008130033