57 txs
887 calls
constructor
constructor(address arcadiaFactory, address positionManager, address uniswapV3Factory)
functions
accountInfo
viewfunction accountInfo(address account) view returns (uint64 maxClaimFee, uint64 maxSwapFee, uint64 upperSqrtPriceDeviation, uint64 lowerSqrtPriceDeviation, uint64 minLiquidityRatio)
accountToInitiator
viewfunction accountToInitiator(address owner, address account) view returns (address initiator)
ARCADIA_FACTORY
viewfunction ARCADIA_FACTORY() view returns (address)
isPoolBalanced
purefunction isPoolBalanced(uint256 sqrtPrice, tuple cache) pure returns (bool isBalanced)
isPositionManager
viewfunction isPositionManager(address positionManager) view returns (bool)
metaData
viewfunction metaData(address account) view returns (bytes data)
onERC721Received
purefunction onERC721Received(address, address, uint256, bytes) pure returns (bytes4)
compound
nonpayablefunction compound(address account_, tuple initiatorParams)
executeAction
nonpayablefunction executeAction(bytes actionTargetData) returns (tuple depositData)
setAccountInfo
nonpayablefunction setAccountInfo(address account_, address initiator, uint256 maxClaimFee, uint256 maxSwapFee, uint256 maxTolerance, uint256 minLiquidityRatio, bytes metaData_)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data)
events
AccountInfoSet
event AccountInfoSet(address indexed account, address indexed initiator)
Compound
event Compound(address indexed account, address indexed positionManager, uint256 id)
FeePaid
event FeePaid(address indexed account, address indexed receiver, address indexed asset, uint256 amount)
YieldClaimed
event YieldClaimed(address indexed account, address indexed asset, uint256 amount)
errors
InsufficientLiquidity
error InsufficientLiquidity()
InvalidInitiator
error InvalidInitiator()
InvalidPositionManager
error InvalidPositionManager()
InvalidRouter
error InvalidRouter()
InvalidValue
error InvalidValue()
NotAnAccount
error NotAnAccount()
OnlyAccount
error OnlyAccount()
OnlyAccountOwner
error OnlyAccountOwner()
OnlyPool
error OnlyPool()
Reentered
error Reentered()
UnbalancedPool
error UnbalancedPool()
creation bytecode
0x60e060405234801561000f575f5ffd5b50604051614b21380380614b2183398101604081905261002e91610066565b6001600160a01b0392831660805290821660a0521660c0526100a6565b80516001600160a01b0381168114610061575f5ffd5b919050565b5f5f5f60608486031215610078575f5ffd5b6100818461004b565b925061008f6020850161004b565b915061009d6040850161004b565b90509250925092565b60805160a05160c051614a1a6101075f395f8181610f47015261163d01525f818160e3015281816110a10152818161152c015281816118cb01528181611d7e01528181611dda0152611e8801525f81816101c701526103ac0152614a1a5ff3fe608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80637d5ad9cd1161006e5780637d5ad9cd146101af5780638cffa277146101c2578063a129568d146101e9578063a7310b5814610209578063a89d6dd414610295578063fa461e33146102a8575f5ffd5b80630686ddd9146100aa5780630a73e391146100d35780631204f52514610123578063150b7a021461016e5780633d692da11461019a575b5f5ffd5b6100bd6100b8366004613a5d565b6102bb565b6040516100ca9190613aa6565b60405180910390f35b6101136100e1366004613a5d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b60405190151581526020016100ca565b610156610131366004613ab8565b600360209081525f92835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b0390911681526020016100ca565b61018161017c366004613b33565b610352565b6040516001600160e01b031990911681526020016100ca565b6101ad6101a8366004613ba0565b610364565b005b6101ad6101bd366004613c28565b6106de565b6101567f000000000000000000000000000000000000000000000000000000000000000081565b6101fc6101f7366004613c70565b610974565b6040516100ca9190613d7f565b61025b610217366004613a5d565b600160208190525f918252604090912080549101546001600160401b0380831692600160401b8104821692600160801b8204831692600160c01b9092048216911685565b604080516001600160401b03968716815294861660208601529285169284019290925283166060830152909116608082015260a0016100ca565b6101136102a3366004613dfe565b610f0f565b6101ad6102b6366004613e8e565b610f2b565b60026020525f9081526040902080546102d390613edc565b80601f01602080910402602001604051908101604052809291908181526020018280546102ff90613edc565b801561034a5780601f106103215761010080835404028352916020019161034a565b820191905f5260205f20905b81548152906001019060200180831161032d57829003601f168201915b505050505081565b630a85bd0160e11b5b95945050505050565b5f546001600160a01b03161561038d5760405163b5dfd9e560e01b815260040160405180910390fd5b604051630972932760e21b81526001600160a01b0389811660048301527f000000000000000000000000000000000000000000000000000000000000000016906325ca4c9c90602401602060405180830381865afa1580156103f1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104159190613f23565b61043257604051630ea8370b60e41b815260040160405180910390fd5b5f886001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610470573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104949190613f3c565b9050336001600160a01b038216146104bf576040516312272fd360e11b815260040160405180910390fd5b670de0b6b3a76400008711806104dc5750670de0b6b3a764000086115b806104ee5750670de0b6b3a764000085115b806105005750670de0b6b3a764000084115b1561051e57604051632a9ffab760e21b815260040160405180910390fd5b6001600160a01b038181165f9081526003602090815260408083208d8516845282529182902080546001600160a01b031916938c1693909317909255805160a0810182526001600160401b038a8116825289169281019290925281016105a661058f88670de0b6b3a7640000613f6b565b6105a190670de0b6b3a7640000613f7e565b610fdb565b6001600160401b031681526020016105c961058f88670de0b6b3a7640000613f95565b6001600160401b0390811682528681166020928301526001600160a01b038c165f9081526001808452604080832086518154888801518985015160608b01519389166fffffffffffffffffffffffffffffffff1990931692909217600160401b91891691909102176001600160801b0316600160801b918816919091026001600160c01b031617600160c01b9187169190910217815560809096015195909101805467ffffffffffffffff19169590931694909417909155600290915220610692838583613ff3565b50876001600160a01b0316896001600160a01b03167febc70f7c8d6a67b19e15e968cb908d21719e8ff9a778a71171fba931a618d05260405160405180910390a3505050505050505050565b5f546001600160a01b0316156107075760405163b5dfd9e560e01b815260040160405180910390fd5b336001600160a01b031660035f846001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610751573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107759190613f3c565b6001600160a01b03908116825260208083019390935260409182015f908120878316825290935291205416146107be576040516317fb43e560e31b815260040160405180910390fd5b6107ce6100e16020830183613a5d565b6107eb5760405163ed5f09f160e01b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b038416178155808061081760608501604086016140cb565b6001600160801b0316118061084357505f61083860808501606086016140cb565b6001600160801b0316115b1561087c576108766108586020850185613a5d565b6108686040860160208701614105565b6001600160601b031661107f565b90925090505b5f61090161088d6020860186613a5d565b61089d6040870160208801614105565b6001600160601b031685856108b860608a0160408b016140cb565b6001600160801b03166108d160808b0160608c016140cb565b6001600160801b0316338b6040516020016108ed92919061419f565b604051602081830303815290604052611121565b60405162b9252f60e41b81529091506001600160a01b03861690630b9252f0906109319030908590600401614280565b5f604051808303815f87803b158015610948575f5ffd5b505af115801561095a573d5f5f3e3d5ffd5b50505f80546001600160a01b031916905550505050505050565b61099f6040518060800160405280606081526020016060815260200160608152602001606081525090565b5f546001600160a01b031633146109c95760405163f3f6425d60e01b815260040160405180910390fd5b335f908152600160208181526040808420815160a08101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104851693820193909352600160c01b90920483166060830152909201541660808201529080610a388587018761431b565b8051855160a0830151939550919350916001600160401b0391821691161180610a7a575083602001516001600160401b03168260c001516001600160401b0316115b15610a9857604051632a9ffab760e21b815260040160405180910390fd5b5f610ab08284602001516001600160601b031661149d565b90505f816101200151516001600160401b03811115610ad157610ad1613d91565b604051908082528060200260200182016040528015610afa578160200160208202803683370190505b50905083604001516001600160801b0316815f81518110610b1d57610b1d61440b565b60200260200101818152505083606001516001600160801b031681600181518110610b4a57610b4a61440b565b6020026020010181815250505f81516001600160401b03811115610b7057610b70613d91565b604051908082528060200260200182016040528015610b99578160200160208202803683370190505b5090505f610bac88858860800151611798565b9050610bbd84610100015182610f0f565b610bda57604051633a8bf65960e01b815260040160405180910390fd5b610bf4838387878a60a001516001600160401b031661185f565b5f610cc389608001516001600160401b0316866040015162ffffff168960c001516001600160401b031688610100015186604001516001600160a01b031687606001516001600160a01b0316895f81518110610c5257610c5261440b565b60200260200101518b5f81518110610c6c57610c6c61440b565b6020026020010151610c7e9190613f95565b8a600181518110610c9157610c9161440b565b60200260200101518c600181518110610cac57610cac61440b565b6020026020010151610cbe9190613f95565b611aef565b805190915015610d00578060200151835f81518110610ce457610ce461440b565b60200260200101818151610cf89190613f6b565b905250610d30565b806020015183600181518110610d1857610d1861440b565b60200260200101818151610d2c9190613f6b565b9052505b610d3e848489888587611bfb565b610d4785611d08565b6001600160a01b03166101008601819052610d629083610f0f565b610d7f57604051633a8bf65960e01b815260040160405180910390fd5b5f5f825f0151610de757845f81518110610d9b57610d9b61440b565b6020026020010151865f81518110610db557610db561440b565b6020026020010151610dc79190613f95565b86600181518110610dda57610dda61440b565b6020026020010151610e41565b855f81518110610df957610df961440b565b602002602001015185600181518110610e1457610e1461440b565b602002602001015187600181518110610e2f57610e2f61440b565b6020026020010151610e419190613f95565b91509150610e528689898585611d79565b82604001518760e001516001600160801b03161015610e845760405163bb55fd2760e01b815260040160405180910390fd5b5f610e928b88888c8c611f6a565b9050610eaa8989602001518a61012001518a85612210565b9c50886001600160a01b0316336001600160a01b03167f6c7e7d4cb83a668aef31739dd35dc3fc3d5f31d62b69e438b7b24d35b40dcc638a60200151604051610ef591815260200190565b60405180910390a350505050505050505050505092915050565b80515f9083118015610f245750816020015183105b9392505050565b5f8080610f3a8486018661442f565b9194509250905033610f6e7f00000000000000000000000000000000000000000000000000000000000000008585856124fc565b6001600160a01b031614610f9557604051634b60273560e01b815260040160405180910390fd5b5f871315610fb657610fb16001600160a01b03841633896125e3565b610fd2565b5f861315610fd257610fd26001600160a01b03831633886125e3565b50505050505050565b60b581600160881b8110610ff45760409190911b9060801c5b690100000000000000000081106110105760209190911b9060401c5b6501000000000081106110285760109190911b9060201c5b6301000000811061103e5760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b60405163133f757160e31b8152600481018290525f9081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906399fbab889060240161018060405180830381865afa1580156110e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110b9190614493565b50979e969d50959b505050505050505050505050565b606060018415611139578061113581614569565b9150505b831561114d578061114981614569565b9150505b5f816001600160401b0381111561116657611166613d91565b60405190808252806020026020018201604052801561118f578160200160208202803683370190505b5090505f826001600160401b038111156111ab576111ab613d91565b6040519080825280602002602001820160405280156111d4578160200160208202803683370190505b5090505f836001600160401b038111156111f0576111f0613d91565b604051908082528060200260200182016040528015611219578160200160208202803683370190505b5090505f846001600160401b0381111561123557611235613d91565b60405190808252806020026020018201604052801561125e578160200160208202803683370190505b5090508c845f815181106112745761127461440b565b60200260200101906001600160a01b031690816001600160a01b0316815250508b835f815181106112a7576112a761440b565b6020026020010181815250506001825f815181106112c7576112c761440b565b6020026020010181815250506002815f815181106112e7576112e761440b565b602090810291909101015260018915611372578b8560018151811061130e5761130e61440b565b60200260200101906001600160a01b031690816001600160a01b03168152505089836001815181106113425761134261440b565b6020026020010181815250506001826001815181106113635761136361440b565b60209081029190910101525060025b88156113eb578a85828151811061138b5761138b61440b565b60200260200101906001600160a01b031690816001600160a01b031681525050888382815181106113be576113be61440b565b60200260200101818152505060018282815181106113de576113de61440b565b6020026020010181815250505b5f6040518060800160405280878152602001868152602001858152602001848152509050606061143c6040518060800160405280606081526020016060815260200160608152602001606081525090565b61145e6040518060600160405280606081526020015f81526020015f81525090565b838282858f604051602001611477959493929190614581565b6040516020818303038152906040529a5050505050505050505050979650505050505050565b60408051610140810182525f808252602080830182905282840182905260608084018390526080840183905260a0840183905260c0840183905260e08401839052610100840192909252610120830182905283516002808252928101855292939083019080368337019050506101208201526020810182905260405163133f757160e31b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906399fbab889060240161018060405180830381865afa15801561157a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159e9190614493565b5050506101208a0151805197995095975093959294919350915f906115c5576115c561440b565b602002602001018761012001516001815181106115e4576115e461440b565b6001600160801b0390931660e08a0152600293840b60a08a01529390920b60c088015262ffffff90931660408701526001600160a01b039384166020938402929092019092015291169052610120810151805161169d917f0000000000000000000000000000000000000000000000000000000000000000915f9061166b5761166b61440b565b602002602001015183610120015160018151811061168b5761168b61440b565b602002602001015184604001516124fc565b6001600160a01b031680825260408051633850c7bd60e01b81529051633850c7bd9160048082019260e0929091908290030181865afa1580156116e2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611706919061465d565b5050505060029190910b6080840152506001600160a01b039081166101008301528151604080516334324e9f60e21b81529051919092169163d0c93a7c9160048083019260209291908290030181865afa158015611766573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061178a91906146e7565b60020b606082015292915050565b604080516080810182525f80825260208201819052918101829052606081019190915260405180608001604052806117f086606001516001600160401b0316670de0b6b3a76400008661266b9092919063ffffffff16565b815260200161181f86604001516001600160401b0316670de0b6b3a76400008661266b9092919063ffffffff16565b81526020016118318560c00151612686565b6001600160a01b0316815260200161184c8560a00151612686565b6001600160a01b03169052949350505050565b604080516080810182526020848101518252309082019081526001600160801b0382840181815260608401828152945163fc6f786560e01b81529351600485015291516001600160a01b039081166024850152915181166044840152925190921660648201525f9182917f00000000000000000000000000000000000000000000000000000000000000009091169063fc6f78659060840160408051808303815f875af1158015611912573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119369190614700565b9150915081875f8151811061194d5761194d61440b565b602002602001018181516119619190613f6b565b905250865181908890600190811061197b5761197b61440b565b6020026020010181815161198f9190613f6b565b9052506119a58284670de0b6b3a764000061266b565b865f815181106119b7576119b761440b565b602002602001018181516119cb9190613f6b565b9052506119e18184670de0b6b3a764000061266b565b866001815181106119f4576119f461440b565b60200260200101818151611a089190613f6b565b90525061012084015180515f90611a2157611a2161440b565b60200260200101516001600160a01b0316336001600160a01b03167ff3055bc8d92d9c8d2f12b45d112dd345cd2cfd17292b8d65c5642ac6f912dfd784604051611a6d91815260200190565b60405180910390a3836101200151600181518110611a8d57611a8d61440b565b60200260200101516001600160a01b0316336001600160a01b03167ff3055bc8d92d9c8d2f12b45d112dd345cd2cfd17292b8d65c5642ac6f912dfd783604051611ad991815260200190565b60405180910390a350505050505050565b505050565b611b1e6040518060a001604052805f151581526020015f81526020015f81526020015f81526020015f81525090565b64e8d4a51000880287015f8080611b398a8a8a8a8a8961293e565b9250925092505f5f611b838c8c8c88611b5b57611b56878e613f6b565b611b65565b611b65888e613f95565b89611b7957611b74898e613f95565b612a5f565b611b74888e613f6b565b6001600160801b03169050611bab8f670de0b6b3a76400008361266b9092919063ffffffff16565b91505f9050611bc3848e670de0b6b3a764000061266b565b6040805160a08101825296151587526020870182905286019290925250909103606083015260808201529a9950505050505050505050565b606082015115611d00578360e00151515f03611ced575f611cc9835f0151856040015162ffffff16611c2c87612b1e565b876101000151866040015187606001518c5f81518110611c4e57611c4e61440b565b60200260200101518e5f81518110611c6857611c6861440b565b6020026020010151611c7a9190613f95565b8d600181518110611c8d57611c8d61440b565b60200260200101518f600181518110611ca857611ca861440b565b6020026020010151611cba9190613f95565b8b606001518c60800151612b88565b9050805f03611cd85750611d00565b611ce78785855f015184612c51565b50611d00565b611d008684845f01518760e00151612e94565b505050505050565b5f815f01516001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015611d48573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d6c919061465d565b5094979650505050505050565b611dd57f0000000000000000000000000000000000000000000000000000000000000000838561012001515f81518110611db557611db561440b565b60200260200101516001600160a01b03166130e09092919063ffffffff16565b611e127f000000000000000000000000000000000000000000000000000000000000000082856101200151600181518110611db557611db561440b565b6040805160c081018252602080860151825281018481528183018481525f60608401818152608085018281524260a08701908152965163219f5d1760e01b81529551600487015293516024860152915160448501529051606484015290516084830152915160a482015281906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063219f5d179060c4016060604051808303815f875af1158015611ece573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ef29190614722565b6001600160801b0390921660e08801528851909350909150829088905f90611f1c57611f1c61440b565b60200260200101818151611f309190613f95565b9052508651819088906001908110611f4a57611f4a61440b565b60200260200101818151611f5e9190613f95565b90525050505050505050565b602081015160405163095ea7b360e01b815233600482015260248101919091525f906001600160a01b0384169063095ea7b3906044015f604051808303815f87803b158015611fb7575f5ffd5b505af1158015611fc9573d5f5f3e3d5ffd5b505050505f600191505f5b8651811015612205578361012001518181518110611ff457611ff461440b565b602002602001015191508581815181106120105761201061440b565b602002602001015187828151811061202a5761202a61440b565b602002602001015111156120dd5785818151811061204a5761204a61440b565b60200260200101518782815181106120645761206461440b565b60200260200101516120769190613f95565b8782815181106120885761208861440b565b6020026020010181815250506120cb338883815181106120aa576120aa61440b565b6020026020010151846001600160a01b03166130e09092919063ffffffff16565b826120d581614569565b935050612135565b8681815181106120ef576120ef61440b565b60200260200101518682815181106121095761210961440b565b6020026020010181815250505f8782815181106121285761212861440b565b6020026020010181815250505b5f8682815181106121485761214861440b565b6020026020010151111561218d5761218d8887838151811061216c5761216c61440b565b6020026020010151846001600160a01b03166125e39092919063ffffffff16565b816001600160a01b0316886001600160a01b0316336001600160a01b03167f1b37fcc57f4b6029ca7b3a70af0104811f67c72fe73e8043575f03a01e0566318985815181106121de576121de61440b565b60200260200101516040516121f591815260200190565b60405180910390a4600101611fd4565b505095945050505050565b61223b6040518060800160405280606081526020016060815260200160608152602001606081525090565b5f826001600160401b0381111561225457612254613d91565b60405190808252806020026020018201604052801561227d578160200160208202803683370190505b5090505f836001600160401b0381111561229957612299613d91565b6040519080825280602002602001820160405280156122c2578160200160208202803683370190505b5090505f846001600160401b038111156122de576122de613d91565b604051908082528060200260200182016040528015612307578160200160208202803683370190505b5090505f856001600160401b0381111561232357612323613d91565b60405190808252806020026020018201604052801561234c578160200160208202803683370190505b50905089845f815181106123625761236261440b565b60200260200101906001600160a01b031690816001600160a01b03168152505088835f815181106123955761239561440b565b6020026020010181815250506001825f815181106123b5576123b561440b565b6020026020010181815250506002815f815181106123d5576123d561440b565b60200260200101818152505060018611156124d45760015f5b88518110156124d1575f89828151811061240a5761240a61440b565b602002602001015111156124c95789818151811061242a5761242a61440b565b60200260200101518683815181106124445761244461440b565b60200260200101906001600160a01b031690816001600160a01b0316815250508881815181106124765761247661440b565b60200260200101518483815181106124905761249061440b565b60200260200101818152505060018383815181106124b0576124b061440b565b6020908102919091010152816124c581614569565b9250505b6001016123ee565b50505b6040805160808101825294855260208501939093529183015260608201529695505050505050565b5f826001600160a01b0316846001600160a01b03161061251a575f5ffd5b604080516001600160a01b03808716602083015285169181019190915262ffffff83166060820152859060800160408051601f198184030181529082905280516020918201206125c2939290917fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5491016001600160f81b0319815260609390931b6bffffffffffffffffffffffff191660018401526015830191909152603582015260550190565b60408051601f19818403018152919052805160209091012095945050505050565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f5114161716915050806126655760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064015b60405180910390fd5b50505050565b5f825f19048411830215820261267f575f5ffd5b5091020490565b60020b5f60ff82901d80830118620d89e88111156126af576126af6345c3193d60e11b84613155565b7001fffcb933bd6fad37aa2d162d1a5940016001821602600160801b1860028216156126eb576ffff97272373d413259a46990580e213a0260801c5b600482161561270a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612729576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612748576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612767576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612786576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156127a5576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156127c5576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156127e5576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612805576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612825576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612845576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612865576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612885576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156128a5576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156128c6576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156128e6576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612905576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612922576b048a170391f7dc42444e8fa20260801c5b5f84131561292e575f19045b63ffffffff0160201c9392505050565b5f5f5f868910612963576001925085915061295c8960018887613164565b9050612a53565b8789116129795784915061295c895f8787613164565b5f6129858a8a8a6131c0565b90505f6129948b60018a613208565b90505f6129a18289613f6b565b90505f6129b789670de0b6b3a76400008461266b565b905083811015612a0c57600196505f6129dc858a670de0b6b3a764000081900361266b565b670de0b6b3a76400000190506129f5828603848361266b565b955050612a058d6001878b61325c565b9550612a4e565b5f965086612a23858a670de0b6b3a764000061266b565b670de0b6b3a7640000039050612a3c858303848361266b565b965050612a4b8d5f888b613164565b94505b505050505b96509650969350505050565b5f836001600160a01b0316856001600160a01b03161115612a7e579293925b846001600160a01b0316866001600160a01b031611612ab157612aaa612aa58686866132b6565b61330f565b905061035b565b836001600160a01b0316866001600160a01b03161015612b06575f612ad78786866132b6565b90505f612ae5878986613329565b9050612afd818310612af7578161330f565b8261330f565b9250505061035b565b612b14612aa5868685613329565b9695505050505050565b5f815f01516001600160a01b0316631a6865026040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b5e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b829190614756565b92915050565b5f8080805b6064811015612c3c57612ba48e8e8e8e8a8a613362565b9250886001600160a01b0316836001600160a01b031610612bd557612bcb8d8d8d8b61340b565b9350505050612c43565b896001600160a01b0316836001600160a01b031611612bfa57612bcb8d8d8d8a613447565b612c078e8e8e8e87613478565b9096509450612c1c8e8b8b8b8b8b8b8a6134f2565b909750955091508115612c3457849350505050612c43565b600101612b8d565b5083925050505b9a9950505050505050505050565b82515f9081906001600160a01b031663128acb083086612c7087614771565b88612c9957612c94600173fffd8963efd1fc6a506488495d951d5263988d2661478b565b612ca9565b612ca96401000276a360016147aa565b8a61012001515f81518110612cc057612cc061440b565b60200260200101518b6101200151600181518110612ce057612ce061440b565b60200260200101518c60400151604051602001612d23939291906001600160a01b03938416815291909216602082015262ffffff91909116604082015260600190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612d529594939291906147c9565b60408051808303815f875af1158015612d6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d919190614700565b9150915083612dcc57612da382614771565b865f81518110612db557612db561440b565b6020026020010151612dc79190613f6b565b612df1565b81865f81518110612ddf57612ddf61440b565b6020026020010151612df19190613f95565b865f81518110612e0357612e0361440b565b60200260200101818152505083612e3f578086600181518110612e2857612e2861440b565b6020026020010151612e3a9190613f95565b612e6d565b612e4881614771565b86600181518110612e5b57612e5b61440b565b6020026020010151612e6d9190613f6b565b86600181518110612e8057612e8061440b565b602002602001018181525050505050505050565b5f5f5f83806020019051810190612eab9190614803565b925092509250612f07838387612ee057886101200151600181518110612ed357612ed361440b565b6020026020010151612ef7565b8861012001515f81518110611db557611db561440b565b6001600160a01b031691906130e0565b5f5f846001600160a01b031683604051612f219190614893565b5f604051808303815f865af19150503d805f8114612f5a576040519150601f19603f3d011682016040523d82523d5f602084013e612f5f565b606091505b5091509150818190612f845760405162461bcd60e51b815260040161265c9190613aa6565b508761012001515f81518110612f9c57612f9c61440b565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612fea573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061300e91906148a9565b895f815181106130205761302061440b565b6020026020010181815250508761012001516001815181106130445761304461440b565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613092573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130b691906148a9565b896001815181106130c9576130c961440b565b602002602001018181525050505050505050505050565b816014528060345263095ea7b360601b5f5260205f604460105f875af13d1560015f5114171661314c575f60345263095ea7b360601b5f525f38604460105f875af1508060345260205f604460105f875af13d1560015f5114171661314c57633e3f8f735f526004601cfd5b5f603452505050565b815f528060020b60045260245ffd5b5f6001600160801b03851115613178575f5ffd5b5f613190670de0b6b3a764000084810390869061266b565b9050846131ae576131a981600160c01b6002890a613657565b612b14565b612b14816002880a600160c01b613657565b5f6001600160801b038411156131d4575f5ffd5b8284035f836002870a816131ea576131ea6148c0565b0460028702869003039050612b1482670de0b6b3a76400008361266b565b5f8261323657613231826132216002600160601b6149b7565b61322c6002886149b7565b613657565b613254565b613254826132456002876149b7565b61322c6002600160601b6149b7565b949350505050565b5f6001600160801b03851115613270575f5ffd5b5f8461328d57613288846002880a600160c01b613657565b61329f565b61329f84600160c01b6002890a613657565b9050612b1481670de0b6b3a764000085810361266b565b5f826001600160a01b0316846001600160a01b031611156132d5579192915b5f6132f7856001600160a01b0316856001600160a01b0316600160601b613657565b905061035b83828787036001600160a01b0316613657565b806001600160801b0381168114613324575f5ffd5b919050565b5f826001600160a01b0316846001600160a01b03161115613348579192915b61325482600160601b8686036001600160a01b0316613657565b5f8061337584620f42408981039061266b565b90505f5f89156133b35761338c87898560016136f3565b6001600160a01b031691506133a38789875f6137e2565b6001600160a01b031690506133e3565b6133bf8789875f6136f3565b6001600160a01b031691506133d787898560016137e2565b6001600160a01b031690505b89613400576133fb8183016002808206151591040190565b612c43565b600282820104612c43565b5f8061341e83620f4240888103906138c0565b90505f61342e85878460016136f3565b905061343c8186885f6138e3565b979650505050505050565b5f8061345a83620f4240888103906138c0565b90505f61346a85878460016137e2565b905061343c8582885f61392f565b5f5f86156134b6575f61348e848688600161392f565b90506134a081620f42408981036138c0565b92506134ae8486885f6138e3565b9150506134e8565b5f6134c485858860016138e3565b90506134d681620f42408981036138c0565b92506134e48585885f61392f565b9150505b9550959350505050565b5f5f5f5f5f8c1561352d57613517868c8a8d1161350f575f6132b6565b8a8d036132b6565b91506135268c87898c01613329565b9050613559565b61353a868c898d016132b6565b91506135568c878a8c1161354e575f613329565b8a8c03613329565b90505b5f8183106135795761357482670de0b6b3a76400008561266b565b61358c565b61358c83670de0b6b3a76400008461266b565b670de0b6b3a7640000039050620f42408110828410156135f6575f6135bc8f8a6135b58861330f565b60016138e3565b90508f6135ce57808c039a508a6135ef565b8b81116135e7576135e28a6009600a61266b565b6135eb565b8b81035b9950895b5050613642565b5f61360c898f6136058761330f565b600161392f565b90508f613638578c811161362c576136278a6009600a61266b565b613630565b8c81035b99508961363f565b808d039a508a5b50505b9e989d50969b50969950505050505050505050565b5f838302815f1985870982811083820303915050808411613676575f5ffd5b805f0361368857508290049050610f24565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f825f03613702575083613254565b600160601b600160e01b03606085901b16821561379c576001600160a01b03861684810290858281613736576137366148c0565b0403613766578181018281106137645761375a83896001600160a01b0316836139e7565b9350505050613254565b505b50613794818561377f6001600160a01b038a16836149c5565b6137899190613f6b565b808204910615150190565b915050613254565b6001600160a01b0386168481029085820414818311166137c35763f5c787f15f526004601cfd5b80820361375a6137dd846001600160a01b038b16846139e7565b613a17565b5f8115613845575f6001600160a01b038411156138165761381184600160601b876001600160801b0316613657565b61382d565b61382d6001600160801b038616606086901b6149c5565b90506137946137dd826001600160a01b038916613f6b565b5f6001600160a01b038411156138725761386d84600160601b876001600160801b03166139e7565b61388f565b61388f606085901b6001600160801b038716808204910615150190565b9050806001600160a01b038716116138ae57634323a5555f526004601cfd5b6001600160a01b038616039050613254565b5f825f1904841183021582026138d4575f5ffd5b50910281810615159190040190565b5f6001600160a01b038481169086160360ff81901d90810118600160601b6001600160801b038516613916818484613657565b9350845f83858409111684019350505050949350505050565b5f836001600160a01b0316856001600160a01b0316111561394e579293925b6001600160a01b0385166139685762bfc9215f526004601cfd5b600160601b600160e01b03606084901b166001600160a01b0386860316836139bb57866001600160a01b03166139a88383896001600160a01b0316613657565b816139b5576139b56148c0565b0461343c565b61343c6139d28383896001600160a01b03166139e7565b886001600160a01b0316808204910615150190565b5f6139f3848484613657565b90508180613a0357613a036148c0565b83850915610f245760010180610f24575f5ffd5b806001600160a01b0381168114613324576133246393dafdf160e01b805f5260045ffd5b6001600160a01b0381168114613a4f575f5ffd5b50565b803561332481613a3b565b5f60208284031215613a6d575f5ffd5b8135610f2481613a3b565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610f246020830184613a78565b5f5f60408385031215613ac9575f5ffd5b8235613ad481613a3b565b91506020830135613ae481613a3b565b809150509250929050565b5f5f83601f840112613aff575f5ffd5b5081356001600160401b03811115613b15575f5ffd5b602083019150836020828501011115613b2c575f5ffd5b9250929050565b5f5f5f5f5f60808688031215613b47575f5ffd5b8535613b5281613a3b565b94506020860135613b6281613a3b565b93506040860135925060608601356001600160401b03811115613b83575f5ffd5b613b8f88828901613aef565b969995985093965092949392505050565b5f5f5f5f5f5f5f5f60e0898b031215613bb7575f5ffd5b8835613bc281613a3b565b97506020890135613bd281613a3b565b965060408901359550606089013594506080890135935060a0890135925060c08901356001600160401b03811115613c08575f5ffd5b613c148b828c01613aef565b999c989b5096995094979396929594505050565b5f5f60408385031215613c39575f5ffd5b8235613c4481613a3b565b915060208301356001600160401b03811115613c5e575f5ffd5b83016101008186031215613ae4575f5ffd5b5f5f60208385031215613c81575f5ffd5b82356001600160401b03811115613c96575f5ffd5b613ca285828601613aef565b90969095509350505050565b5f8151808452602084019350602083015f5b82811015613cde578151865260209586019590910190600101613cc0565b5093949350505050565b8051608080845281519084018190525f9160200190829060a08601905b80831015613d305783516001600160a01b031682526020938401936001939093019290910190613d05565b50602085015192508581036020870152613d4a8184613cae565b9250505060408301518482036040860152613d658282613cae565b9150506060830151848203606086015261035b8282613cae565b602081525f610f246020830184613ce8565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715613dc857613dc8613d91565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613df657613df6613d91565b604052919050565b5f5f82840360a0811215613e10575f5ffd5b833592506080601f1982011215613e25575f5ffd5b50604051608081016001600160401b0381118282101715613e4857613e48613d91565b6040908152602085810135835290850135908201526060840135613e6b81613a3b565b60408201526080840135613e7e81613a3b565b6060820152919491935090915050565b5f5f5f5f60608587031215613ea1575f5ffd5b843593506020850135925060408501356001600160401b03811115613ec4575f5ffd5b613ed087828801613aef565b95989497509550505050565b600181811c90821680613ef057607f821691505b602082108103613f0e57634e487b7160e01b5f52602260045260245ffd5b50919050565b80518015158114613324575f5ffd5b5f60208284031215613f33575f5ffd5b610f2482613f14565b5f60208284031215613f4c575f5ffd5b8151610f2481613a3b565b634e487b7160e01b5f52601160045260245ffd5b80820180821115612b8257612b82613f57565b8082028115828204841417612b8257612b82613f57565b81810381811115612b8257612b82613f57565b601f821115611aea57805f5260205f20601f840160051c81016020851015613fcd5750805b601f840160051c820191505b81811015613fec575f8155600101613fd9565b5050505050565b6001600160401b0383111561400a5761400a613d91565b61401e836140188354613edc565b83613fa8565b5f601f84116001811461404f575f85156140385750838201355b5f19600387901b1c1916600186901b178355613fec565b5f83815260208120601f198716915b8281101561407e578685013582556020948501946001909201910161405e565b508682101561409a575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160801b0381168114613a4f575f5ffd5b8035613324816140ac565b5f602082840312156140db575f5ffd5b8135610f24816140ac565b6001600160601b0381168114613a4f575f5ffd5b8035613324816140e6565b5f60208284031215614115575f5ffd5b8135610f24816140e6565b80356001600160401b0381168114613324575f5ffd5b5f5f8335601e1984360301811261414b575f5ffd5b83016020810192503590506001600160401b03811115614169575f5ffd5b803603821315613b2c575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b0383168152604060208201525f82356141be81613a3b565b6001600160a01b031660408301526141d8602084016140fa565b6001600160601b031660608301526141f2604084016140c0565b6001600160801b0316608083015261420c606084016140c0565b6001600160801b03811660a084015250608083013560c083015261423260a08401614120565b6001600160401b031660e083015261424c60c08401614120565b6001600160401b031661010083015261426860e0840184614136565b610100610120850152612b1461014085018284614177565b6001600160a01b03831681526040602082018190525f9061325490830184613a78565b5f6001600160401b038211156142bb576142bb613d91565b50601f01601f191660200190565b5f82601f8301126142d8575f5ffd5b81356142eb6142e6826142a3565b613dce565b8181528460208386010111156142ff575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561432c575f5ffd5b823561433781613a3b565b915060208301356001600160401b03811115614351575f5ffd5b83016101008186031215614363575f5ffd5b61436b613da5565b61437482613a52565b8152614382602083016140fa565b6020820152614393604083016140c0565b60408201526143a4606083016140c0565b6060820152608082810135908201526143bf60a08301614120565b60a08201526143d060c08301614120565b60c082015260e08201356001600160401b038111156143ed575f5ffd5b6143f9878285016142c9565b60e08301525080925050509250929050565b634e487b7160e01b5f52603260045260245ffd5b62ffffff81168114613a4f575f5ffd5b5f5f5f60608486031215614441575f5ffd5b833561444c81613a3b565b9250602084013561445c81613a3b565b9150604084013561446c8161441f565b809150509250925092565b8051600281900b8114613324575f5ffd5b8051613324816140ac565b5f5f5f5f5f5f5f5f5f5f5f5f6101808d8f0312156144af575f5ffd5b8c516144ba816140e6565b60208e0151909c506144cb81613a3b565b60408e0151909b506144dc81613a3b565b60608e0151909a506144ed81613a3b565b60808e01519099506144fe8161441f565b975061450c60a08e01614477565b965061451a60c08e01614477565b955061452860e08e01614488565b6101008e01516101208f0151919650945092506145486101408e01614488565b91506145576101608e01614488565b90509295989b509295989b509295989b565b5f6001820161457a5761457a613f57565b5060010190565b60a081525f61459360a0830188613ce8565b82810360208401526145a58188613ce8565b8381036040850152865160608083528151908301819052919250602001905f9060808401905b8083101561460257835180516001600160a01b031683526020908101518184015290930192600192909201916040909101906145cb565b50602089015160208501526040890151604085015285810360608701526146298189613a78565b935050505082810360808401526146408185613a78565b98975050505050505050565b805161ffff81168114613324575f5ffd5b5f5f5f5f5f5f5f60e0888a031215614673575f5ffd5b875161467e81613a3b565b965061468c60208901614477565b955061469a6040890161464c565b94506146a86060890161464c565b93506146b66080890161464c565b925060a088015160ff811681146146cb575f5ffd5b91506146d960c08901613f14565b905092959891949750929550565b5f602082840312156146f7575f5ffd5b610f2482614477565b5f5f60408385031215614711575f5ffd5b505080516020909101519092909150565b5f5f5f60608486031215614734575f5ffd5b835161473f816140ac565b602085015160409095015190969495509392505050565b5f60208284031215614766575f5ffd5b8151610f24816140ac565b5f600160ff1b820161478557614785613f57565b505f0390565b6001600160a01b038281168282160390811115612b8257612b82613f57565b6001600160a01b038181168382160190811115612b8257612b82613f57565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a0608082018190525f9061343c90830184613a78565b5f5f5f60608486031215614815575f5ffd5b835161482081613a3b565b6020850151604086015191945092506001600160401b03811115614842575f5ffd5b8401601f81018613614852575f5ffd5b80516148606142e6826142a3565b818152876020838501011115614874575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b5f602082840312156148b9575f5ffd5b5051919050565b634e487b7160e01b5f52601260045260245ffd5b6001815b600184111561490f578085048111156148f3576148f3613f57565b600184161561490157908102905b60019390931c9280026148d8565b935093915050565b5f8261492557506001612b82565b8161493157505f612b82565b816001811461494757600281146149515761496d565b6001915050612b82565b60ff84111561496257614962613f57565b50506001821b612b82565b5060208310610133831016604e8410600b8410161715614990575081810a612b82565b61499c5f1984846148d4565b805f19048211156149af576149af613f57565b029392505050565b5f610f2460ff841683614917565b5f826149df57634e487b7160e01b5f52601260045260245ffd5b50049056fea26469706673582212206bea01a3b38d58000a9e686cc359c340a22f792f9b96ee718ac9300c49b5a18164736f6c634300081b0033000000000000000000000000da14fdd72345c4d2511357214c5b89a919768e5900000000000000000000000003a520b32c04bf3beef7beb72e919cf822ed34f100000000000000000000000033128a8fc17869897dce68ed026d694621f6fdfd