0 txs
69 calls
constructor
No constructor.
functions
getExecutionPriceForDecrease
viewfunction getExecutionPriceForDecrease(tuple params, tuple indexTokenPrice) view returns (int256, uint256, bool)
getExecutionPriceForIncrease
viewfunction getExecutionPriceForIncrease(tuple params, tuple prices) view returns (int256, int256, uint256, uint256, bool)
getPositionPnlUsd
viewfunction getPositionPnlUsd(DataStore dataStore, tuple market, tuple prices, tuple position, uint256 sizeDeltaUsd) view returns (int256, int256, uint256)
isPositionLiquidatable
viewfunction isPositionLiquidatable(DataStore dataStore, IReferralStorage referralStorage, tuple position, tuple market, tuple prices, bool shouldValidateMinCollateralUsd, bool forLiquidation) view returns (bool, string, tuple)
validatePosition
viewfunction validatePosition(DataStore dataStore, IReferralStorage referralStorage, tuple position, tuple market, tuple prices, bool shouldValidateMinPositionSize, bool shouldValidateMinCollateralUsd) view
willPositionCollateralBeSufficient
viewfunction willPositionCollateralBeSufficient(DataStore dataStore, tuple market, tuple prices, address collateralToken, bool isLong, tuple values) view returns (bool, int256)
events
No events.
errors
EmptySizeDeltaInTokens
error EmptySizeDeltaInTokens()
InvalidCollateralTokenForMarket
error InvalidCollateralTokenForMarket(address market, address token)
InvalidPositionSizeValues
error InvalidPositionSizeValues(uint256 sizeInUsd, uint256 sizeInTokens)
LiquidatablePosition
error LiquidatablePosition(string reason, int256 remainingCollateralUsd, int256 minCollateralUsd, int256 minCollateralUsdForLeverage)
MinPositionSize
error MinPositionSize(uint256 positionSizeInUsd, uint256 minPositionSizeUsd)
NegativeExecutionPrice
error NegativeExecutionPrice(int256 executionPrice, uint256 price, uint256 positionSizeInUsd, int256 priceImpactUsd, uint256 sizeDeltaUsd)
OrderNotFulfillableAtAcceptablePrice
error OrderNotFulfillableAtAcceptablePrice(uint256 price, uint256 acceptablePrice)
PRBMath__MulDivFixedPointOverflow
error PRBMath__MulDivFixedPointOverflow(uint256 prod1)
PRBMathUD60x18__Exp2InputTooBig
error PRBMathUD60x18__Exp2InputTooBig(uint256 x)
PRBMathUD60x18__LogInputTooSmall
error PRBMathUD60x18__LogInputTooSmall(uint256 x)
PriceImpactLargerThanOrderSize
error PriceImpactLargerThanOrderSize(int256 priceImpactUsd, uint256 sizeDeltaUsd)
UnableToGetCachedTokenPrice
error UnableToGetCachedTokenPrice(address token, address market)
UnexpectedBorrowingFactor
error UnexpectedBorrowingFactor(uint256 positionBorrowingFactor, uint256 cumulativeBorrowingFactor)
UsdDeltaExceedsLongOpenInterest
error UsdDeltaExceedsLongOpenInterest(int256 usdDelta, uint256 longOpenInterest)
UsdDeltaExceedsShortOpenInterest
error UsdDeltaExceedsShortOpenInterest(int256 usdDelta, uint256 shortOpenInterest)
creation bytecode
0x6157eb610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100775760003560e01c8063610e3cb91461007c5780637396d38c146100be57806381db61b8146100e0578063a6dcd97614610110578063d7e3321114610132578063dac6485714610145578063e22de7931461016f575b600080fd5b61008f61008a366004615182565b61019d565b6040805195865260208601949094529284019190915260608301521515608082015260a0015b60405180910390f35b8180156100ca57600080fd5b506100de6100d93660046151d0565b61045a565b005b6100f36100ee36600461522b565b6105ad565b6040805193845260208401929092521515908201526060016100b5565b61012361011e366004615270565b6106f5565b6040516100b593929190615348565b6100de610140366004615270565b610bbf565b610158610153366004615388565b610dd7565b6040805192151583526020830191909152016100b5565b61018261017d366004615441565b610ea3565b604080519384526020840192909252908201526060016100b5565b60008060008060006101b88760400151602001516040015190565b6000036101f05760008060006101df6101d78b60800151604001515190565b8a5190611203565b600094509450945094509450610450565b6102246040518060a00160405280600081526020016000815260200160008152602001600015158152602001600081525090565b604080516080810182528951516001600160a01b031681526020808b0151818301528a83015101518201516102829282019061026490611220565b611220565b81526020016102798b60400151604001515190565b1515905261128e565b1515606083015280825288515160208a01515160408b01516102b393906102ae90602001516040015190565b61134c565b808252600012156102e3578651602001516102cd90611220565b81516102d991906154d1565b60208201526102f8565b80518751516102f29190611398565b60208201525b608088015160400151511561033557865160200151604089015161032190602001516040015190565b61032b91906154ff565b6040820152610359565b61035361034b8960400151602001516040015190565b88515161140c565b60408201525b600061036b8960800151604001515190565b156103935781602001516103828360400151611220565b61038c9190615513565b90506103b2565b81602001516103a58360400151611220565b6103af919061553b565b90505b60008112156103ed57815160408a8101516020015101516040516378320e4960e11b81526004016103e4929190615562565b60405180910390fd5b6104286104038a60400151602001516040015190565b61040c8361142f565b60408c01516020015160a0015160808d01516040015151611481565b6080830181905282516020840151604085015160609095015191995097509295509350909150505b9295509295909350565b60405163034aadf760e61b8152732a2987c407e76782fc422a27240c9821206b8d9f9063d2ab7dc0906104979087908790879087906004016155e6565b60006040518083038186803b1580156104af57600080fd5b505af41580156104c3573d6000803e3d6000fd5b5050604051631450a87960e01b8152732a2987c407e76782fc422a27240c9821206b8d9f9250631450a8799150610507908790879087908790600190600401615619565b60006040518083038186803b15801561051f57600080fd5b505af4158015610533573d6000803e3d6000fd5b5050604051631450a87960e01b8152732a2987c407e76782fc422a27240c9821206b8d9f9250631450a8799150610577908790879087908790600090600401615619565b60006040518083038186803b15801561058f57600080fd5b505af41580156105a3573d6000803e3d6000fd5b5050505050505050565b6000806000806105c68660400151602001516040015190565b9050806000036105fb5760006105ed6105e58860800151604001515190565b879015611203565b6000935093509350506106ee565b610621604051806060016040528060008152602001600015158152602001600081525090565b604080516080810182528851516001600160a01b031681526020808a01519082015261067091810161065285611220565b61065b9061565f565b81526020016102798a60400151604001515190565b1515602080840191909152818352885151908901515160408a015161069f93906102ae90602001516040015190565b80825260808801516020808201518051908201516040808d01519093015160a001519290930151516106d6948b94929388926114fc565b60408201819052815160209092015191955093509150505b9250925092565b600060606107016146f9565b61070961471a565b6107116146f9565b6107248c8a8a8d61017d8f602001515190565b5050825261073e6107378b516040015190565b8a8a6116ad565b60408301819052516107558b602001516040015190565b61075f919061567b565b606083015261077361025f8b602001515190565b61077c9061565f565b8260800181815250506107be60405180608001604052808e6001600160a01b031681526020018b8152602001846080015181526020016102798d604001515190565b151560c084015260a08301819052895160208c0151516107e0928f929161134c565b60a083015260006107f68b602001516060015190565b136108225787516020015161080a90611220565b60208b01516060015161081d9190615692565b610841565b87515161082e90611220565b60208b0151606001516108419190615692565b8260a0018181516108529190615513565b90525060a082015160001361086d57600060a08301526108bb565b600061087d8d8b6000015161174e565b9050600061089961025f6108938e602001515190565b846117c7565b6108a29061565f565b9050808460a0015112156108b85760a084018190525b50505b60006040518061014001604052808e6001600160a01b031681526020018d6001600160a01b031681526020018c8152602001846040015181526020018460c00151151581526020018b604001516001600160a01b031681526020018b606001516001600160a01b031681526020016109358d602001515190565b81526000602082018190526040909101819052909150610954826117e0565b90506000846040015160000151826101e00151610971919061567b565b905061097c81611220565b60a08601518651606088015161099190611220565b61099b9190615513565b6109a59190615513565b6109af919061553b565b845288156109cf576109c58f8d60000151611a4f565b60208601526109e3565b6109dd8f8d60000151611a69565b60208601525b6109ff61025f6109f58f602001515190565b87602001516117c7565b60408501528915610b0e57610ac78f6001600160a01b031663bd02d0f5604051602001610a529060208082526012908201527113525397d0d3d31310551154905317d554d160721b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401610a8691815260200190565b602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025f91906156c2565b6020850181905284511215610b0e57505060408051808201909152600e81526d1b5a5b8818dbdb1b185d195c985b60921b6020820152600196509450909250610bb2915050565b8351600012610b4457505060408051808201909152600381526203c20360ec1b6020820152600196509450909250610bb2915050565b604084015184511215610b9657505060408051808201909152601b81527a6d696e20636f6c6c61746572616c20666f72206c6576657261676560281b6020820152600196509450909250610bb2915050565b5050604080516020810190915260008082529650945090925050505b9750975097945050505050565b6020850151511580610bd657506020808601510151155b15610c0157602085810151805191015160405163bff65b3f60e01b81526103e4929190600401615562565b8351604051630ef68b4760e11b8152732a2987c407e76782fc422a27240c9821206b8d9f91631ded168e91610c3a918b916004016156db565b60006040518083038186803b158015610c5257600080fd5b505af4158015610c66573d6000803e3d6000fd5b50505050610c7f84610c7a87516040015190565b611a83565b8115610d7d576000876001600160a01b031663bd02d0f5604051602001610ccf9060208082526015908201527413525397d413d4d2551253d397d4d2569157d554d1605a1b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401610d0391815260200190565b602060405180830381865afa158015610d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4491906156c2565b905080610d5387602001515190565b1015610d7b57602086015151816040516342f7d98d60e11b81526004016103e4929190615562565b505b6000806000610d928a8a8a8a8a8960006106f5565b9250925092508215610dcb5781816000015182602001518360400151604051631782422160e31b81526004016103e494939291906156f5565b50505050505050505050565b6000806000610de78689896116ad565b90506000610df88260000151611220565b610e058660200151611220565b610e0f9190615692565b9050600085604001511215610e30576040850151610e2d9082615513565b90505b6000811215610e4657600093509150610e989050565b6000610e588b8b88606001518a611ab3565b90506000610e6a8c8c60000151611a69565b905081811115610e78578091505b6000610e8b61025f8960000151856117c7565b8412159650929450505050505b965096945050505050565b6000806000610f1560405180610180016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000610f30610f2688604001515190565b8951906000611aec565b9050610f4f81610f4589602090810151015190565b61025f919061567b565b8252604087015151610f7b578151610f6c61025f89602001515190565b610f76919061553b565b610f96565b610f8a61025f88602001515190565b8251610f96919061553b565b60208301819052604083018190526000121561111557604087015151610fc0578860600151610fc6565b88604001515b6001600160a01b031660608301819052610fe3908b908b90611b25565b6080830152604087015151610ffd57604088015151611004565b6020880151515b60a08301819052608083015161101a919061567b565b60c0830152875161103c908b908b906110358b604001515190565b6001611bcc565b60e083015288516040880151516110b2918c918560e001518660c00151604051602001611097906020808252601a90820152794d41585f504e4c5f464143544f525f464f525f5452414445525360301b604082015260600190565b60405160208183030381529060405280519060200120611c58565b610100830181905260e0830151148015906110d257506000826101000151135b80156110e2575060008260e00151135b156111155761110f6110f7836020015161142f565b83610100015161110a8560e0015161142f565b611ca8565b60208301525b8561112288602001515190565b0361113b5760208088015101515b610120830152611195565b6040870151511561116e576111308661115989602090810151015190565b611163919061567b565b60208901515161140c565b602087810151805191015161118490889061567b565b61118e91906154ff565b6101208301525b6111b782602001518361012001516111b28a602090810151015190565b611ce8565b61014083015260408201516101208301516020808a015101516111db929190611ce8565b610160830181905261014083015161012090930151929b909a50919850909650505050505050565b600081611211578251611217565b82602001515b90505b92915050565b60006001600160ff1b0382111561128a5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016103e4565b5090565b600080600061129c84611cf5565b90506000806112b8866000015187602001516000015185611d38565b91509150600082126112cf57909590945092505050565b6000806112e88860000151896020015160200151611e62565b91509150816112fe575091969095509350505050565b600061130a8983611f78565b90506000806113268b600001518c602001516000015185611d38565b9150915086821261133857868661133b565b81815b995099505050505050505050915091565b60008083121561135d575081611390565b600061136b86866001611ff2565b9050600061137c61025f85846117c7565b90508085131561138a578094505b84925050505b949350505050565b6000808312156113da576113ab82611220565b6113b483611220565b6113be908561553b565b6113c9906001615513565b6113d391906154d1565b905061121a565b6113e382611220565b60016113ee84611220565b6113f89086615513565b611402919061553b565b61121791906154d1565b600081600161141b8286615724565b6114259190615737565b61121791906154ff565b60008082121561128a5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016103e4565b6000836000036114a457604051633df4253160e01b815260040160405180910390fd5b60006114b085876154ff565b90508280156114bf5750838111155b806114d35750821580156114d35750838110155b156114df579050611390565b808460405163e09ad0e960e01b81526004016103e4929190615562565b600061152260405180606001604052806000815260200160008152602001600081525090565b61152d898415611203565b808252602082015285158015906115445750600087115b15611648578261155c576115578561565f565b61155e565b845b60408201819052600013801561158857508561158682604001516115819061565f565b61142f565b115b156115ae578060400151866040516378320e4960e11b81526004016103e4929190615562565b60006115b987611220565b6115c88a84604001518b611ca8565b6115d291906154d1565b90506000816115e48460000151611220565b6115ee9190615513565b90506000811215611637578251604080850151905163cc32db9960e01b8152600481018490526024810192909252604482018c905260648201526084810189905260a4016103e4565b6116408161142f565b602084015250505b828015611659575083816020015110155b80611671575082158015611671575083816020015111155b15611681576020015190506116a2565b80602001518460405163e09ad0e960e01b81526004016103e4929190615562565b979650505050505050565b6116b561475f565b82604001516001600160a01b0316846001600160a01b0316036116dd57506020810151611747565b82606001516001600160a01b0316846001600160a01b03160361170557506040810151611747565b82602001516001600160a01b0316846001600160a01b03160361172a57508051611747565b8251604051635f2394d160e11b81526103e49186916004016156db565b9392505050565b6000826001600160a01b031663bd02d0f561176884612019565b6040518263ffffffff1660e01b815260040161178691815260200190565b602060405180830381865afa1580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121791906156c2565b6000611217838368327cb2734119d3b7a9601e1b6120bb565b6117e8614779565b6000611822836000015184602001518560600151866080015161180e8860400151515190565b604089015151602001518960e001516120c8565b9050600061183884600001518560400151612552565b905061184d84600001518560600151836125df565b6060830152610120840151156118835783516040850151516020015161187d91908660e0015187606001516126ee565b60a08301525b8160a00151606001518260a00151602001518360600151606001518460600151602001518561018001516118b79190615724565b6118c19190615737565b6118cb9190615724565b6118d59190615737565b61016083015260a082015160609081015181840151909101516118f89190615724565b826101400181815161190a9190615724565b9052508351604080860151805160208101519083015191909201515161193293929190612894565b604080840151606001919091528451908501515160200151611962919060a087015160408089015101515161290f565b604080840151608001919091528451908501515160200151611992919060c087015160408089015101515161290f565b826040015160a00181815250506119b18260400151856040015161292b565b60408301528351606085015160e08601516101008701516119d4939291906129a7565b82608001819052508161020001518260800151604001518360a0015160200151846060015160200151856101a00151611a0d9190615724565b611a179190615724565b611a219190615724565b611a2b9190615737565b6101c08301819052604083015151611a4291615724565b6101e08301525092915050565b6000826001600160a01b031663bd02d0f561176884612a0f565b6000826001600160a01b031663bd02d0f561176884612a60565b611a8d8282612a9b565b611aaf5781516040516341ce349f60e11b81526103e4919083906004016156db565b5050565b600080611ac1868685612ad4565b9050611acd8185612b27565b90506000611ae087876000015186612b57565b90506116a282826117c7565b60008215611b0d5781611b00578351611b06565b83602001515b9050611747565b81611b1c578360200151611390565b50509051919050565b600080611b3a84604001518560600151612bd1565b905080856001600160a01b031663bd02d0f5611b5a876000015187612c00565b6040518263ffffffff1660e01b8152600401611b7891815260200190565b602060405180830381865afa158015611b95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb991906156c2565b611bc391906154ff565b95945050505050565b600080611bdd61025f888887612ad4565b90506000611bec888887612c88565b9050811580611bf9575080155b15611c0957600092505050611bc3565b6000611c16878787611aec565b90506000611c2761025f838561567b565b9050600087611c3f57611c3a828661553b565b611c49565b611c49858361553b565b9b9a5050505050505050505050565b600080841215611c69575082611c9e565b6000611c7788848989612ccf565b90506000611c8861025f86846117c7565b9050808613611c975785611c99565b805b925050505b9695505050505050565b600080611cbe85611cb886612ceb565b856120bb565b905060008413611cdf57611cd181611220565b611cda9061565f565b611bc3565b611bc381611220565b6000611390838584611ca8565b611cfd6148a6565b6000611d13836000015184602001516001612ad4565b90506000611d2b846000015185602001516000612ad4565b9050611390848383612cfc565b6000806000611d4f84600001518560200151612dee565b90506000611d6585604001518660600151612dee565b6060860151604087015160208801518851939450909211159111151460006001600160a01b03891663bd02d0f5611d9b8a612e10565b6040518263ffffffff1660e01b8152600401611db991815260200190565b602060405180830381865afa158015611dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfa91906156c2565b90508383108215611e30576000611e128b8b84612e53565b9050611e2086868386612e62565b8297509750505050505050611e5a565b600080611e3d8c8c612ea0565b91509150611e4e8787848488612fb4565b98509196505050505050505b935093915050565b6000806000846001600160a01b031663a6ed563e611e7f86612ffd565b6040518263ffffffff1660e01b8152600401611e9d91815260200190565b602060405180830381865afa158015611eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ede91906156c2565b905080611ef2576000809250925050611f71565b6001856001600160a01b031663dc97d962611f0c84613033565b6040518263ffffffff1660e01b8152600401611f2a91815260200190565b602060405180830381865afa158015611f47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6b91906156c2565b92509250505b9250929050565b611f806148a6565b6000806000841315611f9c57611f958461142f565b9050611fab565b611fa86115818561565f565b91505b600085604001511215611fe7576000611fcb86604001516115819061565f565b9050611fd78184615724565b9250611fe38183615724565b9150505b611bc3858383612cfc565b6000806000612001868661309e565b91509150836120105780611c9e565b50949350505050565b6000604051602001612070906020808252602b908201527f4d41585f504f534954494f4e5f494d504143545f464143544f525f464f525f4c60408201526a49515549444154494f4e5360a81b606082015260800190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038416908201526060015b604051602081830303815290604052805190602001209050919050565b600061139084848461313a565b6120d0614779565b6120d8614779565b60c0810187905280516001600160a01b03861660409091015260006120fe8a8a88613224565b865160c081019290925260808201929092526001600160a01b039283166020820152929092529091508a1663bd02d0f5612138878a613563565b6040518263ffffffff1660e01b815260040161215691815260200190565b602060405180830381865afa158015612173573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219791906156c2565b60e083018190528851906121ac9086906117c7565b6121b691906154ff565b6101a08301526001600160a01b038a1663bd02d0f56121d4886135d6565b6040518263ffffffff1660e01b81526004016121f291815260200190565b602060405180830381865afa15801561220f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223391906156c2565b602083018051919091525151156122fa57896001600160a01b031663bd02d0f561226484602001516000015161360b565b6040518263ffffffff1660e01b815260040161228291815260200190565b602060405180830381865afa15801561229f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c391906156c2565b6020808401805182019290925290510151156122fa576122f0826101a001518360200151602001516117c7565b6020830151604001525b815151156123f057815160808082015160a090920191909152825160c08101519101516123279190615724565b825160600152815160c00151602080840151015111156123925781516060015160208084015101511161237157602080830151015182516060015161236c9190615737565b612373565b805b825160a0908101919091528251015181111561239257815160a0018190525b6123a9826101a00151836000015160a001516117c7565b825161012001526101a0820151825160c001516123c691906117c7565b825161010090810191909152825190810151610120909101516123e99190615724565b825160e001525b8151610100015160208301516040015111612411578151610100015161241b565b8160200151604001515b6102008301819052825161012001516101a084015161243a9190615737565b6124449190615737565b6101008301526040516001600160a01b038b169063bd02d0f59061249b906020016020808252601c908201527b2827a9a4aa24a7a72fa322a2afa922a1a2a4ab22a92fa320a1aa27a960211b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016124cf91815260200190565b602060405180830381865afa1580156124ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251091906156c2565b6101208301819052610100830151612527916117c7565b610140830181905261010083015161253f9190615737565b6101808301525098975050505050505050565b6000806125708461256585516020015190565b604086015151613644565b90508061258284602001516080015190565b11156125ad5760208301516080015181604051634cd96ac160e11b81526004016103e4929190615562565b60006125be84602001516080015190565b6125c89083615737565b9050611bc36125d985602001515190565b826117c7565b6125e76148a6565b6125ef6148a6565b82815283516125fe90846154ff565b816020018181525050846001600160a01b031663bd02d0f5604051602001612657906020808252601d908201527f424f52524f57494e475f4645455f52454345495645525f464143544f52000000604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161268b91815260200190565b602060405180830381865afa1580156126a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cc91906156c2565b6040820181905260208201516126e1916117c7565b6060820152949350505050565b6126f66148a6565b6126fe6148a6565b6000866001600160a01b031663bd02d0f56127188861365f565b6040518263ffffffff1660e01b815260040161273691815260200190565b602060405180830381865afa158015612753573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277791906156c2565b90508060000361278957509050611390565b61279385826117c7565b80835284516127a2919061140c565b826020018181525050866001600160a01b031663bd02d0f56040516020016127fb906020808252601f908201527f4c49515549444154494f4e5f4645455f52454345495645525f464143544f5200604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161282f91815260200190565b602060405180830381865afa15801561284c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287091906156c2565b604083018190526020830151612885916117c7565b60608301525095945050505050565b6000846001600160a01b031663bd02d0f56128b086868661369b565b6040518263ffffffff1660e01b81526004016128ce91815260200190565b602060405180830381865afa1580156128eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc391906156c2565b6000846001600160a01b031663bd02d0f56128b086868661373c565b6129336148ce565b612957836060015161294a846020015160a0015190565b6020850151516001613789565b8352608083015161297e90612971846020015160c0015190565b6020850151516000613789565b602084015260a083015161299b90612971846020015160e0015190565b60408401525090919050565b6129af614904565b6129b7614904565b6001600160a01b0383166129cc579050611390565b6001600160a01b03831681526129e286846137c0565b602082018190528551906129f79086906117c7565b612a0191906154ff565b604082015295945050505050565b60006040516020016120709060208082526025908201527f4d494e5f434f4c4c41544552414c5f464143544f525f464f525f4c495155494460408201526420aa24a7a760d91b606082015260800190565b60006040516020016120709060208082526015908201527426a4a72fa1a7a62620aa22a920a62fa320a1aa27a960591b604082015260600190565b600082604001516001600160a01b0316826001600160a01b031614806112175750506060909101516001600160a01b0391821691161490565b600080612ae984604001518560600151612bd1565b90506000612b0286866000015187604001518786613906565b90506000612b1b87876000015188606001518887613906565b90506116a28183615724565b600080821315612b4457612b3a82612ceb565b6113d39084615724565b612b4d82612ceb565b6112179084615737565b6000836001600160a01b031663bd02d0f5612b72858561398c565b6040518263ffffffff1660e01b8152600401612b9091815260200190565b602060405180830381865afa158015612bad573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139091906156c2565b6000816001600160a01b0316836001600160a01b031614612bf3576001612bf6565b60025b60ff169392505050565b6000604051602001612c31906020808252600b908201526a1413d3d317d05353d5539560aa1b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b0380861691830191909152831660608201526080015b60405160208183030381529060405280519060200120905092915050565b600080612c9d84604001518560600151612bd1565b90506000612cb6868660000151876040015187866139ea565b90506000612b1b878760000151886060015188876139ea565b6000846001600160a01b031663bd02d0f56128b0868686613a07565b60008082121561128a575060000390565b612d046148a6565b60608401518390839015612d705760008660400151128015612d35575084612d3387604001516115819061565f565b115b15612d5b5785604001518560405163756d7c9d60e11b81526004016103e4929190615562565b612d69858760400151612b27565b9150612dca565b60008660400151128015612d93575083612d9187604001516115819061565f565b115b15612db95785604001518460405163022bc34560e61b81526004016103e4929190615562565b612dc7848760400151612b27565b90505b60408051608081018252958652602086019490945292840152506060820152919050565b6000818311612e0657612e018383615737565b611217565b6112178284615737565b6000604051602001612070906020808252601f908201527f504f534954494f4e5f494d504143545f4558504f4e454e545f464143544f5200604082015260600190565b60008060006120018686612ea0565b600084841081612e86612e76888787613a7b565b612e81888888613a7b565b612dee565b90506000612e948284613a94565b98975050505050505050565b6000806000846001600160a01b031663bd02d0f5612ebf866001613ab7565b6040518263ffffffff1660e01b8152600401612edd91815260200190565b602060405180830381865afa158015612efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1e91906156c2565b90506000856001600160a01b031663bd02d0f5612f3c876000613ab7565b6040518263ffffffff1660e01b8152600401612f5a91815260200190565b602060405180830381865afa158015612f77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9b91906156c2565b905080821115612fa9578091505b909590945092505050565b600080612fc2878685613a7b565b90506000612fd1878686613a7b565b90506000612fdf8383612dee565b90506000612fef82848611613a94565b9a9950505050505050505050565b60006040516020016120709060208082526010908201526f1592549515505317d513d2d15397d25160821b604082015260600190565b6000604051602001613076906020808252601f908201527f5649525455414c5f494e56454e544f52595f464f525f504f534954494f4e5300604082015260600190565b604051602081830303815290604052805190602001208260405160200161209e929190615562565b6000806000846001600160a01b031663bd02d0f56130bd866001613af3565b6040518263ffffffff1660e01b81526004016130db91815260200190565b602060405180830381865afa1580156130f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311c91906156c2565b90506000856001600160a01b031663bd02d0f5612f3c876000613af3565b60008080600019858709858702925082811083820303915050806000036131745783828161316a5761316a6154a5565b0492505050611747565b8084116131bb5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016103e4565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000808080806001600160a01b03871661324c57506000935083925082915081905080613558565b6040516310ae4b6b60e31b81526000906001600160a01b038916906385725b589061327b908a9060040161574a565b602060405180830381865afa158015613298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132bc91906156c2565b90506000808080841561350a576040516306459e2360e51b8152600481018690526001600160a01b038d169063c8b3c46090602401602060405180830381865afa15801561330e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613332919061575e565b935060008c6001600160a01b0316631582a018866040518263ffffffff1660e01b8152600401613362919061574a565b602060405180830381865afa15801561337f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133a391906156c2565b60405163039af9eb60e01b8152600481018290529091506001600160a01b038e169063039af9eb906024016040805180830381865afa1580156133ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061340e919061577b565b90945092506001600160a01b038e1663bd02d0f561342b83613b33565b6040518263ffffffff1660e01b815260040161344991815260200190565b602060405180830381865afa158015613466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348a91906156c2565b915060008d6001600160a01b03166371a6a790876040518263ffffffff1660e01b81526004016134ba919061574a565b602060405180830381865afa1580156134d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fb91906156c2565b90508015613507578093505b50505b600061352b61271061351c858761567b565b61352691906154ff565b613b74565b9050600061353885613b74565b905060006135468383615737565b979c50959a5095985096509450505050505b939792965093509350565b600060405160200161359c906020808252601390820152722827a9a4aa24a7a72fa322a2afa320a1aa27a960691b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038516908201528215156060820152608001612c6a565b6000604051602001612070906020808252600f908201526e282927afaa2920a222a92faa24a2a960891b604082015260600190565b600060405160200161307690602080825260139082015272282927afa224a9a1a7aaa72a2fa320a1aa27a960691b604082015260600190565b6000836001600160a01b031663bd02d0f5612b728585613b99565b6000604051602001612070906020808252601690820152752624a8aaa4a220aa24a7a72fa322a2afa320a1aa27a960511b604082015260600190565b60006040516020016136dc906020808252601b908201527a46554e44494e475f4645455f414d4f554e545f5045525f53495a4560281b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038087169183019190915284166060820152821515608082015260a0015b6040516020818303038152906040528051906020012090509392505050565b60006040516020016136dc9060208082526021908201527f434c41494d41424c455f46554e44494e475f414d4f554e545f5045525f53495a6040820152604560f81b606082015260800190565b6000806137968587615737565b9050611c9e84826137ba66038d7ea4c6800068327cb2734119d3b7a9601e1b61567b565b86613bda565b600080836001600160a01b031663bd02d0f56040516020016138079060208082526011908201527026a0ac2faaa4afa322a2afa320a1aa27a960791b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161383b91815260200190565b602060405180830381865afa158015613858573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061387c91906156c2565b90506000846001600160a01b031663bd02d0f561389886613c01565b6040518263ffffffff1660e01b81526004016138b691815260200190565b602060405180830381865afa1580156138d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f791906156c2565b90508181106113905781611bc3565b600081866001600160a01b031663bd02d0f5613923888888613c34565b6040518263ffffffff1660e01b815260040161394191815260200190565b602060405180830381865afa15801561395e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398291906156c2565b611c9e91906154ff565b600060405160200161359c9060208082526032908201527f4d494e5f434f4c4c41544552414c5f464143544f525f464f525f4f50454e5f49604082015271272a22a922a9aa2fa6aaa62a24a82624a2a960711b606082015260800190565b600081866001600160a01b031663bd02d0f5613923888888613c67565b6000604051602001613a3b906020808252600e908201526d26a0ac2fa827262fa320a1aa27a960911b604082015260600190565b60408051601f1981840301815282825280516020918201209083015281018590526001600160a01b0384166060820152821515608082015260a00161371d565b600080613a888584613ca4565b9050611bc381856117c7565b60008115613aa5576113d383611220565b613aae83611220565b6113d39061565f565b600060405160200161359c906020808252601690820152752827a9a4aa24a7a72fa4a6a820a1aa2fa320a1aa27a960511b604082015260600190565b600060405160200161359c906020808252601a908201527926a0ac2fa827a9a4aa24a7a72fa4a6a820a1aa2fa320a1aa27a960311b604082015260600190565b6000604051602001613076906020808252601b908201527a26a4a72fa0a32324a624a0aa22afa922aba0a9222fa320a1aa27a960291b604082015260600190565b6000612710613b8f68327cb2734119d3b7a9601e1b8461567b565b61121a91906154ff565b600060405160200161359c906020808252601b908201527a21aaa6aaa620aa24ab22afa127a92927aba4a723afa320a1aa27a960291b604082015260600190565b60008115613bf657613bef8585856001613d03565b9050611390565b611bc385858561313a565b6000604051602001612070906020808252600d908201526c2aa4afa322a2afa320a1aa27a960991b604082015260600190565b60006040516020016136dc906020808252600d908201526c13d4115397d2539511549154d5609a1b604082015260600190565b60006040516020016136dc906020808252601790820152764f50454e5f494e5445524553545f494e5f544f4b454e5360481b604082015260600190565b600068327cb2734119d3b7a9601e1b831015613cc25750600061121a565b68327cb2734119d3b7a9601e1b8203613cdc57508161121a565b6000613cf8613cea85613d54565b613cf385613d54565b613d65565b905061139081613da5565b600080613d1186868661313a565b90506001836002811115613d2757613d2761579f565b148015613d44575060008480613d3f57613d3f6154a5565b868809115b15611bc357611c9e600182615724565b600061121a64e8d4a51000836154ff565b600082600003613d8b578115613d7c5760006113d3565b50670de0b6b3a764000061121a565b611217613da0613d9a85613db6565b84613e6c565b613e78565b600061121a64e8d4a510008361567b565b6000670de0b6b3a7640000821015613de457604051633621413760e21b8152600481018390526024016103e4565b6000613df9670de0b6b3a76400008404613ebe565b670de0b6b3a764000081029250905082811c670de0b6b3a763ffff198101613e22575050919050565b6706f05b59d3b200005b8015613e6457670de0b6b3a7640000828002049150671bc16d674ec800008210613e5c579283019260019190911c905b60011c613e2c565b505050919050565b60006112178383613fa1565b6000680a688906bd8b0000008210613ea657604051634a4f26f160e01b8152600481018390526024016103e4565b670de0b6b3a7640000604083901b0461174781614067565b6000600160801b8210613ede57608091821c91613edb9082615724565b90505b600160401b8210613efc57604091821c91613ef99082615724565b90505b600160201b8210613f1a57602091821c91613f179082615724565b90505b620100008210613f3757601091821c91613f349082615724565b90505b6101008210613f5357600891821c91613f509082615724565b90505b60108210613f6e57600491821c91613f6b9082615724565b90505b60048210613f8957600291821c91613f869082615724565b90505b60028210613f9c5761121a600182615724565b919050565b60008080600019848609848602925082811083820303915050670de0b6b3a76400008110613fe55760405163698d9a0160e11b8152600481018290526024016103e4565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff82119050826000036140235780670de0b6b3a764000085040194505050505061121a565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b600160bf1b6001603f1b8216156140875768016a09e667f3bcc9090260401c5b6001603e1b8216156140a2576801306fe0a31b7152df0260401c5b6001603d1b8216156140bd576801172b83c7d517adce0260401c5b6001603c1b8216156140d85768010b5586cf9890f62a0260401c5b6001603b1b8216156140f3576801059b0d31585743ae0260401c5b6001603a1b82161561410e57680102c9a3e778060ee70260401c5b600160391b8216156141295768010163da9fb33356d80260401c5b600160381b82161561414457680100b1afa5abcbed610260401c5b600160371b82161561415f5768010058c86da1c09ea20260401c5b600160361b82161561417a576801002c605e2e8cec500260401c5b600160351b82161561419557680100162f3904051fa10260401c5b600160341b8216156141b0576801000b175effdc76ba0260401c5b600160331b8216156141cb57680100058ba01fb9f96d0260401c5b600160321b8216156141e65768010002c5cc37da94920260401c5b600160311b821615614201576801000162e525ee05470260401c5b600160301b82161561421c5768010000b17255775c040260401c5b6001602f1b821615614237576801000058b91b5bc9ae0260401c5b6001602e1b82161561425257680100002c5c89d5ec6d0260401c5b6001602d1b82161561426d5768010000162e43f4f8310260401c5b6001602c1b82161561428857680100000b1721bcfc9a0260401c5b6001602b1b8216156142a35768010000058b90cf1e6e0260401c5b6001602a1b8216156142be576801000002c5c863b73f0260401c5b600160291b8216156142d957680100000162e430e5a20260401c5b600160281b8216156142f4576801000000b1721835510260401c5b600160271b82161561430f57680100000058b90c0b490260401c5b600160261b82161561432a5768010000002c5c8601cc0260401c5b600160251b821615614345576801000000162e42fff00260401c5b600160241b8216156143605768010000000b17217fbb0260401c5b600160231b82161561437b576801000000058b90bfce0260401c5b600160221b82161561439657680100000002c5c85fe30260401c5b600160211b8216156143b15768010000000162e42ff10260401c5b600160201b8216156143cc57680100000000b17217f80260401c5b63800000008216156143e75768010000000058b90bfc0260401c5b6340000000821615614402576801000000002c5c85fe0260401c5b632000000082161561441d57680100000000162e42ff0260401c5b6310000000821615614438576801000000000b17217f0260401c5b630800000082161561445357680100000000058b90c00260401c5b630400000082161561446e5768010000000002c5c8600260401c5b6302000000821615614489576801000000000162e4300260401c5b63010000008216156144a45768010000000000b172180260401c5b628000008216156144be576801000000000058b90c0260401c5b624000008216156144d857680100000000002c5c860260401c5b622000008216156144f25768010000000000162e430260401c5b6210000082161561450c57680100000000000b17210260401c5b620800008216156145265768010000000000058b910260401c5b62040000821615614540576801000000000002c5c80260401c5b6202000082161561455a57680100000000000162e40260401c5b620100008216156145735761b172600160401b010260401c5b61800082161561458b576158b9600160401b010260401c5b6140008216156145a357612c5d600160401b010260401c5b6120008216156145bb5761162e600160401b010260401c5b6110008216156145d357610b17600160401b010260401c5b6108008216156145eb5761058c600160401b010260401c5b610400821615614603576102c6600160401b010260401c5b61020082161561461b57610163600160401b010260401c5b6101008216156146325760b1600160401b010260401c5b6080821615614648576059600160401b010260401c5b604082161561465e57602c600160401b010260401c5b6020821615614674576016600160401b010260401c5b601082161561468a57600b600160401b010260401c5b60088216156146a0576006600160401b010260401c5b60048216156146b6576003600160401b010260401c5b60028216156146cc576001600160401b010260401c5b60018216156146e2576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b60405180606001604052806000815260200160008152602001600081525090565b6040518060e00160405280600081526020016000815260200161473b61475f565b81526020016000815260200160008152602001600081526020016000151581525090565b604051806040016040528060008152602001600081525090565b6040518061022001604052806147f06040518061014001604052806000801916815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200161481960405180606001604052806000815260200160008152602001600081525090565b81526020016148266148ce565b81526020016148336148a6565b8152602001614840614904565b815260200161484d6148a6565b815260200161485a61475f565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b03811182821017156149665761496661492e565b60405290565b604051608081016001600160401b03811182821017156149665761496661492e565b60405161018081016001600160401b03811182821017156149665761496661492e565b60405161010081016001600160401b03811182821017156149665761496661492e565b604051606081016001600160401b03811182821017156149665761496661492e565b60405161014081016001600160401b03811182821017156149665761496661492e565b604051601f8201601f191681016001600160401b0381118282101715614a4157614a4161492e565b604052919050565b6001600160a01b0381168114614a5e57600080fd5b50565b8035613f9c81614a49565b600060e08284031215614a7e57600080fd5b614a86614944565b90508135614a9381614a49565b81526020820135614aa381614a49565b60208201526040820135614ab681614a49565b60408201526060820135614ac981614a49565b6060820152614ada60808301614a61565b6080820152614aeb60a08301614a61565b60a0820152614afc60c08301614a61565b60c082015292915050565b600060808284031215614b1957600080fd5b614b2161496c565b90508135614b2e81614a49565b81526020820135614b3e81614a49565b60208201526040820135614b5181614a49565b60408201526060820135614b6481614a49565b606082015292915050565b60006001600160401b03821115614b8857614b8861492e565b5060051b60200190565b600082601f830112614ba357600080fd5b8135614bb6614bb182614b6f565b614a19565b8082825260208201915060208360051b860101925085831115614bd857600080fd5b602085015b83811015614bfe578035614bf081614a49565b835260209283019201614bdd565b5095945050505050565b803560098110613f9c57600080fd5b803560038110613f9c57600080fd5b60006101808284031215614c3957600080fd5b614c4161498e565b9050614c4c82614c08565b8152614c5a60208301614c17565b602082015260408281013590820152606080830135908201526080808301359082015260a0808301359082015260c0808301359082015260e080830135908201526101008083013590820152610120808301359082015261014080830135908201526101609182013591810191909152919050565b80358015158114613f9c57600080fd5b600060808284031215614cf157600080fd5b614cf961496c565b9050614d0482614ccf565b8152614d1260208301614ccf565b6020820152614d2360408301614ccf565b6040820152614b6460608301614ccf565b600082601f830112614d4557600080fd5b8135614d53614bb182614b6f565b8082825260208201915060208360051b860101925085831115614d7557600080fd5b602085015b83811015614bfe578035835260209283019201614d7a565b60006102408284031215614da557600080fd5b614dad61496c565b905081356001600160401b03811115614dc557600080fd5b82016101008185031215614dd857600080fd5b614de06149b1565b614de982614a61565b8152614df760208301614a61565b6020820152614e0860408301614a61565b6040820152614e1960608301614a61565b6060820152614e2a60808301614a61565b6080820152614e3b60a08301614a61565b60a0820152614e4c60c08301614a61565b60c082015260e08201356001600160401b03811115614e6a57600080fd5b614e7686828501614b92565b60e083015250825250614e8c8360208401614c26565b6020820152614e9f836101a08401614cdf565b60408201526102208201356001600160401b03811115614ebe57600080fd5b614eca84828501614d34565b60608301525092915050565b600060208284031215614ee857600080fd5b604051602081016001600160401b0381118282101715614f0a57614f0a61492e565b604052905080614f1983614ccf565b905292915050565b60008183036101c0811215614f3557600080fd5b614f3d6149d4565b91506060811215614f4d57600080fd5b614f556149d4565b8335614f6081614a49565b81526020840135614f7081614a49565b60208201526040840135614f8381614a49565b60408201528252610140605f1982011215614f9d57600080fd5b50614fa66149f6565b606083810135825260808085013560208085019190915260a080870135604086015260c0808801359486019490945260e0808801359386019390935261010080880135918601919091526101208088013594860194909452610140870135928501929092526101608601359184019190915261018085013591830191909152820152615036836101a08401614ed6565b604082015292915050565b803560028110613f9c57600080fd5b60006103a0828403121561506357600080fd5b61506b614944565b90506150778383614a6c565b81526150868360e08401614b07565b60208201526101608201356001600160401b038111156150a557600080fd5b6150b184828501614d92565b60408301525061018082013560608201526150d0836101a08401614f21565b608082015261036082013560a0820152614afc6103808301615041565b6000604082840312156150ff57600080fd5b604080519081016001600160401b03811182821017156151215761512161492e565b604052823581526020928301359281019290925250919050565b600060c0828403121561514d57600080fd5b6151556149d4565b905061516183836150ed565b815261517083604084016150ed565b602082015261503683608084016150ed565b60008060e0838503121561519557600080fd5b82356001600160401b038111156151ab57600080fd5b6151b785828601615050565b9250506151c7846020850161513b565b90509250929050565b60008060008061018085870312156151e757600080fd5b84356151f281614a49565b9350602085013561520281614a49565b92506152118660408701614b07565b91506152208660c0870161513b565b905092959194509250565b6000806060838503121561523e57600080fd5b82356001600160401b0381111561525457600080fd5b61526085828601615050565b9250506151c784602085016150ed565b6000806000806000806000610380888a03121561528c57600080fd5b873561529781614a49565b965060208801356152a781614a49565b95506152b68960408a01614f21565b94506152c6896102008a01614b07565b93506152d6896102808a0161513b565b92506152e56103408901614ccf565b91506152f46103608901614ccf565b905092959891949750929550565b6000815180845260005b818110156153285760208185018101518683018201520161530c565b506000602082860101526020601f19601f83011685010191505092915050565b831515815260a06020820152600061536360a0830185615302565b9050825160408301526020830151606083015260408301516080830152949350505050565b6000806000806000808688036102208112156153a357600080fd5b87356153ae81614a49565b96506153bd8960208a01614b07565b95506153cc8960a08a0161513b565b94506101608801356153dd81614a49565b93506153ec6101808901614ccf565b9250608061019f198201121561540157600080fd5b5061540a61496c565b6101a088013581526101c088013560208201526101e088013560408201526102009097013560608801525093969295509093909291565b6000806000806000610340868803121561545a57600080fd5b853561546581614a49565b94506154748760208801614b07565b93506154838760a0880161513b565b9250615493876101608801614f21565b94979396509194610320013592915050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000826154e0576154e06154a5565b600160ff1b8214600019841416156154fa576154fa6154bb565b500590565b60008261550e5761550e6154a5565b500490565b8082018281126000831280158216821582161715615533576155336154bb565b505092915050565b818103600083128015838313168383128216171561555b5761555b6154bb565b5092915050565b918252602082015260400190565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b6155b882825180518252602090810151910152565b602081810151805160408501529081015160608401525060400151805160808301526020015160a090910152565b6001600160a01b03858116825284166020820152610180810161560c6040830185615570565b611bc360c08301846155a3565b6001600160a01b038681168252851660208201526101a0810161563f6040830186615570565b61564c60c08301856155a3565b8215156101808301529695505050505050565b6000600160ff1b8201615674576156746154bb565b5060000390565b808202811582820484141761121a5761121a6154bb565b80820260008212600160ff1b841416156156ae576156ae6154bb565b818105831482151761121a5761121a6154bb565b6000602082840312156156d457600080fd5b5051919050565b6001600160a01b0392831681529116602082015260400190565b6080815260006157086080830187615302565b6020830195909552506040810192909252606090910152919050565b8082018082111561121a5761121a6154bb565b8181038181111561121a5761121a6154bb565b6001600160a01b0391909116815260200190565b60006020828403121561577057600080fd5b815161174781614a49565b6000806040838503121561578e57600080fd5b505080516020909101519092909150565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220a60b86126c0b9c780d1418323257feff2629ab109dff4f2faca8f98839e1460564736f6c634300081c0033