4k txs
15.6k calls
constructor
constructor(address owner_, address arcadiaFactory, address routerTrampoline, address positionManager, address cLFactory, address poolImplementation, address rewardToken, address stakedSlipstreamAm, address stakedSlipstreamWrapper)
functions
accountInfo
viewfunction accountInfo(address account) view returns (uint64 maxClaimFee, uint64 maxSwapFee, uint64 upperSqrtPriceDeviation, uint64 lowerSqrtPriceDeviation, uint64 minLiquidityRatio)
accountToInitiator
viewfunction accountToInitiator(address accountOwner, address account) view returns (address initiator)
ARCADIA_FACTORY
viewfunction ARCADIA_FACTORY() view returns (address)
guardian
viewfunction guardian() 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)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
ROUTER_TRAMPOLINE
viewfunction ROUTER_TRAMPOLINE() view returns (address)
changeGuardian
nonpayablefunction changeGuardian(address guardian_)
compound
nonpayablefunction compound(address account_, tuple initiatorParams)
executeAction
nonpayablefunction executeAction(bytes actionTargetData) returns (tuple depositData)
pause
nonpayablefunction pause()
setAccountInfo
nonpayablefunction setAccountInfo(address account_, address initiator, uint256 maxClaimFee, uint256 maxSwapFee, uint256 maxTolerance, uint256 minLiquidityRatio, bytes metaData_)
setPauseFlag
nonpayablefunction setPauseFlag(bool paused_)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
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)
GuardianChanged
event GuardianChanged(address indexed user, address indexed newGuardian)
OwnershipTransferred
event OwnershipTransferred(address indexed user, address indexed newOwner)
PauseFlagsUpdated
event PauseFlagsUpdated(bool pauseUpdate)
YieldClaimed
event YieldClaimed(address indexed account, address indexed asset, uint256 amount)
errors
InsufficientLiquidity
error InsufficientLiquidity()
InvalidInitiator
error InvalidInitiator()
InvalidPositionManager
error InvalidPositionManager()
InvalidValue
error InvalidValue()
NotAnAccount
error NotAnAccount()
OnlyAccount
error OnlyAccount()
OnlyAccountOwner
error OnlyAccountOwner()
OnlyGuardian
error OnlyGuardian()
OnlyPool
error OnlyPool()
Paused
error Paused()
Reentered
error Reentered()
UnbalancedPool
error UnbalancedPool()
creation bytecode
0x610180346101da57601f614ba838819003918201601f19168301916001600160401b038311848410176101de57808492610120946040528339810103126101da57610049816101f2565b610055602083016101f2565b91610062604082016101f2565b61006e606083016101f2565b61007a608084016101f2565b61008660a085016101f2565b9161009360c086016101f2565b936100ad6101006100a660e089016101f2565b97016101f2565b5f80546001600160a01b0319166001600160a01b039099169889178155604051999198907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36001600160a01b0390811660805290811660a0521660e05260c052610100526101205261014052610160526149a19081610207823960805181818161054f0152610bed015260a05181818161132f0152613b37015260c051818181611455015261235f015260e05181818161152b01528181611e4901528181612261015281816126bd01528181612ac001528181612e620152612fc201526101005181818161147601526123800152610120518181816124d20152818161250a01528181612540015281816127e00152612b60015261014051816114e80152610160518161155b0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101da5756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80630686ddd9146101495780630a73e391146101445780631204f5251461013f578063150b7a021461013a5780632fcb4f04146101355780633d692da114610130578063452a93201461012b5780635c975abb146101265780637d5ad9cd146101215780638456cb591461011c5780638cffa277146101175780638da5cb5b146101125780638da92e711461010d578063a129568d14610108578063a7310b5814610103578063a89d6dd4146100fe578063b699b82b146100f9578063f2fde38b146100f45763fa461e330361000e576113d2565b61135e565b61131a565b6112a0565b6111e0565b610d90565b610c4d565b610c1c565b610bd8565b610b5c565b61089b565b610877565b61084f565b6104bd565b610446565b6103ec565b610364565b610333565b610250565b6001600160a01b0381160361015f57565b5f80fd5b359061016e8261014e565b565b90600182811c9216801561019e575b602083101461018a57565b634e487b7160e01b5f52602260045260245ffd5b91607f169161017f565b634e487b7160e01b5f52604160045260245ffd5b608081019081106001600160401b038211176101d757604052565b6101a8565b60a081019081106001600160401b038211176101d757604052565b90601f801991011681019081106001600160401b038211176101d757604052565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602061024d928181520190610218565b90565b3461015f57602036600319011261015f5760043561026d8161014e565b6001600160a01b03165f908152600460205260408082209051815490929161029482610170565b808552916001811690811561030c57506001146102cc575b6102c8846102bc818603826101f7565b6040519182918261023c565b0390f35b5f90815260208120939250905b8082106102f2575090915081016020016102bc826102ac565b9192600181602092548385880101520191019092916102d9565b60ff191660208087019190915292151560051b850190920192506102bc91508390506102ac565b3461015f57602036600319011261015f57602061035a6004356103558161014e565b6114e6565b6040519015158152f35b3461015f57604036600319011261015f5760206004356103838161014e565b602435906103908261014e565b6001600160a01b039081165f908152600584526040808220938316825260209390935282902054915191168152f35b9181601f8401121561015f578235916001600160401b03831161015f576020838186019501011161015f57565b3461015f57608036600319011261015f5761040860043561014e565b61041360243561014e565b6064356001600160401b03811161015f576104329036906004016103bf565b5050604051630a85bd0160e11b8152602090f35b3461015f57602036600319011261015f576004356104638161014e565b61047760018060a01b035f5416331461158c565b600180546001600160a01b0319166001600160a01b03929092169182179055337fa14fc14d8620a708a896fd11392a235647d99385500a295f0d7da2a258b2e9675f80a3005b3461015f5760e036600319011261015f576004356104da8161014e565b6024356104e68161014e565b6044356064359260843560a43560c4356001600160401b03811161015f576105129036906004016103bf565b60025490949193906001600160a01b031661083657604051630972932760e21b81526001600160a01b0383166004820152602081806024810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107f3575f91610807575b50156107f857604051638da5cb5b60e01b81526001600160a01b038316989096906020886004815f8e5af19788156107f3575f986107c2575b506001600160a01b03881633036107b357670de0b6b3a7640000821180156107a2575b8015610791575b8015610780575b610771576001600160401b0361073c956106f6610707936106e6610723976106698f6107419f8c61063561064a9260018060a01b03165f52600560205260405f2090565b9060018060a01b03165f5260205260405f2090565b80546001600160a01b0319166001600160a01b03909216919091179055565b6106d6866106a761069561069061068b6106a161069561069061068b8a611610565b61163e565b611caf565b6001600160401b031690565b96611662565b946106c5826106b4611263565b9c168c906001600160401b03169052565b166001600160401b031660208a0152565b6001600160401b03166040880152565b6001600160401b03166060860152565b166001600160401b03166080830152565b6001600160a01b0383165f90815260036020526040902061168b565b6001600160a01b03165f90815260046020526040902090565b6117a9565b6001600160a01b0316907febc70f7c8d6a67b19e15e968cb908d21719e8ff9a778a71171fba931a618d0525f80a3005b632a9ffab760e21b5f5260045ffd5b50670de0b6b3a764000085116105f1565b50670de0b6b3a764000083116105ea565b50670de0b6b3a764000081116105e3565b6312272fd360e11b5f5260045ffd5b6107e591985060203d6020116107ec575b6107dd81836101f7565b8101906115e7565b965f6105c0565b503d6107d3565b6115dc565b630ea8370b60e41b5f5260045ffd5b610829915060203d60201161082f575b61082181836101f7565b8101906115c7565b5f610587565b503d610817565b63b5dfd9e560e01b5f5260045ffd5b5f91031261015f57565b3461015f575f36600319011261015f576001546040516001600160a01b039091168152602090f35b3461015f575f36600319011261015f57602060ff5f5460a01c166040519015158152f35b3461015f57604036600319011261015f576004356108b88161014e565b6024356001600160401b03811161015f5780600401610100600319833603011261015f5760ff5f5460a01c16610b4d576002546001600160a01b031661083657600280546001600160a01b0319166001600160a01b038516179055604051638da5cb5b60e01b81526001600160a01b038416936020826004815f895af19081156107f35761063561096892610975945f91610b2e575b506001600160a01b03165f90815260056020526040902090565b546001600160a01b031690565b336001600160a01b0390911603610b1f5761099961099561035583611871565b1590565b610b1057610a3791610a1e915f5f908360448101936001600160801b036109bf8661188c565b1615801590610aed575b610a9c575b6001600160801b038082610a2c610a0d6064610a06610a0060246109f96001600160601b039a611871565b9a016118a7565b9b61188c565b9b0161188c565b916040519b8c91336020840161192c565b03601f1981018c528b6101f7565b169616941690611ffa565b90803b1561015f5760405162b9252f60e41b8152905f908290818381610a61883060048401611a28565b03925af180156107f357610a82575b600280546001600160a01b0319169055005b80610a905f610a96936101f7565b80610845565b80610a70565b6001600160801b039350809250610ab39150611871565b50836001600160601b0383610ae1610adc610ad0602486016118a7565b6001600160601b031690565b611e2b565b959094925050506109ce565b50610b09610afd6064840161188c565b6001600160801b031690565b15156109c9565b63ed5f09f160e01b5f5260045ffd5b6317fb43e560e31b5f5260045ffd5b610b47915060203d6020116107ec576107dd81836101f7565b5f61094e565b6313d0ff5960e31b5f5260045ffd5b3461015f575f36600319011261015f576001546001600160a01b03163303610bc9575f5460ff8160a01c16610b4d5760ff60a01b1916600160a01b175f55604051600181527f549bab54c75a364ce0e438a4fbf09df7e6b096bcc83a6f91065a0fc8e410b29a90602090a1005b636570ecab60e11b5f5260045ffd5b3461015f575f36600319011261015f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461015f575f36600319011261015f575f546040516001600160a01b039091168152602090f35b8015150361015f57565b3461015f57602036600319011261015f577f549bab54c75a364ce0e438a4fbf09df7e6b096bcc83a6f91065a0fc8e410b29a6020600435610c8d81610c43565b5f5490610ca4336001600160a01b0384161461158c565b15159060ff60a01b8260a01b169060ff60a01b1916175f55604051908152a1005b90602080835192838152019201905f5b818110610ce25750505090565b8251845260209384019390920191600101610cd5565b80516080808452815190840181905260a08401949391602001905f5b818110610d60575050506060610d4f610d3d61024d959660208601518582036020870152610cc5565b60408501518482036040860152610cc5565b920151906060818403910152610cc5565b82516001600160a01b0316875260209687019690920191600101610d14565b90602061024d928181520190610cf8565b3461015f57602036600319011261015f576004356001600160401b03811161015f57610dc09036906004016103bf565b90610dc9611a4a565b50600254610de7906001600160a01b03165b6001600160a01b031690565b33036111d157335f908152600360205260409020610e129190610e0990611a6e565b92810190611b18565b8051909291906001600160a01b03169060a08401610e3781516001600160401b031690565b6001600160401b03610e5361069587516001600160401b031690565b911611801561119b575b61077157610e81610e7b610ad060208801516001600160601b031690565b84612232565b90610120820194610e93865151611bff565b91610eab610afd60408a01516001600160801b031690565b610eb484611c45565b52610ecc610afd60608a01516001600160801b031690565b610ed584611c57565b52610ee08351611bff565b97610ef0608082015186856125bd565b610100860193610f04610995838751611c8b565b61116c578a8988809651610f1e906001600160401b031690565b6001600160401b031691610f32938a6126aa565b610f3d848a88612ab1565b608001516001600160401b0316604084015162ffffff1660c08401518c906001600160401b0316875160408601519091906001600160a01b031660608701519092906001600160a01b031694610f928c611c45565b51610f9c86611c45565b51610fa69161167e565b94610fb08d611c57565b5190610fbb90611c57565b51610fc59161167e565b610ff19790966001600160a01b039081169516936001600160401b039081169262ffffff169116612bc8565b938a8286805161100090151590565b5f14966109959661103b9461104f9961117b5761102a602085015161102483611c45565b51611631565b61103382611c45565b525b8b612cb8565b611047610ddb88612db9565b809152611c8b565b61116c578051156111435761108d61106683611c45565b5161108461107385611c57565b5161107d8b611c57565b519061167e565b905b8585612e33565b6001600160801b0360406110ab60e08601516001600160801b031690565b9201519116106111345760206110dd83866102c899856110eb986110cf8585612fb7565b6001600160a01b03166130b5565b920194855190519085613253565b91516040519081526001600160a01b03919091169033907f6c7e7d4cb83a668aef31739dd35dc3fc3d5f31d62b69e438b7b24d35b40dcc6390602090a360405191829182610d7f565b63bb55fd2760e01b5f5260045ffd5b61108d61115c61115284611c45565b5161107d8a611c45565b61116584611c57565b5190611086565b633a8bf65960e01b5f5260045ffd5b61118c602085015161102483611c57565b61119582611c57565b52611035565b5060c08501516001600160401b03166001600160401b036111c961069560208801516001600160401b031690565b911611610e5d565b63f3f6425d60e01b5f5260045ffd5b3461015f57602036600319011261015f576004356111fd8161014e565b6001600160a01b03165f90815260036020908152604091829020805460019091015483516001600160401b03808416825283861c811694820194909452608083811c85169582019590955260c09290921c6060830152919091169181019190915260a090f35b6040519061016e60a0836101f7565b6040519061016e610100836101f7565b6040519061016e6080836101f7565b6040519061016e60c0836101f7565b3461015f5760a036600319011261015f57600435608036602319011261015f576113086102c891604051906112d4826101bc565b602435825260443560208301526064356112ed8161014e565b60408301526084356112fe8161014e565b6060830152611c8b565b60405190151581529081906020820190565b3461015f575f36600319011261015f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b3461015f57602036600319011261015f5760043561137b8161014e565b5f5490611392336001600160a01b0384161461158c565b60018060a01b031680916001600160601b0360a01b16175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b3461015f57606036600319011261015f576024356004356044356001600160401b03811161015f5761140a60609136906004016103bf565b908092918101031261015f578035926114228461014e565b61149a60406020840135936114368561014e565b01359461144286611ca4565b6001600160a01b039384169593169285847f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000613370565b336001600160a01b03909116036114d7575f8313156114c057506100189250339061341e565b9150505f81136114cc57005b61001891339061341e565b634b60273560e01b5f5260045ffd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169116908114908115611559575b8115611529575090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168114915061151f565b1561159357565b60405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606490fd5b9081602091031261015f575161024d81610c43565b6040513d5f823e3d90fd5b9081602091031261015f575161024d8161014e565b634e487b7160e01b5f52601160045260245ffd5b670de0b6b3a7640000019081670de0b6b3a76400001161162c57565b6115fc565b9190820180921161162c57565b90670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561162c57565b670de0b6b3a76400000390670de0b6b3a7640000821161162c57565b9190820391821161162c57565b600161173d608061016e946116c06001600160401b0382511686906001600160401b03166001600160401b0319825416179055565b60208101518554604080840151606085015160c089811b8a900377ffffffffffffffffffffffffffffffff0000000000000000199095169590931b6fffffffffffffffff000000000000000016949094176001600160401b03918216871b179290921692901b6001600160c01b0319169190911786559101511690565b9101906001600160401b03166001600160401b0319825416179055565b601f821161176757505050565b5f5260205f20906020601f840160051c8301931061179f575b601f0160051c01905b818110611794575050565b5f8155600101611789565b9091508190611780565b9092916001600160401b0381116101d7576117ce816117c88454610170565b8461175a565b5f601f821160011461180c5781906117fd9394955f92611801575b50508160011b915f199060031b1c19161790565b9055565b013590505f806117e9565b601f1982169461181f845f5260205f2090565b915f5b878110611859575083600195969710611840575b505050811b019055565b01355f19600384901b60f8161c191690555f8080611836565b90926020600181928686013581550194019101611822565b3561024d8161014e565b6001600160801b0381160361015f57565b3561024d8161187b565b6001600160601b0381160361015f57565b3561024d81611896565b359061016e82611896565b359061016e8261187b565b35906001600160401b038216820361015f57565b9035601e198236030181121561015f5701602081359101916001600160401b03821161015f57813603831361015f57565b908060209392818452848401375f828201840152601f01601f1916010190565b6001600160a01b0390911681526040602082015261024d9161014090611a159080356119578161014e565b6001600160a01b03166040850152611984611974602083016118b1565b6001600160601b03166060860152565b6119a3611993604083016118bc565b6001600160801b03166080860152565b6119c26119b2606083016118bc565b6001600160801b031660a0860152565b608081013560c08501526119eb6119db60a083016118c7565b6001600160401b031660e0860152565b611a0b6119fa60c083016118c7565b6001600160401b0316610100860152565b60e08101906118db565b919092610100610120820152019161190c565b6001600160a01b03909116815260406020820181905261024d92910190610218565b60405190611a57826101bc565b606080838181528160208201528160408201520152565b90604051611a7b816101dc565b60806001600160401b03806001849680548381168752838160401c1660208801528381871c16604088015260c01c606087015201541616910152565b6001600160401b0381116101d757601f01601f191660200190565b81601f8201121561015f57803590611ae982611ab7565b92611af760405194856101f7565b8284526020838301011161015f57815f926020809301838601378301015290565b919060408382031261015f578235611b2f8161014e565b926020810135906001600160401b03821161015f57016101008183031261015f57611b58611272565b91611b6282610163565b8352611b70602083016118b1565b6020840152611b81604083016118bc565b6040840152611b92606083016118bc565b606084015260808201356080840152611bad60a083016118c7565b60a0840152611bbe60c083016118c7565b60c084015260e08201356001600160401b03811161015f57611be09201611ad2565b60e082015290565b6001600160401b0381116101d75760051b60200190565b90611c0982611be8565b611c1660405191826101f7565b8281528092611c27601f1991611be8565b0190602036910137565b634e487b7160e01b5f52603260045260245ffd5b805115611c525760200190565b611c31565b805160011015611c525760400190565b805160021015611c525760600190565b8051821015611c525760209160051b010190565b815181119182611c9a57505090565b6020015111919050565b8060020b0361015f57565b60b581600160881b811015611d5a575b80690100000000000000000062010000921015611d4d575b65010000000000811015611d40575b6301000000811015611d33575b010260121c8082040160011c8082040160011c8082040160011c8082040160011c8082040160011c8082040160011c8082040160011c8080920410900390565b60101c9160081b91611cf3565b60201c9160101b91611ce6565b60401c9160201b91611cd7565b5068b500000000000000009050608082901c611cbf565b519061016e82611ca4565b519061016e8261187b565b91908261018091031261015f578151611d9f81611896565b916020810151611dae8161014e565b916040820151611dbd8161014e565b916060810151611dcc8161014e565b916080820151611ddb81611ca4565b91611de860a08201611d71565b91611df560c08301611d71565b91611e0260e08201611d7c565b91610100820151916101208101519161024d610160611e246101408501611d7c565b9301611d7c565b60405163133f757160e31b81526004810191909152610180816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156107f3575f915f91611e8657509091565b9050611eaa91506101803d8111611eb9575b611ea281836101f7565b810190611d87565b50505050505050509250905091565b503d611e98565b5f19811461162c5760010190565b60405160809190611edf83826101f7565b6003815291601f1901366020840137565b60405160609190611f0183826101f7565b6002815291601f1901366020840137565b60405190606082018281106001600160401b038211176101d7576040525f604083606081528260208201520152565b92949391611f5a611f689260a0865260a0860190610cf8565b908482036020860152610cf8565b828103604084015260608101948051956060835286518091526020608084019701905f5b818110611fcf5750505094611fc19160408088602061024d999a01516020850152015191015283810360608501526060610218565b916080818403910152610218565b825180516001600160a01b03168a52602090810151818b015260409099019890920191600101611f8c565b929461024d959492946001938015159081612149575b8315159081612139575b61202387611bff565b9861202d88611bff565b9661205c61204361203d8b611bff565b9a611bff565b9a61204d8d611c45565b6001600160a01b039091169052565b61206588611c45565b52600161207189611c45565b52600261207d8a611c45565b52600193612109575b50506120db575b505050612098611282565b9384526020840152604083015260608201526120cd6120b5611a4a565b936120be611f12565b60405195869460208601611f41565b03601f1981018352826101f7565b6001926120ef6121009361204d848b611c77565b6120f98287611c77565b5285611c77565b525f808061208d565b6121199192935061204d8a611c57565b61212286611c57565b52600161212e87611c57565b526002905f80612086565b9561214390611ec0565b9561201a565b60029550612010565b6040519061014082018281106001600160401b038211176101d7576040526060610120835f81525f60208201525f60408201525f838201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201520152565b519061ffff8216820361015f57565b91908260c091031261015f5781516121d38161014e565b9160208101516121e281611ca4565b916121ef604083016121ad565b916121fc606082016121ad565b9160a061220b608084016121ad565b92015161024d81610c43565b9081602091031261015f575162ffffff8116810361015f5790565b61229990929192612241612152565b6020810185905260405163133f757160e31b8152600481019590955293917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169061018090849081906024820190565b0381845afa9182156107f3576123b1936123a49387935f935f935f905f905f905f96612568575b50612309929160c08a6122f9612302946122ef606061235c9d9e9f019b60e08501906001600160801b03169052565b60020b60a0830152565b019060020b9052565b60020b8452565b6001600160a01b0316148015612532575b80156124fc575b156124bb5761232e611ef0565b6101208901525b6123558361204d6101208b0161234f8861204d8351611c45565b51611c57565b5160020b90565b917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000613370565b6001600160a01b03168352565b815160049060c0906123cd90610ddb906001600160a01b031681565b604051633850c7bd60e01b815292839182905afa80156107f3575f915f91612480575b5060020b60808401525b6001600160a01b03908116610100840152825160049160209161241f91610ddb911681565b60405163ddca3f4360e01b815292839182905afa80156107f35761016e915f91612451575b5062ffffff166040840152565b612473915060203d602011612479575b61246b81836101f7565b810190612217565b5f612444565b503d612461565b6123fa92506124a7915060c03d60c0116124b4575b61249f81836101f7565b8101906121bc565b50505050919091906123f0565b503d612495565b6124f76124c6611ece565b806101208b015261204d7f000000000000000000000000000000000000000000000000000000000000000091611c67565b612335565b506001600160a01b038381167f000000000000000000000000000000000000000000000000000000000000000090911614612321565b506001600160a01b038481167f00000000000000000000000000000000000000000000000000000000000000009091161461231a565b6122f9985061235c97506123029650612309935060c0925061259991506101803d8111611eb957611ea281836101f7565b505050509b9650945095929c919c9b909b9c9b95939450509a9998505091926122c0565b919061267561262c61024d935f60606040516125d8816101bc565b828152826020820152826040820152015261262661069560406126176001600160401b0361261060608c01516001600160401b031690565b168561349b565b9801516001600160401b031690565b9061349b565b9161265461264660a061264b61264660c086015160020b90565b61356b565b93015160020b90565b9261265d611282565b95865260208601526001600160a01b03166040850152565b6001600160a01b03166060830152565b919082604091031261015f576020825192015190565b9081602091031261015f575190565b6001600160a01b039283169491929091907f0000000000000000000000000000000000000000000000000000000000000000168581146128c65750602084810151604051630ae169a560e41b8152600481019190915295869060249082905f905af19485156107f3575f95612891575b50612725908561349b565b9160038251145f146127bf579061275f916127596127536127498861102486611c67565b9561102484611c67565b91611c67565b52611c67565b5261012001516001600160a01b03906127889061277b90611c67565b516001600160a01b031690565b604051928352169033907ff3055bc8d92d9c8d2f12b45d112dd345cd2cfd17292b8d65c5642ac6f912dfd79080602081015b0390a3565b909261012001926127d361277b8551611c45565b6001600160a01b039081167f00000000000000000000000000000000000000000000000000000000000000009091160361284c576128349161282e61282861281e8861102486611c45565b9561102484611c45565b91611c45565b52611c45565b52516001600160a01b03906127889061277b90611c45565b6128799161287361286d6128638861102486611c57565b9561102484611c57565b91611c57565b52611c57565b52516001600160a01b03906127889061277b90611c57565b6127259195506128b89060203d6020116128bf575b6128b081836101f7565b81019061269b565b949061271a565b503d6128a6565b849392955061294860409160205f9701516128df611282565b90815230602082019081526001600160801b0385830181905260608301818152865163fc6f786560e01b81528451600482015292516001600160a01b03166024840152604090930151811660448301529151909116606482015296879283919082906084820190565b03925af19485156107f3575f945f96612a50575b50610ddb9361277b936129ce61286d6129c589968661299e61286d8e61298b612a1b9f6110246101209d611c45565b61299485611c45565b5261102484611c57565b526129b56129ac828a61349b565b61102487611c45565b6129be86611c45565b528b61349b565b61102484611c57565b52019060018060a01b036129e561277b8451611c45565b604051928352169033907ff3055bc8d92d9c8d2f12b45d112dd345cd2cfd17292b8d65c5642ac6f912dfd790602090a351611c57565b6040519182529033907ff3055bc8d92d9c8d2f12b45d112dd345cd2cfd17292b8d65c5642ac6f912dfd79080602081016127ba565b61286d9650612a1b95509361277b936129ce61286d6129c561299e9661012096612a94610ddb9b60403d604011612aaa575b612a8c81836101f7565b810190612685565b9990999d5050965096995050505093509361295c565b503d612a82565b916001600160a01b03918216917f0000000000000000000000000000000000000000000000000000000000000000168203612aeb57505050565b602081810151604051630852cd8d60e31b8152600481019190915292839060249082905f905af19182156107f3575f92612ba7575b5081612b2b57505050565b8251600303612b42575090612b3f90611c67565b52565b61277b610120612b53920151611c45565b6001600160a01b039081167f000000000000000000000000000000000000000000000000000000000000000090911603612b9757612828612b3f9161102484611c45565b61286d612b3f9161102484611c57565b612bc191925060203d6020116128bf576128b081836101f7565b905f612b20565b90610afd86612c6a95612c1a888c8c899c9b9e9d9b612c639a64e8d4a51000612c5e9a5f6080604051612bfa816101dc565b82815282602082015282604082015282606082015201520201938661388b565b9b8c82849f9495939c8183885f14612ca75750612c369161167e565b955b15612c965750612c4791611631565b935b6001600160a01b039081169281169116613992565b61349b565b928261349b565b91612c7d612c76611263565b9515158652565b8260208601526040850152036060830152608082015290565b9050612ca19161167e565b93612c49565b9050612cb291611631565b95612c38565b92939491906060860191825115612db05760e001518051612d985750612d789291848792612ce68451151590565b94612cf760408a015162ffffff1690565b95612d018a613c47565b6101008b01516001600160a01b03169162ffffff6080612d6b612d416060612d3260408a015160018060a01b031690565b9801516001600160a01b031690565b9761107d612d64612d5e612d548d611c45565b5161107d85611c45565b9b611c57565b5191611c57565b9851990151991690613cb1565b918215612d9257612d8c61016e9451151590565b91613e5b565b50505050565b9492505050612daa61016e9451151590565b91613aeb565b50505050505050565b51604051633850c7bd60e01b81529060c090829060049082906001600160a01b03165afa9081156107f3575f91612dee575090565b612e07915060c03d60c0116124b45761249f81836101f7565b505050505090565b9081606091031261015f578051612e258161187b565b916040602083015192015190565b92612f1d835f9394606093612e9f816101208901612e9a610ddb61277b612e60610ddb61277b8651611c45565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316998a959161234f91908790613fda565b613fda565b602087015191612ead611291565b928352602083019081526040808401928352868401889052608084018881524260a08601908152915163219f5d1760e01b8152855160048201529251602484015292516044830152606090930151606482015290516084820152905160a4820152938492839190829060c4820190565b03925af19182156107f357612b3f9261286d925f5f915f93612f77575b50612f559060e0612f64949501906001600160801b03169052565b612f5e86611c45565b5161167e565b612f6d85611c45565b52612f5e84611c57565b612f64935060e09250612f559150612fa69060603d606011612fb0575b612f9e81836101f7565b810190612e0f565b9450925090612f3a565b503d612f94565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169190831690828203612ff55750505050565b602001928351833b1561015f5760405163095ea7b360e01b81526001600160a01b039290921660048301526024820152915f908390604490829084905af19081156107f3575f9360209361306b936130a1575b505160405194858094819363140e25ad60e31b8352600483019190602083019252565b03925af180156107f357613082575b808080612d92565b61309a9060203d6020116128bf576128b081836101f7565b505f61307a565b80610a90876130af936101f7565b5f613048565b602085015194959490936001600160a01b0316803b1561015f5760405163095ea7b360e01b815233600482015260248101929092525f908290604490829084905af180156107f35761323f575b506001945f5b82518110156132385761312361277b82610120850151611c77565b9661312e8285611c77565b516131398387611c77565b51101561320c579061318b60019261315f6131548488611c77565b5161107d858a611c77565b6131698488611c77565b526131866131778488611c77565b5133868060a01b038d16613fda565b611ec0565b975b6131978287611c77565b516131eb575b6131a78287611c77565b5160405190815260a084901b8490039182169188169033907f1b37fcc57f4b6029ca7b3a70af0104811f67c72fe73e8043575f03a01e05663190602090a401613108565b6132076131f88388611c77565b5188858060a01b03841661341e565b61319d565b969060019161321b8286611c77565b516132268388611c77565b525f6132328387611c77565b5261318d565b5050505050565b80610a905f61324d936101f7565b5f613102565b9293909193613260611a4a565b5061326a82611bff565b94600161327684611bff565b9361328081611bff565b9561329761328d83611bff565b9861204d8b611c45565b6132a086611c45565b52816132ab87611c45565b5260026132b788611c45565b52116132dd575b50506132c8611282565b93845260208401526040830152606082015290565b9194909395926001935f5b8651811015613359576132fb8188611c77565b51613309575b6001016132e8565b9461335160019161332a61332061277b8a8a611c77565b61204d8389611c77565b613334888a611c77565b5161333f8287611c77565b528261334b828d611c77565b52611ec0565b959050613301565b5096945092509390505f806132be565b1561015f57565b916001600160a01b03848116908216101561015f57604080516001600160a01b0392831660208201908152929095169085015260029490940b60608401526055936037936133c181608081016120cd565b5190209060405192733d602d80600a3d3981f3363d3d373d3d3d363d7360601b845260601b60148401526f5af43d82803e903d91602b57fd5bf3ff60801b602884015260601b6038830152604c820152818120606c820152012090565b60405163a9059cbb60e01b81526001600160a01b03909216600483015260248201929092526020915f9160449183905af13d15601f3d1160015f51141617161561346457565b60405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606490fd5b90805f19048211810215670de0b6b3a7640000021561015f57670de0b6b3a764000091020490565b7812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218111670de0b6b3a7640000021582021561015f57670de0b6b3a7640000020490565b90805f19048211810215620f4240021561015f57620f424091020490565b7f1c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71811160090215600a021561015f576009600a91020490565b815f1904811182021583021561015f57020490565b60020b908160ff1d82810118620d89e881116138855763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b189160028116613869575b6004811661384d575b60088116613831575b60108116613815575b602081166137f9575b604081166137dd575b608081166137c1575b61010081166137a5575b6102008116613789575b610400811661376d575b6108008116613751575b6110008116613735575b6120008116613719575b61400081166136fd575b61800081166136e1575b6201000081166136c5575b6202000081166136aa575b62040000811661368f575b6208000016613676575b5f1261366e575b0160201c90565b5f1904613667565b6b048a170391f7dc42444e8fa290910260801c90613660565b6d2216e584f5fa1ea926041bedfe9890920260801c91613656565b916e5d6af8dedb81196699c329225ee6040260801c9161364b565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91613640565b916f31be135f97d08fd981231505542fcfa60260801c91613635565b916f70d869a156d2a1b890bb3df62baf32f70260801c9161362b565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91613621565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91613617565b916fe7159475a2c29b7443b29c7fa6e889d90260801c9161360d565b916ff3392b0822b70005940c7a398e4b70f30260801c91613603565b916ff987a7253ac413176f2b074cf7815e540260801c916135f9565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916135ef565b916ffe5dee046a99a2a811c461f1969c30530260801c916135e5565b916fff2ea16466c96a3843ec78b326b528610260801c916135dc565b916fff973b41fa98c081472e6896dfb254c00260801c916135d3565b916fffcb9843d60f6159c9db58835c9266440260801c916135ca565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916135c1565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916135b8565b916ffff97272373d413259a46990580e213a0260801c916135af565b82614056565b94929593905f92808710155f146138ae575050505061024d90600194809461418d565b929691928187116138c857505050908161024d9294614153565b909196506001600160801b03869493961161015f57801561398d5761390c61390561391993613912936002880a04818860011b03039087036134c3565b9785614138565b86611631565b80956134c3565b93858510156139605761395d929394956139569160019761394585670de0b6b3a7640000038685613556565b670de0b6b3a7640000019203613556565b80936141c6565b91565b61024d9294613986915f97613975858261349b565b670de0b6b3a7640000039203613556565b8094614153565b61406b565b919390916001600160a01b0380861690841611613a28575b6001600160a01b0381811690841681116139d4575050509061024d926139cf9261423f565b61422b565b929391929091906001600160a01b0386161115613a1957906139fe613a04939261024d968361423f565b936141fa565b80821015613a12575061422b565b905061422b565b505061024d926139cf926141fa565b9193916139aa565b909160608284031261015f578151613a478161014e565b926020830151926040810151906001600160401b03821161015f570181601f8201121561015f57805190613a7a82611ab7565b92613a8860405194856101f7565b8284526020838301011161015f57815f9260208093018386015e8301015290565b91613ad0906080949796959260018060a01b0316845260a0602085015260a0840190610218565b6001600160a01b039687166040840152951660608201520152565b90926040613b056101209260208082518301019101613a30565b939096865f14613c25570190613b2b61277b613b2461277b8551611c45565b9351611c57565b935b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116925f91613b6a908b908690881661341e565b613b928a8751988997889687956344bc658560e01b875260018060a01b031660048701613aa9565b03925af19283156107f3575f915f94613c02575b5015613bdc57613bc9613bd391613bc4612b3f9596612f5e86611c45565b611631565b9361102483611c57565b61282e82611c57565b613bfd90613bc4613bf3612b3f9561102486611c45565b95612f5e85611c57565b613bd3565b909350613c1e915060403d604011612aaa57612a8c81836101f7565b925f613ba6565b0190613c4161277b613c3a61277b8551611c57565b9351611c45565b93613b2d565b51604051630d34328160e11b815290602090829060049082906001600160a01b03165afa9081156107f3575f91613c7c575090565b90506020813d602011613ca9575b81613c97602093836101f7565b8101031261015f575161024d8161187b565b3d9150613c8a565b97919492959690935f925b60648410613cd1575050505050505050505090565b613cec9086620f42409c939495969798999a9b9c03906134ff565b8a15613de1576001600160a01b0390613d0690898b61462e565b16906001600160a01b0390613d1c90898b6146f3565b165b8a15613dc4570160011c6001600160a01b03165b6001600160a01b038181169086168110613d565750505050505061024d94506142ac565b9498979695946001600160a01b0383161015613db15780828b858b8d613d82613d8a978e8e8e886142d1565b95909461431d565b809b92959195613da257506001019291909893613cbc565b9a505050505050505050505090565b50509550509091925061024d9450614286565b6001600160a01b039180820160011c916002910815150116613d32565b906001600160a01b0390613df690898b6145cf565b16906001600160a01b0390613e0c90898b614697565b16613d1e565b600160ff1b811461162c575f0390565b6001600160a01b039182168152911515602083015260408201929092529116606082015260a06080820181905261024d92910190610218565b92613f209291604091613e83613e7d610ddb610ddb855160018060a01b031690565b91613e12565b8415613fbe575f6401000276a4915b613f026101208601613ef4613ec56060613ebc61277b613eb561277b8751611c45565b9551611c57565b99015160020b90565b89516001600160a01b03938416602082015298909216604089015260029190910b606088015286906080820190565b03601f1981018752866101f7565b8551630251596160e31b8152978895869485938a3060048701613e22565b03925af19081156107f357612b3f925f905f93613f9a575b508115613f8557613f4c90612f5e86611c45565b613f5585611c45565b5215613f785761286d90613f72613f6b85611c57565b5191613e12565b90611631565b61286d90612f5e84611c57565b613f9590613f72613f6b87611c45565b613f4c565b9050613fb691925060403d604011612aaa57612a8c81836101f7565b91905f613f38565b5f73fffd8963efd1fc6a506488495d951d5263988d2591613e92565b906014528160345263095ea7b360601b5f5260205f6044601082855af13d1560015f511417161561400e575b50505f603452565b604460105f80936020958260345263095ea7b360601b83528238868683865af1506034525af13d1560015f5114171615614049575f80614006565b633e3f8f735f526004601cfd5b6345c3193d60e11b5f5260020b60045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b9290600193925b60018211614092575050565b9092808204811161162c57600184166140b2575b80029260011c90614086565b809402936140a6565b6140cc5f196002600160601b61407f565b90815f1904811161162c570290565b905f91801561413257808060011461412a576002146141235760016101338210166001600b83101617614118576140cc91925060025f199161407f565b6002900a9161162c57565b5060049150565b506001925050565b505f9150565b9061414561024d926140db565b61414d6140bb565b9161454c565b90916001600160801b03821161015f5761024d9261417a91670de0b6b3a76400000361349b565b9060026141856140bb565b910a9161454c565b90916001600160801b03821161015f5761024d926141b491670de0b6b3a76400000361349b565b60026141be6140bb565b920a9061454c565b9190916001600160801b03811161015f5761024d926141e99160026141856140bb565b90670de0b6b3a764000003906134c3565b61024d9291906001600160a01b0380831690821611614225575b90036001600160a01b031690614476565b90614214565b906001600160801b03821691820361015f57565b61024d92916001600160a01b0380821690831611614280575b61426e6001600160a01b03828116908416614503565b9190036001600160a01b03169161454c565b90614258565b61429f61024d946142a692949394620f42400390614791565b8383614697565b906147f3565b6142c561024d946142cc92949394620f42400390614791565b838361462e565b6148b7565b9394939192911561430257906142fc83926142f061024d958489614857565b90620f424003906147b4565b946148b7565b9361431782956142f0858461024d97966148e3565b946147f3565b939497959296909196845f14614443578881111561443a576143438982035b898461423f565b9061435185880184866141fa565b985b898310998a1561442a5761436781856134c3565b9a5b156143cf575050509061437f614385939261422b565b916148e3565b91156143c057620f4240929190828211156143af5750035b925b670de0b6b3a76400000310929190565b90506143bb915061351d565b61439d565b939450620f424091039361439f565b9092506143e7919697506143ed94509994989961422b565b91614857565b921561440057500392620f42409061439f565b9493620f42409290828211156144195750035b9261439f565b9050614425915061351d565b614413565b61443484826134c3565b9a614369565b6143435f61433c565b614450848201898461423f565b908987111561446d576144678a88035b84866141fa565b98614353565b6144675f614460565b90606082901b905f19600160601b840992828085109403938085039461449d868511613369565b146144fc578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b81810291905f1982820991838084109303928084039384600160601b111561015f571461454357600160601b910990828211900360a01b910360601c1790565b50505060601c90565b91818302915f1981850993838086109503948086039561456d878611613369565b146145c7579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b91908115614629576001600160a01b03909216918183029160609190911b600160601b600160e01b03169082048314828211161561461c5761024d926146179282039161491f565b614948565b63f5c787f15f526004601cfd5b505090565b919081156146295760601b600160601b600160e01b0316916001600160a01b03168181028281048214614683575b50801561398d57820490810180911161162c5780820615159104016001600160a01b031690565b830183811061465c579150610ddb9261491f565b916001600160a01b0381116146da576001600160801b039060601b911690811561398d5704905b6001600160a01b031690810190811061162c5761024d90614948565b6001600160801b036146ed921690614476565b906146be565b91906001600160a01b038211614754576001600160801b036147186147259360601b90565b9116808206151591040190565b905b6001600160a01b031690808211156147475790036001600160a01b031690565b634323a5555f526004601cfd5b6001600160801b031661476c81600160601b8461454c565b91811561398d57600160601b9009614785575b90614727565b6001018061477f575f80fd5b815f19048111820215620f4240021561015f5702620f4240808204910615150190565b7d10c6f7a0b5ed8d36b4c7f34938583621fafc8b0079a2834d26fa3fcc9ea98111620f4240021582021561015f57620f42400290808204910615150190565b6001600160a01b0382811690821611614851575b6001600160a01b03811692831561484557614841926001600160a01b0380821693909103169060601b600160601b600160e01b031661454c565b0490565b62bfc9215f526004601cfd5b90614807565b6001600160a01b03828116908216116148b1575b6001600160a01b038116928315614845576148a5926001600160a01b0380821693909103169060601b600160601b600160e01b031661491f565b90808206151591040190565b9061486b565b61024d926001600160a01b03928316919092160360ff81901d90810118906001600160801b0316614503565b6001600160a01b0391821691160360ff81901d90810118906001906001600160801b03166149118382614503565b928260601b91091515160190565b92919061492d82828661454c565b93821561398d570961493b57565b9060010190811561015f57565b6001600160a01b0381169190820361495c57565b6393dafdf160e01b5f5260045ffdfea26469706673582212204cd336ffa470c2547234eaac3eb18c24175163b7111d33592adff16bfc02a46d64736f6c634300081d0033000000000000000000000000b4d72b1c91e640e4ed7d7397f3244de4d8acc50b000000000000000000000000da14fdd72345c4d2511357214c5b89a919768e59000000000000000000000000354dbba1348985cc952c467b8ddaf5dd07590667000000000000000000000000827922686190790b37229fd06084350e74485b720000000000000000000000005e7bb104d84c7cb9b682aac2f3d509f5f406809a000000000000000000000000ec8e5342b19977b4ef8892e02d8daecfa1315831000000000000000000000000940181a94a35a4569e4529a3cdfb74e38fd986310000000000000000000000001dc7a0f5336f52724b650e39174cfcbbedd67bf1000000000000000000000000d74339e0f10fce96894916b93e5cc7de89c98272