3 txs
639 calls
constructor
constructor(address _initialOwner, address __supplyToken, address __borrowToken, address _morphoAddress, address _morphoMarketOracle, address _morphoMarketIrm, uint96 _morphoMarketLltv, uint256 _maxSafeLtv)
functions
availableToBorrow
viewfunction availableToBorrow() view returns (uint256)
availableToSupply
purefunction availableToSupply() pure returns (uint256 supplyCap, uint256 available)
availableToWithdraw
viewfunction availableToWithdraw() view returns (uint256)
borrowToken
viewfunction borrowToken() view returns (address)
debtAccountData
viewfunction debtAccountData() view returns (uint256 collateral, uint256 collateralPrice, uint256 borrowed, uint256 maxBorrow, uint256 currentLtv, uint256 healthFactor)
debtBalance
viewfunction debtBalance() view returns (uint256)
explicitFunctionAccess
viewfunction explicitFunctionAccess(address, bytes4) view returns (bool)
getMarketParams
viewfunction getMarketParams() view returns (tuple)
isSafeAlRatio
viewfunction isSafeAlRatio(uint256 alRatio) view returns (bool)
marketId
viewfunction marketId() view returns (bytes32)
maxSafeLtv
viewfunction maxSafeLtv() view returns (uint256)
morpho
viewfunction morpho() view returns (address)
morphoMarketIrm
viewfunction morphoMarketIrm() view returns (address)
morphoMarketLltv
viewfunction morphoMarketLltv() view returns (uint96)
morphoMarketOracle
viewfunction morphoMarketOracle() view returns (address)
owner
viewfunction owner() view returns (address)
positionOwner
viewfunction positionOwner() view returns (address)
suppliedBalance
viewfunction suppliedBalance() view returns (uint256)
supplyToken
viewfunction supplyToken() view returns (address)
swapper
viewfunction swapper() view returns (address)
acceptOwner
nonpayablefunction acceptOwner()
borrow
nonpayablefunction borrow(uint256 borrowAmount, address recipient)
decreaseLeverage
nonpayablefunction decreaseLeverage(uint256 repayAmount, uint256 withdrawCollateralAmount, bytes swapData, uint256 repaySurplusThreshold) returns (uint256 debtRepaidAmount, uint256 surplusDebtRepaid)
increaseLeverage
nonpayablefunction increaseLeverage(uint256 supplyAmount, uint256 borrowAmount, bytes swapData, uint256 supplyCollateralSurplusThreshold) returns (uint256 totalCollateralSupplied)
onMorphoRepay
nonpayablefunction onMorphoRepay(uint256 repayAmount, bytes data)
onMorphoSupplyCollateral
nonpayablefunction onMorphoSupplyCollateral(uint256 supplyAmount, bytes data)
proposeNewOwner
nonpayablefunction proposeNewOwner(address account)
recoverToken
nonpayablefunction recoverToken(address token, address to, uint256 amount)
repay
nonpayablefunction repay(uint256 repayAmount) returns (uint256 debtRepaidAmount)
repayAndWithdraw
nonpayablefunction repayAndWithdraw(uint256 repayAmount, uint256 withdrawAmount, address recipient) returns (uint256 debtRepaidAmount, uint256 withdrawnAmount)
revokeOwnership
nonpayablefunction revokeOwnership()
setExplicitAccess
nonpayablefunction setExplicitAccess(address allowedCaller, tuple[] access)
setMaxSafeLtv
nonpayablefunction setMaxSafeLtv(uint256 _maxSafeLtv)
setPositionOwner
nonpayablefunction setPositionOwner(address account)
setSwapper
nonpayablefunction setSwapper(address _swapper)
supply
nonpayablefunction supply(uint256 supplyAmount)
supplyAndBorrow
nonpayablefunction supplyAndBorrow(uint256 supplyAmount, uint256 borrowAmount, address recipient)
withdraw
nonpayablefunction withdraw(uint256 withdrawAmount, address recipient) returns (uint256 amountWithdrawn)
events
ExplicitAccessSet
event ExplicitAccessSet(address indexed account, bytes4 indexed fnSelector, bool indexed value)
MaxSafeLtvSet
event MaxSafeLtvSet(uint256 _maxSafeLtv)
NewOwnerAccepted
event NewOwnerAccepted(address indexed oldOwner, address indexed newOwner)
NewOwnerProposed
event NewOwnerProposed(address indexed oldOwner, address indexed oldProposedOwner, address indexed newProposedOwner)
PositionOwnerSet
event PositionOwnerSet(address indexed account)
SurplusDebtReclaimed
event SurplusDebtReclaimed(uint256 amount, address indexed recipient)
SwapperSet
event SwapperSet(address indexed swapper)
errors
InvalidAccess
error InvalidAccess()
InvalidAddress
error InvalidAddress(address addr)
InvalidAmount
error InvalidAmount(address token, uint256 amount)
InvalidParam
error InvalidParam()
InvalidToken
error InvalidToken(address token)
PRBMath_MulDiv_Overflow
error PRBMath_MulDiv_Overflow(uint256 x, uint256 y, uint256 denominator)
Slippage
error Slippage(uint256 minAmountExpected, uint256 actualAmount)
creation bytecode
0x6101606040523480156200001257600080fd5b50604051620057f3380380620057f38339810160408190526200003591620007b7565b876200004181620001c1565b506001600160a01b0380881660a05286811660c05285811660805284811660e0528316610100526001600160601b03821661012081905281106200009857604051633494a40d60e21b815260040160405180910390fd5b60048190556200013c620001356040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a0016040528060c0516001600160a01b0316815260200160a0516001600160a01b0316815260200160e0516001600160a01b03168152602001610100516001600160a01b03168152602001610120516001600160601b0316815250905090565b60a0902090565b6101408190526080516200015c916001600160a01b03909116906200023e565b6000036200017d57604051633494a40d60e21b815260040160405180910390fd5b60a05162000198906001600160a01b03168660001962000302565b60c051620001b3906001600160a01b03168660001962000302565b505050505050505062000a67565b6000546001600160a01b031615620001ec57604051633006171960e21b815260040160405180910390fd5b6001600160a01b0381166200021c57604051634726455360e11b8152600060048201526024015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080620002566200025084620003d8565b6200041f565b604051637784c68560e01b81529091506001600160a01b03851690637784c685906200028790849060040162000866565b600060405180830381865afa158015620002a5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620002cf9190810190620008c2565b600081518110620002e457620002e46200098b565b602002602001015160001c6001600160801b03169150505b92915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526200035c90859083906200046d16565b620003d2576040516001600160a01b038416602482015260006044820152620003c690859063095ea7b360e01b9060640160408051808303601f190181529190526020810180516001600160e01b0319939093166001600160e01b03938416179052906200051d16565b620003d284826200051d565b50505050565b60006002826003604051602001620003fa929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c620002fc9190620009a1565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106200045c576200045c6200098b565b602090810291909101015292915050565b6000806000846001600160a01b0316846040516200048c9190620009e9565b6000604051808303816000865af19150503d8060008114620004cb576040519150601f19603f3d011682016040523d82523d6000602084013e620004d0565b606091505b5091509150818015620004fe575080511580620004fe575080806020019051810190620004fe919062000a07565b80156200051457506001600160a01b0385163b15155b95945050505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201526000906200056c906001600160a01b038516908490620005f6565b90508051600014806200059057508080602001905181019062000590919062000a07565b620005f15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000213565b505050565b60606200060784846000856200060f565b949350505050565b606082471015620006725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000213565b600080866001600160a01b03168587604051620006909190620009e9565b60006040518083038185875af1925050503d8060008114620006cf576040519150601f19603f3d011682016040523d82523d6000602084013e620006d4565b606091505b509092509050620006e887838387620006f3565b979650505050505050565b60608315620007675782516000036200075f576001600160a01b0385163b6200075f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000213565b508162000607565b6200060783838151156200077e5781518083602001fd5b8060405162461bcd60e51b815260040162000213919062000a32565b80516001600160a01b0381168114620007b257600080fd5b919050565b600080600080600080600080610100898b031215620007d557600080fd5b620007e0896200079a565b9750620007f060208a016200079a565b96506200080060408a016200079a565b95506200081060608a016200079a565b94506200082060808a016200079a565b93506200083060a08a016200079a565b60c08a01519093506001600160601b03811681146200084e57600080fd5b8092505060e089015190509295985092959890939650565b6020808252825182820181905260009190848201906040850190845b81811015620008a05783518352928401929184019160010162000882565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215620008d657600080fd5b82516001600160401b0380821115620008ee57600080fd5b818501915085601f8301126200090357600080fd5b815181811115620009185762000918620008ac565b8060051b604051601f19603f83011681018181108582111715620009405762000940620008ac565b6040529182528482019250838101850191888311156200095f57600080fd5b938501935b828510156200097f5784518452938501939285019262000964565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b80820180821115620002fc57634e487b7160e01b600052601160045260246000fd5b60005b83811015620009e0578181015183820152602001620009c6565b50506000910152565b60008251620009fd818460208701620009c3565b9190910192915050565b60006020828403121562000a1a57600080fd5b8151801515811462000a2b57600080fd5b9392505050565b602081526000825180602084015262000a53816040850160208701620009c3565b601f01601f19169190910160400192915050565b60805160a05160c05160e051610100516101205161014051614aa662000d4d6000396000818161046a0152818161218701528181612996015281816129ed0152612cee0152600081816105960152818161067d015281816108c601528181610a5901528181610e98015281816110400152818161118b01528181611360015281816114f40152818161179001528181611ba001528181611f1601528181612307015281816124c90152612816015260008181610315015281816105670152818161089701528181610a2a01528181610e690152818161101101528181611331015281816114c501528181611b7101528181611ee7015281816122d80152818161249a01526127e70152600081816102d60152818161053801528181610868015281816109fb01528181610e3a01528181610fe2015281816110cd015281816113020152818161149601528181611b4201528181611eb8015281816122a90152818161246b01526127b80152600081816103db015281816104da0152818161080a0152818161099d01528181610b8401528181610ddc01528181610f84015281816112a40152818161143801528181611640015281816116ab0152818161197201528181611ae401528181611c2f01528181611e5a0152818161224b0152818161240d0152818161275a015281816128c70152612fd301526000818161042e0152818161050901528181610839015281816109cc01528181610ade01528181610b6101528181610e0b01528181610fb3015281816112d3015281816114670152818161160b015281816116750152818161193701528181611b1301528181611c5201528181611e890152818161227a0152818161243c0152818161257201526127890152600081816106c10152818161091201528181611a5901528181611f550152818161216501528181612974015281816129cb01528181612ae601528181612b8a01528181612c3e01528181612d1d01528181612daa0152612f1a0152614aa66000f3fe608060405234801561001057600080fd5b50600436106102915760003560e01c80639c82f2a411610160578063cbda3f69116100d8578063e5331e911161008c578063ebbc496511610071578063ebbc496514610747578063eedc07131461074f578063f8fd31001461076257600080fd5b8063e5331e9114610721578063e9e11f101461073457600080fd5b8063daeccc79116100bd578063daeccc79146106e3578063e322ad2b14610711578063e4e889541461071957600080fd5b8063cbda3f6914610678578063d8fbc833146106bc57600080fd5b8063b1022fdf1161012f578063bf1eb64a11610114578063bf1eb64a1461064a578063bfccf0ec14610652578063cb2af14b1461066557600080fd5b8063b1022fdf14610624578063b1f8100d1461063757600080fd5b80639c82f2a4146105d85780639e784426146105eb578063a4fb4120146105fe578063a7229fd91461061157600080fd5b806340a647e21161020e57806352059756116101c25780636ed71ede116101a75780636ed71ede146104655780638da5cb5b1461048c57806390c9427c1461049f57600080fd5b8063520597561461042c57806362625c3f1461045257600080fd5b8063456dc17a116101f3578063456dc17a146103d95780634b3fd148146103ff5780634eb75f401461041257600080fd5b806340a647e21461039b57806342e4a4ac146103d057600080fd5b80632b3297f911610265578063354030231161024a5780633540302314610352578063371fd8e6146103655780633d33809d1461037857600080fd5b80632b3297f9146103375780632b9689581461034a57600080fd5b8062f714ce1461029657806305b4591c146102bc578063070881d1146102d15780631e99f22414610310575b600080fd5b6102a96102a4366004613ea0565b61076a565b6040519081526020015b60405180910390f35b6102cf6102ca366004613ecc565b610907565b005b6102f87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102b3565b6102f87f000000000000000000000000000000000000000000000000000000000000000081565b6005546102f8906001600160a01b031681565b6102cf610c3e565b6102cf610360366004613f48565b610d40565b6102a9610373366004613f48565b610ee5565b61038b610386366004613f48565b611090565b60405190151581526020016102b3565b6103a36110b8565b604080519687526020870195909552938501929092526060840152608083015260a082015260c0016102b3565b6102a960045481565b7f00000000000000000000000000000000000000000000000000000000000000006102f8565b6102cf61040d366004613ea0565b611207565b600019805b604080519283526020830191909152016102b3565b7f00000000000000000000000000000000000000000000000000000000000000006102f8565b6102cf610460366004613f61565b61139e565b6102a97f000000000000000000000000000000000000000000000000000000000000000081565b6000546102f8906001600160a01b031681565b6105cb6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b6040516102b39190613f96565b6102cf6105e6366004613fe0565b611556565b6102cf6105f9366004613f48565b611743565b6102cf61060c366004613fe0565b611830565b6102cf61061f366004613ffb565b6118dd565b6102cf610632366004613ecc565b611a4e565b6102cf610645366004613fe0565b611d0b565b6102a9611e1a565b6102cf610660366004614037565b611f81565b6003546102f8906001600160a01b031681565b61069f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516bffffffffffffffffffffffff90911681526020016102b3565b6102f87f000000000000000000000000000000000000000000000000000000000000000081565b61038b6106f13660046140da565b600160209081526000928352604080842090915290825290205460ff1681565b6102a9612150565b6102a9612156565b61041761072f366004613f61565b6121ac565b6102a96107423660046141fd565b612370565b6102cf612620565b61041761075d3660046141fd565b6126bb565b6102a9612964565b6003546000906001600160a01b031633146107ca576107ad336000357fffffffff0000000000000000000000000000000000000000000000000000000016612a32565b6107ca57604051633006171960e21b815260040160405180910390fd5b61090083836108fb6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b612a9a565b9392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461095057604051633006171960e21b815260040160405180910390fd5b600061095e828401846142a7565b90506000610a8e6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b90506000610aa183600001513084612a9a565b83519091508114610b185782516040517fb2b3b53b0000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260248101919091526044015b60405180910390fd5b600554835160208501516040517fee534a3f0000000000000000000000000000000000000000000000000000000081526000936001600160a01b03169263ee534a3f92610bac927f000000000000000000000000000000000000000000000000000000000000000092917f00000000000000000000000000000000000000000000000000000000000000009160040161432c565b6020604051808303816000875af1158015610bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bef919061435e565b905086811015610c35576040517f2746152a0000000000000000000000000000000000000000000000000000000081526004810188905260248101829052604401610b0f565b50505050505050565b610c6c336000357fffffffff0000000000000000000000000000000000000000000000000000000016612a32565b610c8957604051633006171960e21b815260040160405180910390fd5b6002546001600160a01b031661dead14610cde576002546040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610b0f565b600080546040516001600160a01b03909116907f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d554908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6003546001600160a01b03163314610d9d57610d80336000357fffffffff0000000000000000000000000000000000000000000000000000000016612a32565b610d9d57604051633006171960e21b815260040160405180910390fd5b610ee281610ecd6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b60405180602001604052806000815250612b5a565b50565b6003546000906001600160a01b03163314610f4557610f28336000357fffffffff0000000000000000000000000000000000000000000000000000000016612a32565b610f4557604051633006171960e21b815260040160405180910390fd5b61108a826110756040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b60405180602001604052806000815250612bf3565b92915050565b60006004546ec097ce7bc90715b34b9f10000000006110af91906143d5565b90911015919050565b6000806000806000806110c9612156565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114d919061435e565b9450611157611e1a565b9350600061117687876ec097ce7bc90715b34b9f100000000084612e4c565b90506111bb816bffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016670de0b6b3a76400006000612e4c565b9350846000036111cf5760001991506111fe565b6111e485670de0b6b3a7640000836001612e4c565b92506111fb84670de0b6b3a7640000876000612e4c565b91505b50909192939495565b6003546001600160a01b0316331461126457611247336000357fffffffff0000000000000000000000000000000000000000000000000000000016612a32565b61126457604051633006171960e21b815260040160405180910390fd5b61139a82826113956040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b612ee7565b5050565b6003546001600160a01b031633146113fb576113de336000357fffffffff0000000000000000000000000000000000000000000000000000000016612a32565b6113fb57604051633006171960e21b815260040160405180910390fd5b60006115296040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b9050611545848260405180602001604052806000815250612b5a565b611550838383612ee7565b50505050565b611584336000357fffffffff0000000000000000000000000000000000000000000000000000000016612a32565b6115a157604051633006171960e21b815260040160405180910390fd5b6001600160a01b0381166115ec576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610b0f565b6005546001600160a01b03168015611668576116336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016826000613007565b6116686001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016826000613007565b61169e6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683600019613007565b6116d46001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683600019613007565b6040516001600160a01b038316907f673779832598d6a388768ee342f8de96fdd5c39a468a6955377cf1405b9652b990600090a250600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b611771336000357fffffffff0000000000000000000000000000000000000000000000000000000016612a32565b61178e57604051633006171960e21b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff1681106117f5576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60048190556040518181527f994e009790ba0b9928d4b193d3ba06a943b02485bae67e9c3af2e1955e065cf29060200160405180910390a150565b61185e336000357fffffffff0000000000000000000000000000000000000000000000000000000016612a32565b61187b57604051633006171960e21b815260040160405180910390fd5b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f014e5e53fac070a4a01cf0bc7ae3d30d5ee46aed56c4029a5b6f8e0ad21f8a5890600090a250565b61190b336000357fffffffff0000000000000000000000000000000000000000000000000000000016612a32565b61192857604051633006171960e21b815260040160405180910390fd5b611930611e1a565b156119e8577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614806119a657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b156119e8576040517f961c9a4f0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610b0f565b826001600160a01b0316826001600160a01b03167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051611a2d91815260200190565b60405180910390a3611a496001600160a01b038416838361313d565b505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a9757604051633006171960e21b815260040160405180910390fd5b6000611aa5828401846142a7565b90506000611bd56040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b9050611be682600001513083612ee7565b600554825160208401516040517fee534a3f0000000000000000000000000000000000000000000000000000000081526000936001600160a01b03169263ee534a3f92611c7a927f000000000000000000000000000000000000000000000000000000000000000092917f00000000000000000000000000000000000000000000000000000000000000009160040161432c565b6020604051808303816000875af1158015611c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbd919061435e565b905085811015611d03576040517f2746152a0000000000000000000000000000000000000000000000000000000081526004810187905260248101829052604401610b0f565b505050505050565b611d39336000357fffffffff0000000000000000000000000000000000000000000000000000000016612a32565b611d5657604051633006171960e21b815260040160405180910390fd5b6001600160a01b038116611da1576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610b0f565b600254600080546040516001600160a01b03808616948116939216917f64420d4a41c6ed4de2bccbf33192eea18e576c5b23c79c3a722d4e9534c2e8d891a4600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000611f7c611f4b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169030613186565b905090565b611faf336000357fffffffff0000000000000000000000000000000000000000000000000000000016612a32565b611fcc57604051633006171960e21b815260040160405180910390fd5b6001600160a01b038316612017576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610b0f565b604080518082019091526000808252602082015260005b828110156121495783838281811061204857612048614410565b90506040020180360381019061205e919061444d565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b03167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a46020828101516001600160a01b038716600090815260018352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556121428161448c565b905061202e565b5050505050565b6000611f7c5b6000611f7c6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000306131db565b60035460009081906001600160a01b0316331461220e576121f1336000357fffffffff0000000000000000000000000000000000000000000000000000000016612a32565b61220e57604051633006171960e21b815260040160405180910390fd5b600061233c6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b9050612358868260405180602001604052806000815250612bf3565b9250612365858583612a9a565b915050935093915050565b6003546000906001600160a01b031633146123d0576123b3336000357fffffffff0000000000000000000000000000000000000000000000000000000016612a32565b6123d057604051633006171960e21b815260040160405180910390fd5b60006124fe6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b905061253e868260405180604001604052808981526020018881525060405160200161252a91906144c5565b604051602081830303815290604052612b5a565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201528692506000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156125c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e5919061435e565b90508381111561261657612609818360405180602001604052806000815250612b5a565b61261381846144d8565b92505b5050949350505050565b6002546001600160a01b0316331461264b57604051633006171960e21b815260040160405180910390fd5b6000805460405133926001600160a01b03909216917f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d55491a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600280549091169055565b60035460009081906001600160a01b0316331461271d57612700336000357fffffffff0000000000000000000000000000000000000000000000000000000016612a32565b61271d57604051633006171960e21b815260040160405180910390fd5b600061284b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16815250905090565b905061288b878260405180604001604052808a81526020018981525060405160200161287791906144c5565b604051602081830303815290604052612bf3565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529093506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561290e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612932919061435e565b90508481111561295957612956818360405180602001604052806000815250612bf3565b92505b505094509492505050565b6000806129ba6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000061328e565b90506000612a116001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000613362565b9050808211612a21576000612a2b565b612a2b81836144eb565b9250505090565b600080546001600160a01b03848116911614806109005750506001600160a01b03821660009081526001602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915290205460ff1692915050565b60006000198414612aab5783612ab3565b612ab3612156565b6040517f8720316d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638720316d90612b219085908590309089906004016144fe565b600060405180830381600087803b158015612b3b57600080fd5b505af1158015612b4f573d6000803e3d6000fd5b505050509392505050565b6040517f238d65790000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063238d657990612bc590859087903090879060040161456e565b600060405180830381600087803b158015612bdf57600080fd5b505af1158015610c35573d6000803e3d6000fd5b600080612bfe611e1a565b90508015612e445780851015612cc6576040517f20b76e810000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906320b76e8190612c7c908790899060009030908a906004016145eb565b60408051808303816000875af1158015612c9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cbe9190614664565b509150612e44565b6040517f93c520620000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201523060248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906393c5206290604401606060405180830381865afa158015612d6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9091906146a8565b602001516fffffffffffffffffffffffffffffffff1690507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166320b76e818660008430896040518663ffffffff1660e01b8152600401612dfd9594939291906145eb565b60408051808303816000875af1158015612e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3f9190614664565b509250505b509392505050565b6000612e59858585613371565b90506001826001811115612e6f57612e6f61470d565b03612edf578280612e8257612e82614377565b84860915612edf57600019811015612e9c57600101612edf565b6040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018690526024810185905260448101849052606401610b0f565b949350505050565b6040517f50d8cd4b0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906350d8cd4b90612f579085908890869030908a9060040161473c565b60408051808303816000875af1158015612f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f999190614664565b509050838114611550576040517fb2b3b53b0000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015260248101829052604401610b0f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052613086848261345e565b611550576040516001600160a01b0384166024820152600060448201526131339085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613505565b6115508482613505565b6040516001600160a01b038316602482015260448101829052611a499084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016130cf565b6000806131948460a0902090565b905060006131ac6001600160a01b0387168386613607565b90506000806131bb88886136dd565b90945092506131cf915084905083836139f2565b98975050505050505050565b6000806131f06131eb8585613a17565b613a8c565b90506080856001600160a01b0316637784c685836040518263ffffffff1660e01b815260040161322091906147b4565b600060405180830381865afa15801561323d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261326591908101906147f8565b60008151811061327757613277614410565b6020026020010151901c60001c9150509392505050565b60008061329d6131eb84613ad7565b6040517f7784c6850000000000000000000000000000000000000000000000000000000081529091506001600160a01b03851690637784c685906132e59084906004016147b4565b600060405180830381865afa158015613302573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261332a91908101906147f8565b60008151811061333c5761333c614410565b602002602001015160001c6fffffffffffffffffffffffffffffffff1691505092915050565b60008061329d6131eb84613b1a565b60008080600019858709858702925082811083820303915050806000036133ab578382816133a1576133a1614377565b0492505050610900565b8381106133f5576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401610b0f565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000806000846001600160a01b03168460405161347b9190614892565b6000604051808303816000865af19150503d80600081146134b8576040519150601f19603f3d011682016040523d82523d6000602084013e6134bd565b606091505b50915091508180156134e75750805115806134e75750808060200190518101906134e791906148ae565b80156134fc57506001600160a01b0385163b15155b95945050505050565b600061355a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613b3b9092919063ffffffff16565b905080516000148061357b57508080602001905181019061357b91906148ae565b611a49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610b0f565b6000806136176131eb8585613a17565b6040517f7784c6850000000000000000000000000000000000000000000000000000000081529091506001600160a01b03861690637784c6859061365f9084906004016147b4565b600060405180830381865afa15801561367c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526136a491908101906147f8565b6000815181106136b6576136b6614410565b602002602001015160001c6fffffffffffffffffffffffffffffffff169150509392505050565b60008060008060006136f08660a0902090565b6040517f5c60e39a000000000000000000000000000000000000000000000000000000008152600481018290529091506000906001600160a01b03891690635c60e39a9060240160c060405180830381865afa158015613754573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377891906148cb565b9050600081608001516fffffffffffffffffffffffffffffffff164261379e91906144eb565b905080158015906137c4575060408201516fffffffffffffffffffffffffffffffff1615155b80156137dc575060608801516001600160a01b031615155b156139b55760608801516040517f8c00bf6b0000000000000000000000000000000000000000000000000000000081526000916001600160a01b031690638c00bf6b9061382f908c90879060040161496a565b602060405180830381865afa15801561384c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613870919061435e565b9050600061389e6138818385613b4a565b60408601516fffffffffffffffffffffffffffffffff1690613bb5565b90506138a981613bca565b846040018181516138ba9190614a16565b6fffffffffffffffffffffffffffffffff169052506138d881613bca565b845185906138e7908390614a16565b6fffffffffffffffffffffffffffffffff90811690915260a0860151161590506139b25760006139368560a001516fffffffffffffffffffffffffffffffff1683613bb590919063ffffffff16565b9050600061397e8287600001516fffffffffffffffffffffffffffffffff1661395f91906144eb565b60208801518491906fffffffffffffffffffffffffffffffff16613c53565b905061398981613bca565b8660200181815161399a9190614a16565b6fffffffffffffffffffffffffffffffff1690525050505b50505b508051602082015160408301516060909301516fffffffffffffffffffffffffffffffff9283169b9183169a509282169850911695509350505050565b6000612edf613a026001856144d8565b613a0f620f4240856144d8565b869190613c78565b6000600182846002604051602001613a39929190918252602082015260400190565b60408051601f1981840301815282825280516020918201206001600160a01b03909416908301528101919091526060016040516020818303038152906040528051906020012060001c61090091906144d8565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ac657613ac6614410565b602090810291909101015292915050565b600080826003604051602001613af7929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c61108a91906144d8565b60006001826003604051602001613af7929190918252602082015260400190565b6060612edf8484600085613ca4565b600080613b578385614a46565b90506000613b788280613b73670de0b6b3a76400006002614a46565b613da5565b90506000613b948284613b73670de0b6b3a76400006003614a46565b905080613ba183856144d8565b613bab91906144d8565b9695505050505050565b60006109008383670de0b6b3a7640000613da5565b60408051808201909152601481527f6d61782075696e7431323820657863656564656400000000000000000000000060208201526000906fffffffffffffffffffffffffffffffff831115613c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0f9190614a5d565b5090919050565b6000612edf613c65620f4240846144d8565b613c706001866144d8565b869190613da5565b600081613c866001826144eb565b613c908587614a46565b613c9a91906144d8565b612edf91906143d5565b606082471015613d36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610b0f565b600080866001600160a01b03168587604051613d529190614892565b60006040518083038185875af1925050503d8060008114613d8f576040519150601f19603f3d011682016040523d82523d6000602084013e613d94565b606091505b509150915061261387838387613db2565b600081613c9a8486614a46565b60608315613e3b578251600003613e34576001600160a01b0385163b613e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b0f565b5081612edf565b612edf8383815115613e505781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0f9190614a5d565b80356001600160a01b0381168114613e9b57600080fd5b919050565b60008060408385031215613eb357600080fd5b82359150613ec360208401613e84565b90509250929050565b600080600060408486031215613ee157600080fd5b83359250602084013567ffffffffffffffff80821115613f0057600080fd5b818601915086601f830112613f1457600080fd5b813581811115613f2357600080fd5b876020828501011115613f3557600080fd5b6020830194508093505050509250925092565b600060208284031215613f5a57600080fd5b5035919050565b600080600060608486031215613f7657600080fd5b8335925060208401359150613f8d60408501613e84565b90509250925092565b60a0810161108a82846001600160a01b0380825116835280602083015116602084015280604083015116604084015280606083015116606084015250608081015160808301525050565b600060208284031215613ff257600080fd5b61090082613e84565b60008060006060848603121561401057600080fd5b61401984613e84565b925061402760208501613e84565b9150604084013590509250925092565b60008060006040848603121561404c57600080fd5b61405584613e84565b9250602084013567ffffffffffffffff8082111561407257600080fd5b818601915086601f83011261408657600080fd5b81358181111561409557600080fd5b8760208260061b8501011115613f3557600080fd5b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114613e9b57600080fd5b600080604083850312156140ed57600080fd5b6140f683613e84565b9150613ec3602084016140aa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561415657614156614104565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561418557614185614104565b604052919050565b600082601f83011261419e57600080fd5b813567ffffffffffffffff8111156141b8576141b8614104565b6141cb6020601f19601f8401160161415c565b8181528460208386010111156141e057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561421357600080fd5b8435935060208501359250604085013567ffffffffffffffff81111561423857600080fd5b6142448782880161418d565b949793965093946060013593505050565b60006040828403121561426757600080fd5b61426f614133565b905081358152602082013567ffffffffffffffff81111561428f57600080fd5b61429b8482850161418d565b60208301525092915050565b6000602082840312156142b957600080fd5b813567ffffffffffffffff8111156142d057600080fd5b612edf84828501614255565b60005b838110156142f75781810151838201526020016142df565b50506000910152565b600081518084526143188160208601602086016142dc565b601f01601f19169290920160200192915050565b60006001600160a01b03808716835285602084015280851660408401525060806060830152613bab6080830184614300565b60006020828403121561437057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008261440b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8015158114610ee257600080fd5b60006040828403121561445f57600080fd5b614467614133565b614470836140aa565b815260208301356144808161443f565b60208201529392505050565b6000600019820361449f5761449f6143a6565b5060010190565b805182526000602082015160406020850152612edf6040850182614300565b60208152600061090060208301846144a6565b8082018082111561108a5761108a6143a6565b8181038181111561108a5761108a6143a6565b610100810161454982876001600160a01b0380825116835280602083015116602084015280604083015116604084015280606083015116606084015250608081015160808301525050565b60a08201949094526001600160a01b0392831660c0820152911660e090910152919050565b60006101006145b983886001600160a01b0380825116835280602083015116602084015280604083015116604084015280606083015116606084015250608081015160808301525050565b8560a08401526001600160a01b03851660c08401528060e08401526145e081840185614300565b979650505050505050565b600061012061463683896001600160a01b0380825116835280602083015116602084015280604083015116604084015280606083015116606084015250608081015160808301525050565b8660a08401528560c08401526001600160a01b03851660e0840152806101008401526131cf81840185614300565b6000806040838503121561467757600080fd5b505080516020909101519092909150565b80516fffffffffffffffffffffffffffffffff81168114613e9b57600080fd5b6000606082840312156146ba57600080fd5b6040516060810181811067ffffffffffffffff821117156146dd576146dd614104565b604052825181526146f060208401614688565b602082015261470160408401614688565b60408201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b610120810161478782886001600160a01b0380825116835280602083015116602084015280604083015116604084015280606083015116606084015250608081015160808301525050565b60a082019590955260c08101939093526001600160a01b0391821660e08401521661010090910152919050565b6020808252825182820181905260009190848201906040850190845b818110156147ec578351835292840192918401916001016147d0565b50909695505050505050565b6000602080838503121561480b57600080fd5b825167ffffffffffffffff8082111561482357600080fd5b818501915085601f83011261483757600080fd5b81518181111561484957614849614104565b8060051b915061485a84830161415c565b818152918301840191848101908884111561487457600080fd5b938501935b838510156131cf57845182529385019390850190614879565b600082516148a48184602087016142dc565b9190910192915050565b6000602082840312156148c057600080fd5b81516109008161443f565b600060c082840312156148dd57600080fd5b60405160c0810181811067ffffffffffffffff8211171561490057614900614104565b60405261490c83614688565b815261491a60208401614688565b602082015261492b60408401614688565b604082015261493c60608401614688565b606082015261494d60808401614688565b608082015261495e60a08401614688565b60a08201529392505050565b61016081016149b582856001600160a01b0380825116835280602083015116602084015280604083015116604084015280606083015116606084015250608081015160808301525050565b6fffffffffffffffffffffffffffffffff8084511660a08401528060208501511660c08401528060408501511660e084015280606085015116610100840152806080850151166101208401528060a085015116610140840152509392505050565b6fffffffffffffffffffffffffffffffff818116838216019080821115614a3f57614a3f6143a6565b5092915050565b808202811582820484141761108a5761108a6143a6565b602081526000610900602083018461430056fea2646970667358221220ca9d170714a44c0c10d96d618aa8b4256eb1c6ccdad72cc2e454d8da40d1f3e764736f6c63430008130033000000000000000000000000b20aae0fe007519b7ce6f090a2ab8353b3da5d800000000000000000000000005bae9a5d67d1ca5b09b14c91935f635cfbf3b685000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb000000000000000000000000e316c92d2b1f50a53e72461856fd50b2519e5800000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000000000000000000000000000000cb2bba6f17b80000000000000000000000000000000000000000000000000000c7d713b49da0000