1.7k txs
29.2k calls
constructor
constructor(address arcadiaFactory, 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, address strategyHook)
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)
executeAction
nonpayablefunction executeAction(bytes actionTargetData) returns (tuple depositData)
rebalance
nonpayablefunction rebalance(address account_, tuple initiatorParams)
setAccountInfo
nonpayablefunction setAccountInfo(address account_, address initiator, uint256 maxClaimFee, uint256 maxSwapFee, uint256 maxTolerance, uint256 minLiquidityRatio, address strategyHook, bytes strategyData, bytes metaData_)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data)
events
AccountInfoSet
event AccountInfoSet(address indexed account, address indexed initiator, address indexed strategyHook)
FeePaid
event FeePaid(address indexed account, address indexed receiver, address indexed asset, uint256 amount)
Rebalance
event Rebalance(address indexed account, address indexed positionManager, uint256 oldId, uint256 newId)
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
0x610160604052348015610010575f5ffd5b50604051615d90380380615d9083398101604081905261002f91610080565b6001600160a01b0396871660805294861660c05292851660a05290841660e0528316610100528216610120521661014052610101565b80516001600160a01b038116811461007b575f5ffd5b919050565b5f5f5f5f5f5f5f60e0888a031215610096575f5ffd5b61009f88610065565b96506100ad60208901610065565b95506100bb60408901610065565b94506100c960608901610065565b93506100d760808901610065565b92506100e560a08901610065565b91506100f360c08901610065565b905092959891949750929550565b60805160a05160c05160e051610100516101205161014051615bab6101e55f395f61040401525f6103c901525f81816119be015281816119fa01528181611a8501528181611f16015261241f01525f81816113040152611b4e01525f8181610440015281816113db015281816118eb0152818161198801528181611d5f015281816121370152818161233b01528181612547015281816125fe015281816126e9015281816129dd01528181612a3901528181612a7501528181612c470152612caa01525f81816113250152611b6f01525f81816101ec015261076a0152615bab5ff3fe60806040526004361061009d575f3560e01c80632e7df039116100625780632e7df039146101bc5780638cffa277146101db578063a129568d1461020e578063a7310b581461023a578063a89d6dd4146102f1578063fa461e3314610310575f5ffd5b80630686ddd9146100a85780630a73e391146100dd5780631204f5251461010c578063150b7a02146101635780632cacb5fa1461019b575f5ffd5b366100a457005b5f5ffd5b3480156100b3575f5ffd5b506100c76100c236600461487f565b61032f565b6040516100d491906148c8565b60405180910390f35b3480156100e8575f5ffd5b506100fc6100f736600461487f565b6103c6565b60405190151581526020016100d4565b348015610117575f5ffd5b5061014b6101263660046148da565b600360209081525f92835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b0390911681526020016100d4565b34801561016e575f5ffd5b5061018261017d366004614955565b61047a565b6040516001600160e01b031990911681526020016100d4565b3480156101a6575f5ffd5b506101ba6101b53660046149c2565b61048c565b005b3480156101c7575f5ffd5b506101ba6101d6366004614a0a565b610722565b3480156101e6575f5ffd5b5061014b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610219575f5ffd5b5061022d610228366004614ad3565b610bfd565b6040516100d49190614be5565b348015610245575f5ffd5b506102a661025436600461487f565b600160208190525f918252604090912080549101546001600160401b0380831692600160401b808204831693600160801b8304841693600160c01b9093048316928116916001600160a01b0391041686565b604080516001600160401b039788168152958716602087015293861693850193909352908416606084015290921660808201526001600160a01b0390911660a082015260c0016100d4565b3480156102fc575f5ffd5b506100fc61030b366004614c64565b6112cc565b34801561031b575f5ffd5b506101ba61032a366004614cf4565b6112e8565b60026020525f90815260409020805461034790614d42565b80601f016020809104026020016040519081016040528092919081815260200182805461037390614d42565b80156103be5780601f10610395576101008083540402835291602001916103be565b820191905f5260205f20905b8154815290600101906020018083116103a157829003601f168201915b505050505081565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061043857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b8061047457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b92915050565b630a85bd0160e11b5b95945050505050565b5f546001600160a01b0316156104b55760405163b5dfd9e560e01b815260040160405180910390fd5b336001600160a01b031660035f846001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156104ff573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105239190614d7a565b6001600160a01b03908116825260208083019390935260409182015f9081208783168252909352912054161461056c576040516317fb43e560e31b815260040160405180910390fd5b61057c6100f7602083018361487f565b6105995760405163ed5f09f160e01b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b03841617815580806105c56060850160408601614db4565b6001600160801b031611806105f157505f6105e66080850160608601614db4565b6001600160801b0316115b1561062a57610624610606602085018561487f565b6106166040860160208701614dee565b6001600160601b03166113b9565b90925090505b5f6106af61063b602086018661487f565b61064b6040870160208801614dee565b6001600160601b0316858561066660608a0160408b01614db4565b6001600160801b031661067f60808b0160608c01614db4565b6001600160801b0316338b60405160200161069b929190614e88565b60405160208183030381529060405261145b565b60405162b9252f60e41b81529091506001600160a01b03861690630b9252f0906106df9030908590600401614f95565b5f604051808303815f87803b1580156106f6575f5ffd5b505af1158015610708573d5f5f3e3d5ffd5b50505f80546001600160a01b031916905550505050505050565b5f546001600160a01b03161561074b5760405163b5dfd9e560e01b815260040160405180910390fd5b604051630972932760e21b81526001600160a01b038c811660048301527f000000000000000000000000000000000000000000000000000000000000000016906325ca4c9c90602401602060405180830381865afa1580156107af573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d39190614fc7565b6107f057604051630ea8370b60e41b815260040160405180910390fd5b5f8b6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303815f875af115801561082e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108529190614d7a565b9050336001600160a01b0382161461087d576040516312272fd360e11b815260040160405180910390fd5b670de0b6b3a76400008a118061089a5750670de0b6b3a764000089115b806108ac5750670de0b6b3a764000088115b806108be5750670de0b6b3a764000087115b156108dc57604051632a9ffab760e21b815260040160405180910390fd5b8a60035f836001600160a01b03166001600160a01b031681526020019081526020015f205f8e6001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506040518060c001604052808b6001600160401b031681526020018a6001600160401b0316815260200161099b8a670de0b6b3a76400006109849190614ff4565b61099690670de0b6b3a7640000615007565b6117d7565b6001600160401b031681526020016109be6109848b670de0b6b3a764000061501e565b6001600160401b03168152602001886001600160401b03168152602001876001600160a01b031681525060015f8e6001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015f6101000a8154816001600160401b0302191690836001600160401b031602179055506020820151815f0160086101000a8154816001600160401b0302191690836001600160401b031602179055506040820151815f0160106101000a8154816001600160401b0302191690836001600160401b031602179055506060820151815f0160186101000a8154816001600160401b0302191690836001600160401b031602179055506080820151816001015f6101000a8154816001600160401b0302191690836001600160401b0316021790555060a08201518160010160086101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050828260025f8f6001600160a01b03166001600160a01b031681526020019081526020015f209182610b47929190615075565b50604051632f9c799b60e21b81526001600160a01b0387169063be71e66c90610b78908f908990899060040161512e565b5f604051808303815f87803b158015610b8f575f5ffd5b505af1158015610ba1573d5f5f3e3d5ffd5b50505050856001600160a01b03168b6001600160a01b03168d6001600160a01b03167f343ef5cc595144359c9db657cd7fcef6ecc88d06d17651a8292e553ab73b1c7060405160405180910390a4505050505050505050505050565b610c286040518060800160405280606081526020016060815260200160608152602001606081525090565b5f546001600160a01b03163314610c525760405163f3f6425d60e01b815260040160405180910390fd5b335f908152600160208181526040808420815160c08101835281546001600160401b038082168352600160401b808304821696840196909652600160801b8204811694830194909452600160c01b9004831660608201529301549081166080840152046001600160a01b031660a08201529080610cd1858701876151ca565b8051855160a0830151939550919350916001600160401b0391821691161180610d13575083602001516001600160401b03168260c001516001600160401b0316115b15610d3157604051632a9ffab760e21b815260040160405180910390fd5b5f610d498284602001516001600160601b031661187b565b90505f816101200151516001600160401b03811115610d6a57610d6a614bf7565b604051908082528060200260200182016040528015610d93578160200160208202803683370190505b50905083604001516001600160801b0316815f81518110610db657610db66152e6565b60200260200101818152505083606001516001600160801b031681600181518110610de357610de36152e6565b6020026020010181815250505f81516001600160401b03811115610e0957610e09614bf7565b604051908082528060200260200182016040528015610e32578160200160208202803683370190505b5090508660a001516001600160a01b031663c92d78a33386868961010001516040518563ffffffff1660e01b8152600401610e7094939291906153c1565b6040805180830381865afa158015610e8a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eae9190615417565b600290810b60a08601520b60c084015260808501515f90610ed29089908690611c96565b9050610ee3846101000151826112cc565b610f0057604051633a8bf65960e01b815260040160405180910390fd5b610f1a838387878a60a001516001600160401b0316611d5d565b610f25838686612339565b610f308386866124d6565b5f610fff89608001516001600160401b0316866040015162ffffff168960c001516001600160401b031688610100015186604001516001600160a01b031687606001516001600160a01b0316895f81518110610f8e57610f8e6152e6565b60200260200101518b5f81518110610fa857610fa86152e6565b6020026020010151610fba919061501e565b8a600181518110610fcd57610fcd6152e6565b60200260200101518c600181518110610fe857610fe86152e6565b6020026020010151610ffa919061501e565b61274f565b80519091501561103c578060200151835f81518110611020576110206152e6565b602002602001018181516110349190614ff4565b90525061106c565b806020015183600181518110611054576110546152e6565b602002602001018181516110689190614ff4565b9052505b61107a84848988858761285b565b61108385612968565b6001600160a01b0316610100860181905261109e90836112cc565b6110bb57604051633a8bf65960e01b815260040160405180910390fd5b5f5f825f015161112357845f815181106110d7576110d76152e6565b6020026020010151865f815181106110f1576110f16152e6565b6020026020010151611103919061501e565b86600181518110611116576111166152e6565b602002602001015161117d565b855f81518110611135576111356152e6565b602002602001015185600181518110611150576111506152e6565b60200260200101518760018151811061116b5761116b6152e6565b602002602001015161117d919061501e565b9150915061118e86898985856129d8565b82604001518760e001516001600160801b031610156111c05760405163bb55fd2760e01b815260040160405180910390fd5b6111cb868989612c45565b60a08b015160208a01516101008b015160405163bd6884a360e01b81526001600160a01b039093169263bd6884a39261120d9233928e92918e91600401615444565b5f604051808303815f87803b158015611224575f5ffd5b505af1158015611236573d5f5f3e3d5ffd5b505050505f6112488b88888c8c612d76565b90506112608989602001518a61012001518a8561301c565b6020808c01518a820151604080516001600160601b03909316835292820152919e506001600160a01b038b169133917ffea7a9a6e25cd0bbbfa80ce0c7646e61ee5e0551b3fdaaff0642e6f6adcc72e2910160405180910390a350505050505050505050505092915050565b80515f90831180156112e15750816020015183105b9392505050565b5f80806112f78486018661549c565b919450925090503361134c7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000868686613308565b6001600160a01b03161461137357604051634b60273560e01b815260040160405180910390fd5b5f8713156113945761138f6001600160a01b03841633896133d5565b6113b0565b5f8613156113b0576113b06001600160a01b03831633886133d5565b50505050505050565b60405163133f757160e31b8152600481018290525f9081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906399fbab889060240161018060405180830381865afa158015611421573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144591906154ef565b50979e969d50959b505050505050505050505050565b606060018415611473578061146f816155c5565b9150505b83156114875780611483816155c5565b9150505b5f816001600160401b038111156114a0576114a0614bf7565b6040519080825280602002602001820160405280156114c9578160200160208202803683370190505b5090505f826001600160401b038111156114e5576114e5614bf7565b60405190808252806020026020018201604052801561150e578160200160208202803683370190505b5090505f836001600160401b0381111561152a5761152a614bf7565b604051908082528060200260200182016040528015611553578160200160208202803683370190505b5090505f846001600160401b0381111561156f5761156f614bf7565b604051908082528060200260200182016040528015611598578160200160208202803683370190505b5090508c845f815181106115ae576115ae6152e6565b60200260200101906001600160a01b031690816001600160a01b0316815250508b835f815181106115e1576115e16152e6565b6020026020010181815250506001825f81518110611601576116016152e6565b6020026020010181815250506002815f81518110611621576116216152e6565b6020908102919091010152600189156116ac578b85600181518110611648576116486152e6565b60200260200101906001600160a01b031690816001600160a01b031681525050898360018151811061167c5761167c6152e6565b60200260200101818152505060018260018151811061169d5761169d6152e6565b60209081029190910101525060025b8815611725578a8582815181106116c5576116c56152e6565b60200260200101906001600160a01b031690816001600160a01b031681525050888382815181106116f8576116f86152e6565b6020026020010181815250506001828281518110611718576117186152e6565b6020026020010181815250505b5f604051806080016040528087815260200186815260200185815260200184815250905060606117766040518060800160405280606081526020016060815260200160608152602001606081525090565b6117986040518060600160405280606081526020015f81526020015f81525090565b838282858f6040516020016117b19594939291906155dd565b6040516020818303038152906040529a5050505050505050505050979650505050505050565b60b581600160881b81106117f05760409190911b9060801c5b6901000000000000000000811061180c5760209190911b9060401c5b6501000000000081106118245760109190911b9060201c5b6301000000811061183a5760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b60408051610140810182525f80825281830181905260608083018290526080830182905260a0830182905260c0830182905260e08301829052610100830182905261012083015260208201849052915163133f757160e31b81526004810184905290919081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906399fbab889060240161018060405180830381865afa158015611931573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061195591906154ef565b505050506001600160801b031660e08b0152600290810b60a08b015290810b60c08a01520b6060880152909450925050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811690861614806119f257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b80611a2e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b15611a5b576040805160028082526060820183529091602083019080368337505050610120840152611ad8565b604080516003808252608082019092529060208201606080368337505050610120840181905280517f000000000000000000000000000000000000000000000000000000000000000091906002908110611ab757611ab76152e6565b60200260200101906001600160a01b031690816001600160a01b0316815250505b818361012001515f81518110611af057611af06152e6565b60200260200101906001600160a01b031690816001600160a01b03168152505080836101200151600181518110611b2957611b296152e6565b60200260200101906001600160a01b031690816001600160a01b031681525050611b9a7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084848760600151613308565b6001600160a01b031680845260408051633850c7bd60e01b81529051633850c7bd9160048082019260c0929091908290030181865afa158015611bdf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c0391906156ad565b5050505060020b60808501526001600160a01b0390811661010085015283516040805163ddca3f4360e01b81529051919092169163ddca3f439160048083019260209291908290030181865afa158015611c5f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c839190615722565b62ffffff16604084015250909392505050565b604080516080810182525f8082526020820181905291810182905260608101919091526040518060800160405280611cee86606001516001600160401b0316670de0b6b3a7640000866134579092919063ffffffff16565b8152602001611d1d86604001516001600160401b0316670de0b6b3a7640000866134579092919063ffffffff16565b8152602001611d2f8560c00151613472565b6001600160a01b03168152602001611d4a8560a00151613472565b6001600160a01b03169052949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316146120f3576020820151604051630ae169a560e41b81525f916001600160a01b0386169163ae169a5091611dcb9160040190815260200190565b6020604051808303815f875af1158015611de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e0b9190615744565b90505f611e218284670de0b6b3a7640000613457565b90508651600303611f14578187600281518110611e4057611e406152e6565b6020026020010151611e529190614ff4565b8187600281518110611e6657611e666152e6565b6020026020010151611e789190614ff4565b88600281518110611e8b57611e8b6152e6565b6020026020010188600281518110611ea557611ea56152e6565b6020026020010182815250828152505050836101200151600281518110611ece57611ece6152e6565b60200260200101516001600160a01b0316336001600160a01b03165f516020615b565f395f51905f5284604051611f0791815260200190565b60405180910390a36120ec565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168461012001515f81518110611f5557611f556152e6565b60200260200101516001600160a01b0316036120085781875f81518110611f7e57611f7e6152e6565b6020026020010151611f909190614ff4565b81875f81518110611fa357611fa36152e6565b6020026020010151611fb59190614ff4565b885f81518110611fc757611fc76152e6565b60200260200101885f81518110611fe057611fe06152e6565b60200260200101828152508281525050508361012001515f81518110611ece57611ece6152e6565b818760018151811061201c5761201c6152e6565b602002602001015161202e9190614ff4565b8187600181518110612042576120426152e6565b60200260200101516120549190614ff4565b88600181518110612067576120676152e6565b6020026020010188600181518110612081576120816152e6565b60200260200101828152508281525050508361012001516001815181106120aa576120aa6152e6565b60200260200101516001600160a01b0316336001600160a01b03165f516020615b565f395f51905f52846040516120e391815260200190565b60405180910390a35b5050612332565b60408051608081018252602080850151825230908201526001600160801b038183018190526060820152905163fc6f786560e01b81525f9182916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163fc6f78659161216b919060040161575b565b60408051808303815f875af1158015612186573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121aa919061579e565b9150915081875f815181106121c1576121c16152e6565b602002602001018181516121d59190614ff4565b90525086518190889060019081106121ef576121ef6152e6565b602002602001018181516122039190614ff4565b9052506122198284670de0b6b3a7640000613457565b865f8151811061222b5761222b6152e6565b6020026020010181815161223f9190614ff4565b9052506122558184670de0b6b3a7640000613457565b86600181518110612268576122686152e6565b6020026020010181815161227c9190614ff4565b90525061012084015180515f90612295576122956152e6565b60200260200101516001600160a01b0316336001600160a01b03165f516020615b565f395f51905f52846040516122ce91815260200190565b60405180910390a38361012001516001815181106122ee576122ee6152e6565b60200260200101516001600160a01b0316336001600160a01b03165f516020615b565f395f51905f528360405161232791815260200190565b60405180910390a350505b5050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146124d1576020810151604051630852cd8d60e31b81525f916001600160a01b038516916342966c68916123a79160040190815260200190565b6020604051808303815f875af11580156123c3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123e79190615744565b905080156124cf57835160030361241d57808460028151811061240c5761240c6152e6565b6020026020010181815250506124cf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168261012001515f8151811061245e5761245e6152e6565b60200260200101516001600160a01b0316036124a35780845f81518110612487576124876152e6565b6020026020010181815161249b9190614ff4565b9052506124cf565b80846001815181106124b7576124b76152e6565b602002602001018181516124cb9190614ff4565b9052505b505b505050565b6040805160a081018252602083810151825260e08401516001600160801b039081169183019182525f8385018181526060850191825242608086019081529551630624e65f60e11b8152945160048601529251909116602484015290516044830152516064820152905160848201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630c49ccbe9060a40160408051808303815f875af1158015612594573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125b8919061579e565b505060408051608081018252602080840151825230908201526001600160801b038183018190526060820152905163fc6f786560e01b81525f9182916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163fc6f786591612632919060040161575b565b60408051808303815f875af115801561264d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612671919061579e565b9150915081855f81518110612688576126886152e6565b6020026020010181815161269c9190614ff4565b90525084518190869060019081106126b6576126b66152e6565b602002602001018181516126ca9190614ff4565b9052506020830151604051630852cd8d60e31b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c68906024015f604051808303815f87803b158015612732575f5ffd5b505af1158015612744573d5f5f3e3d5ffd5b505050505050505050565b61277e6040518060a001604052805f151581526020015f81526020015f81526020015f81526020015f81525090565b64e8d4a51000880287015f80806127998a8a8a8a8a8961372a565b9250925092505f5f6127e38c8c8c886127bb576127b6878e614ff4565b6127c5565b6127c5888e61501e565b896127d9576127d4898e61501e565b61384b565b6127d4888e614ff4565b6001600160801b0316905061280b8f670de0b6b3a7640000836134579092919063ffffffff16565b91505f9050612823848e670de0b6b3a7640000613457565b6040805160a08101825296151587526020870182905286019290925250909103606083015260808201529a9950505050505050505050565b606082015115612960578360e00151515f0361294d575f612929835f0151856040015162ffffff1661288c87613900565b876101000151866040015187606001518c5f815181106128ae576128ae6152e6565b60200260200101518e5f815181106128c8576128c86152e6565b60200260200101516128da919061501e565b8d6001815181106128ed576128ed6152e6565b60200260200101518f600181518110612908576129086152e6565b602002602001015161291a919061501e565b8b606001518c60800151613964565b9050805f036129385750612960565b6129478785855f015184613a2d565b50612960565b6129608684845f01518760e00151613c6e565b505050505050565b5f815f01516001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160c060405180830381865afa1580156129a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129cc91906156ad565b50939695505050505050565b612a347f0000000000000000000000000000000000000000000000000000000000000000838561012001515f81518110612a1457612a146152e6565b60200260200101516001600160a01b0316613f029092919063ffffffff16565b612a717f000000000000000000000000000000000000000000000000000000000000000082856101200151600181518110612a1457612a146152e6565b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b5007d1f6040518061018001604052808861012001515f81518110612ac557612ac56152e6565b60200260200101516001600160a01b03168152602001886101200151600181518110612af357612af36152e6565b60200260200101516001600160a01b03168152602001886060015160020b81526020018860c0015160020b81526020018860a0015160020b81526020018781526020018681526020015f81526020015f8152602001306001600160a01b031681526020014281526020015f6001600160a01b03168152506040518263ffffffff1660e01b8152600401612b8691906157c0565b6080604051808303815f875af1158015612ba2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bc691906158a2565b6001600160801b0390921660e0890152602088019290925288519193509150829088905f90612bf757612bf76152e6565b60200260200101818151612c0b919061501e565b9052508651819088906001908110612c2557612c256152e6565b60200260200101818151612c39919061501e565b90525050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146124d157602081015160405163095ea7b360e01b81526001600160a01b03848116600483015260248201929092527f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044015f604051808303815f87803b158015612ced575f5ffd5b505af1158015612cff573d5f5f3e3d5ffd5b505050602082015160405163140e25ad60e31b81526001600160a01b038516925063a0712d6891612d369160040190815260200190565b6020604051808303815f875af1158015612d52573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124cf9190615744565b602081015160405163095ea7b360e01b815233600482015260248101919091525f906001600160a01b0384169063095ea7b3906044015f604051808303815f87803b158015612dc3575f5ffd5b505af1158015612dd5573d5f5f3e3d5ffd5b505050505f600191505f5b8651811015613011578361012001518181518110612e0057612e006152e6565b60200260200101519150858181518110612e1c57612e1c6152e6565b6020026020010151878281518110612e3657612e366152e6565b60200260200101511115612ee957858181518110612e5657612e566152e6565b6020026020010151878281518110612e7057612e706152e6565b6020026020010151612e82919061501e565b878281518110612e9457612e946152e6565b602002602001018181525050612ed733888381518110612eb657612eb66152e6565b6020026020010151846001600160a01b0316613f029092919063ffffffff16565b82612ee1816155c5565b935050612f41565b868181518110612efb57612efb6152e6565b6020026020010151868281518110612f1557612f156152e6565b6020026020010181815250505f878281518110612f3457612f346152e6565b6020026020010181815250505b5f868281518110612f5457612f546152e6565b60200260200101511115612f9957612f9988878381518110612f7857612f786152e6565b6020026020010151846001600160a01b03166133d59092919063ffffffff16565b816001600160a01b0316886001600160a01b0316336001600160a01b03167f1b37fcc57f4b6029ca7b3a70af0104811f67c72fe73e8043575f03a01e056631898581518110612fea57612fea6152e6565b602002602001015160405161300191815260200190565b60405180910390a4600101612de0565b505095945050505050565b6130476040518060800160405280606081526020016060815260200160608152602001606081525090565b5f826001600160401b0381111561306057613060614bf7565b604051908082528060200260200182016040528015613089578160200160208202803683370190505b5090505f836001600160401b038111156130a5576130a5614bf7565b6040519080825280602002602001820160405280156130ce578160200160208202803683370190505b5090505f846001600160401b038111156130ea576130ea614bf7565b604051908082528060200260200182016040528015613113578160200160208202803683370190505b5090505f856001600160401b0381111561312f5761312f614bf7565b604051908082528060200260200182016040528015613158578160200160208202803683370190505b50905089845f8151811061316e5761316e6152e6565b60200260200101906001600160a01b031690816001600160a01b03168152505088835f815181106131a1576131a16152e6565b6020026020010181815250506001825f815181106131c1576131c16152e6565b6020026020010181815250506002815f815181106131e1576131e16152e6565b60200260200101818152505060018611156132e05760015f5b88518110156132dd575f898281518110613216576132166152e6565b602002602001015111156132d557898181518110613236576132366152e6565b6020026020010151868381518110613250576132506152e6565b60200260200101906001600160a01b031690816001600160a01b031681525050888181518110613282576132826152e6565b602002602001015184838151811061329c5761329c6152e6565b60200260200101818152505060018383815181106132bc576132bc6152e6565b6020908102919091010152816132d1816155c5565b9250505b6001016131fa565b50505b6040805160808101825294855260208501939093529183015260608201529695505050505050565b5f826001600160a01b0316846001600160a01b031610613326575f5ffd5b604080516001600160a01b038087166020830152851691810191909152600283900b60608201526133cb9087906080016040516020818303038152906040528051906020012087604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b8152606093841b60148201526f5af43d82803e903d91602b57fd5bf3ff60801b6028820152921b6038830152604c8201526037808220606c830152605591012090565b9695505050505050565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f5114161716915050806124cf5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064015b60405180910390fd5b5f825f19048411830215820261346b575f5ffd5b5091020490565b60020b5f60ff82901d80830118620d89e881111561349b5761349b6345c3193d60e11b84613f77565b7001fffcb933bd6fad37aa2d162d1a5940016001821602600160801b1860028216156134d7576ffff97272373d413259a46990580e213a0260801c5b60048216156134f6576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613515576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613534576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613553576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613572576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613591576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156135b1576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156135d1576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156135f1576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613611576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613631576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613651576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613671576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613691576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156136b2576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156136d2576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156136f1576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561370e576b048a170391f7dc42444e8fa20260801c5b5f84131561371a575f19045b63ffffffff0160201c9392505050565b5f5f5f86891061374f57600192508591506137488960018887613f86565b905061383f565b87891161376557849150613748895f8787613f86565b5f6137718a8a8a613fe2565b90505f6137808b60018a61402a565b90505f61378d8289614ff4565b90505f6137a389670de0b6b3a764000084613457565b9050838110156137f857600196505f6137c8858a670de0b6b3a7640000819003613457565b670de0b6b3a76400000190506137e18286038483613457565b9550506137f18d6001878b61407e565b955061383a565b5f96508661380f858a670de0b6b3a7640000613457565b670de0b6b3a76400000390506138288583038483613457565b9650506138378d5f888b613f86565b94505b505050505b96509650969350505050565b5f836001600160a01b0316856001600160a01b0316111561386a579293925b846001600160a01b0316866001600160a01b03161161389d576138966138918686866140d8565b614131565b9050610483565b836001600160a01b0316866001600160a01b031610156138f2575f6138c38786866140d8565b90505f6138d187898661414b565b90506138e98183106138e35781614131565b82614131565b92505050610483565b6133cb61389186868561414b565b5f815f01516001600160a01b0316631a6865026040518163ffffffff1660e01b8152600401602060405180830381865afa158015613940573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047491906158de565b5f8080805b6064811015613a18576139808e8e8e8e8a8a614184565b9250886001600160a01b0316836001600160a01b0316106139b1576139a78d8d8d8b61422d565b9350505050613a1f565b896001600160a01b0316836001600160a01b0316116139d6576139a78d8d8d8a614269565b6139e38e8e8e8e8761429a565b90965094506139f88e8b8b8b8b8b8b8a614314565b909750955091508115613a1057849350505050613a1f565b600101613969565b5083925050505b9a9950505050505050505050565b82515f9081906001600160a01b031663128acb083086613a4c876158f9565b88613a7557613a70600173fffd8963efd1fc6a506488495d951d5263988d26615913565b613a85565b613a856401000276a36001615932565b8a61012001515f81518110613a9c57613a9c6152e6565b60200260200101518b6101200151600181518110613abc57613abc6152e6565b60200260200101518c60600151604051602001613afd939291906001600160a01b03938416815291909216602082015260029190910b604082015260600190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401613b2c959493929190615951565b60408051808303815f875af1158015613b47573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b6b919061579e565b9150915083613ba657613b7d826158f9565b865f81518110613b8f57613b8f6152e6565b6020026020010151613ba19190614ff4565b613bcb565b81865f81518110613bb957613bb96152e6565b6020026020010151613bcb919061501e565b865f81518110613bdd57613bdd6152e6565b60200260200101818152505083613c19578086600181518110613c0257613c026152e6565b6020026020010151613c14919061501e565b613c47565b613c22816158f9565b86600181518110613c3557613c356152e6565b6020026020010151613c479190614ff4565b86600181518110613c5a57613c5a6152e6565b602002602001018181525050505050505050565b5f5f5f83806020019051810190613c85919061598b565b335f90815260016020819052604090912001549295509093509150600160401b90046001600160a01b0390811690841603613cd35760405163466d7fef60e01b815260040160405180910390fd5b613d29838387613d0257886101200151600181518110613cf557613cf56152e6565b6020026020010151613d19565b8861012001515f81518110612a1457612a146152e6565b6001600160a01b03169190613f02565b5f5f846001600160a01b031683604051613d439190615a1b565b5f604051808303815f865af19150503d805f8114613d7c576040519150601f19603f3d011682016040523d82523d5f602084013e613d81565b606091505b5091509150818190613da65760405162461bcd60e51b815260040161344e91906148c8565b508761012001515f81518110613dbe57613dbe6152e6565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613e0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e309190615744565b895f81518110613e4257613e426152e6565b602002602001018181525050876101200151600181518110613e6657613e666152e6565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613eb4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ed89190615744565b89600181518110613eeb57613eeb6152e6565b602002602001018181525050505050505050505050565b816014528060345263095ea7b360601b5f5260205f604460105f875af13d1560015f51141716613f6e575f60345263095ea7b360601b5f525f38604460105f875af1508060345260205f604460105f875af13d1560015f51141716613f6e57633e3f8f735f526004601cfd5b5f603452505050565b815f528060020b60045260245ffd5b5f6001600160801b03851115613f9a575f5ffd5b5f613fb2670de0b6b3a7640000848103908690613457565b905084613fd057613fcb81600160c01b6002890a614479565b6133cb565b6133cb816002880a600160c01b614479565b5f6001600160801b03841115613ff6575f5ffd5b8284035f836002870a8161400c5761400c615a31565b04600287028690030390506133cb82670de0b6b3a764000083613457565b5f8261405857614053826140436002600160601b615b28565b61404e600288615b28565b614479565b614076565b61407682614067600287615b28565b61404e6002600160601b615b28565b949350505050565b5f6001600160801b03851115614092575f5ffd5b5f846140af576140aa846002880a600160c01b614479565b6140c1565b6140c184600160c01b6002890a614479565b90506133cb81670de0b6b3a7640000858103613457565b5f826001600160a01b0316846001600160a01b031611156140f7579192915b5f614119856001600160a01b0316856001600160a01b0316600160601b614479565b905061048383828787036001600160a01b0316614479565b806001600160801b0381168114614146575f5ffd5b919050565b5f826001600160a01b0316846001600160a01b0316111561416a579192915b61407682600160601b8686036001600160a01b0316614479565b5f8061419784620f424089810390613457565b90505f5f89156141d5576141ae8789856001614515565b6001600160a01b031691506141c58789875f614604565b6001600160a01b03169050614205565b6141e18789875f614515565b6001600160a01b031691506141f98789856001614604565b6001600160a01b031690505b896142225761421d8183016002808206151591040190565b613a1f565b600282820104613a1f565b5f8061424083620f4240888103906146e2565b90505f6142508587846001614515565b905061425e8186885f614705565b979650505050505050565b5f8061427c83620f4240888103906146e2565b90505f61428c8587846001614604565b905061425e8582885f614751565b5f5f86156142d8575f6142b08486886001614751565b90506142c281620f42408981036146e2565b92506142d08486885f614705565b91505061430a565b5f6142e68585886001614705565b90506142f881620f42408981036146e2565b92506143068585885f614751565b9150505b9550959350505050565b5f5f5f5f5f8c1561434f57614339868c8a8d11614331575f6140d8565b8a8d036140d8565b91506143488c87898c0161414b565b905061437b565b61435c868c898d016140d8565b91506143788c878a8c11614370575f61414b565b8a8c0361414b565b90505b5f81831061439b5761439682670de0b6b3a764000085613457565b6143ae565b6143ae83670de0b6b3a764000084613457565b670de0b6b3a7640000039050620f4240811082841015614418575f6143de8f8a6143d788614131565b6001614705565b90508f6143f057808c039a508a614411565b8b8111614409576144048a6009600a613457565b61440d565b8b81035b9950895b5050614464565b5f61442e898f61442787614131565b6001614751565b90508f61445a578c811161444e576144498a6009600a613457565b614452565b8c81035b995089614461565b808d039a508a5b50505b9e989d50969b50969950505050505050505050565b5f838302815f1985870982811083820303915050808411614498575f5ffd5b805f036144aa575082900490506112e1565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f825f03614524575083614076565b600160601b600160e01b03606085901b1682156145be576001600160a01b0386168481029085828161455857614558615a31565b0403614588578181018281106145865761457c83896001600160a01b031683614809565b9350505050614076565b505b506145b681856145a16001600160a01b038a1683615b36565b6145ab9190614ff4565b808204910615150190565b915050614076565b6001600160a01b0386168481029085820414818311166145e55763f5c787f15f526004601cfd5b80820361457c6145ff846001600160a01b038b1684614809565b614839565b5f8115614667575f6001600160a01b038411156146385761463384600160601b876001600160801b0316614479565b61464f565b61464f6001600160801b038616606086901b615b36565b90506145b66145ff826001600160a01b038916614ff4565b5f6001600160a01b038411156146945761468f84600160601b876001600160801b0316614809565b6146b1565b6146b1606085901b6001600160801b038716808204910615150190565b9050806001600160a01b038716116146d057634323a5555f526004601cfd5b6001600160a01b038616039050614076565b5f825f1904841183021582026146f6575f5ffd5b50910281810615159190040190565b5f6001600160a01b038481169086160360ff81901d90810118600160601b6001600160801b038516614738818484614479565b9350845f83858409111684019350505050949350505050565b5f836001600160a01b0316856001600160a01b03161115614770579293925b6001600160a01b03851661478a5762bfc9215f526004601cfd5b600160601b600160e01b03606084901b166001600160a01b0386860316836147dd57866001600160a01b03166147ca8383896001600160a01b0316614479565b816147d7576147d7615a31565b0461425e565b61425e6147f48383896001600160a01b0316614809565b886001600160a01b0316808204910615150190565b5f614815848484614479565b9050818061482557614825615a31565b838509156112e157600101806112e1575f5ffd5b806001600160a01b0381168114614146576141466393dafdf160e01b805f5260045ffd5b6001600160a01b0381168114614871575f5ffd5b50565b80356141468161485d565b5f6020828403121561488f575f5ffd5b81356112e18161485d565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112e1602083018461489a565b5f5f604083850312156148eb575f5ffd5b82356148f68161485d565b915060208301356149068161485d565b809150509250929050565b5f5f83601f840112614921575f5ffd5b5081356001600160401b03811115614937575f5ffd5b60208301915083602082850101111561494e575f5ffd5b9250929050565b5f5f5f5f5f60808688031215614969575f5ffd5b85356149748161485d565b945060208601356149848161485d565b93506040860135925060608601356001600160401b038111156149a5575f5ffd5b6149b188828901614911565b969995985093965092949392505050565b5f5f604083850312156149d3575f5ffd5b82356149de8161485d565b915060208301356001600160401b038111156149f8575f5ffd5b83016101208186031215614906575f5ffd5b5f5f5f5f5f5f5f5f5f5f5f6101208c8e031215614a25575f5ffd5b8b35614a308161485d565b9a50614a3e60208d01614874565b995060408c0135985060608c0135975060808c0135965060a08c01359550614a6860c08d01614874565b945060e08c01356001600160401b03811115614a82575f5ffd5b614a8e8e828f01614911565b9095509350506101008c01356001600160401b03811115614aad575f5ffd5b614ab98e828f01614911565b915080935050809150509295989b509295989b9093969950565b5f5f60208385031215614ae4575f5ffd5b82356001600160401b03811115614af9575f5ffd5b614b0585828601614911565b90969095509350505050565b5f8151808452602084019350602083015f5b82811015614b4a5781516001600160a01b0316865260209586019590910190600101614b23565b5093949350505050565b5f8151808452602084019350602083015f5b82811015614b4a578151865260209586019590910190600101614b66565b5f815160808452614b986080850182614b11565b905060208301518482036020860152614bb18282614b54565b91505060408301518482036040860152614bcb8282614b54565b915050606083015184820360608601526104838282614b54565b602081525f6112e16020830184614b84565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715614c2e57614c2e614bf7565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614c5c57614c5c614bf7565b604052919050565b5f5f82840360a0811215614c76575f5ffd5b833592506080601f1982011215614c8b575f5ffd5b50604051608081016001600160401b0381118282101715614cae57614cae614bf7565b6040908152602085810135835290850135908201526060840135614cd18161485d565b60408201526080840135614ce48161485d565b6060820152919491935090915050565b5f5f5f5f60608587031215614d07575f5ffd5b843593506020850135925060408501356001600160401b03811115614d2a575f5ffd5b614d3687828801614911565b95989497509550505050565b600181811c90821680614d5657607f821691505b602082108103614d7457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215614d8a575f5ffd5b81516112e18161485d565b6001600160801b0381168114614871575f5ffd5b803561414681614d95565b5f60208284031215614dc4575f5ffd5b81356112e181614d95565b6001600160601b0381168114614871575f5ffd5b803561414681614dcf565b5f60208284031215614dfe575f5ffd5b81356112e181614dcf565b80356001600160401b0381168114614146575f5ffd5b5f5f8335601e19843603018112614e34575f5ffd5b83016020810192503590506001600160401b03811115614e52575f5ffd5b80360382131561494e575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b0383168152604060208201819052614eb9908201614eac84614874565b6001600160a01b03169052565b5f614ec660208401614de3565b6001600160601b03166060830152614ee060408401614da9565b6001600160801b03166080830152614efa60608401614da9565b6001600160801b03811660a084015250608083013560c0830152614f2060a08401614e09565b6001600160401b031660e0830152614f3a60c08401614e09565b6001600160401b0316610100830152614f5660e0840184614e1f565b61012080850152614f6c61016085018284614e60565b915050614f7d610100850185614e1f565b848303603f190161014086015261425e838284614e60565b6001600160a01b03831681526040602082018190525f906140769083018461489a565b80518015158114614146575f5ffd5b5f60208284031215614fd7575f5ffd5b6112e182614fb8565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561047457610474614fe0565b808202811582820484141761047457610474614fe0565b8181038181111561047457610474614fe0565b601f8211156124d157805f5260205f20601f840160051c810160208510156150565750805b601f840160051c820191505b81811015612332575f8155600101615062565b6001600160401b0383111561508c5761508c614bf7565b6150a08361509a8354614d42565b83615031565b5f601f8411600181146150d1575f85156150ba5750838201355b5f19600387901b1c1916600186901b178355612332565b5f83815260208120601f198716915b8281101561510057868501358255602094850194600190920191016150e0565b508682101561511c575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190525f906104839083018486614e60565b5f6001600160401b0382111561516a5761516a614bf7565b50601f01601f191660200190565b5f82601f830112615187575f5ffd5b813561519a61519582615152565b614c34565b8181528460208386010111156151ae575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156151db575f5ffd5b82356151e68161485d565b915060208301356001600160401b03811115615200575f5ffd5b83016101208186031215615212575f5ffd5b61521a614c0b565b61522382614874565b815261523160208301614de3565b602082015261524260408301614da9565b604082015261525360608301614da9565b60608201526080828101359082015261526e60a08301614e09565b60a082015261527f60c08301614e09565b60c082015260e08201356001600160401b0381111561529c575f5ffd5b6152a887828501615178565b60e0830152506101008201356001600160401b038111156152c7575f5ffd5b6152d387828501615178565b6101008301525080925050509250929050565b634e487b7160e01b5f52603260045260245ffd5b80516001600160a01b03168252602081015160208301525f6040820151615328604085018262ffffff169052565b50606082015161533d606085018260020b9052565b506080820151615352608085018260020b9052565b5060a082015161536760a085018260020b9052565b5060c082015161537c60c085018260020b9052565b5060e082015161539760e08501826001600160801b03169052565b50610100820151610100840152610120820151610140610120850152614076610140850182614b11565b6001600160a01b038581168252841660208201526080604082018190525f906153ec908301856152fa565b828103606084015261425e818561489a565b8060020b8114614871575f5ffd5b8051614146816153fe565b5f5f60408385031215615428575f5ffd5b8251615433816153fe565b6020840151909250614906816153fe565b6001600160a01b038681168252851660208201526001600160601b038416604082015260a0606082018190525f9061547e908301856152fa565b8281036080840152615490818561489a565b98975050505050505050565b5f5f5f606084860312156154ae575f5ffd5b83356154b98161485d565b925060208401356154c98161485d565b915060408401356154d9816153fe565b809150509250925092565b805161414681614d95565b5f5f5f5f5f5f5f5f5f5f5f5f6101808d8f03121561550b575f5ffd5b8c5161551681614dcf565b60208e0151909c506155278161485d565b60408e0151909b506155388161485d565b60608e0151909a506155498161485d565b60808e015190995061555a816153fe565b975061556860a08e0161540c565b965061557660c08e0161540c565b955061558460e08e016154e4565b6101008e01516101208f0151919650945092506155a46101408e016154e4565b91506155b36101608e016154e4565b90509295989b509295989b509295989b565b5f600182016155d6576155d6614fe0565b5060010190565b60a081525f6155ef60a0830188614b84565b82810360208401526156018188614b84565b8381036040850152865160608083528151908301819052919250602001905f9060808401905b8083101561565e57835180516001600160a01b03168352602090810151818401529093019260019290920191604090910190615627565b5060208901516020850152604089015160408501528581036060870152615685818961489a565b93505050508281036080840152615490818561489a565b805161ffff81168114614146575f5ffd5b5f5f5f5f5f5f60c087890312156156c2575f5ffd5b86516156cd8161485d565b60208801519096506156de816153fe565b94506156ec6040880161569c565b93506156fa6060880161569c565b92506157086080880161569c565b915061571660a08801614fb8565b90509295509295509295565b5f60208284031215615732575f5ffd5b815162ffffff811681146112e1575f5ffd5b5f60208284031215615754575f5ffd5b5051919050565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b5f5f604083850312156157af575f5ffd5b505080516020909101519092909150565b81516001600160a01b03168152610180810160208301516157ec60208401826001600160a01b03169052565b506040830151615801604084018260020b9052565b506060830151615816606084018260020b9052565b50608083015161582b608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e08301526101008301516101008301526101208301516158726101208401826001600160a01b03169052565b5061014083015161014083015261016083015161589b6101608401826001600160a01b03169052565b5092915050565b5f5f5f5f608085870312156158b5575f5ffd5b845160208601519094506158c881614d95565b6040860151606090960151949790965092505050565b5f602082840312156158ee575f5ffd5b81516112e181614d95565b5f600160ff1b820161590d5761590d614fe0565b505f0390565b6001600160a01b03828116828216039081111561047457610474614fe0565b6001600160a01b03818116838216019081111561047457610474614fe0565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a0608082018190525f9061425e9083018461489a565b5f5f5f6060848603121561599d575f5ffd5b83516159a88161485d565b6020850151604086015191945092506001600160401b038111156159ca575f5ffd5b8401601f810186136159da575f5ffd5b80516159e861519582615152565b8181528760208385010111156159fc575f5ffd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52601260045260245ffd5b6001815b6001841115615a8057808504811115615a6457615a64614fe0565b6001841615615a7257908102905b60019390931c928002615a49565b935093915050565b5f82615a9657506001610474565b81615aa257505f610474565b8160018114615ab85760028114615ac257615ade565b6001915050610474565b60ff841115615ad357615ad3614fe0565b50506001821b610474565b5060208310610133831016604e8410600b8410161715615b01575081810a610474565b615b0d5f198484615a45565b805f1904821115615b2057615b20614fe0565b029392505050565b5f6112e160ff841683615a88565b5f82615b5057634e487b7160e01b5f52601260045260245ffd5b50049056fef3055bc8d92d9c8d2f12b45d112dd345cd2cfd17292b8d65c5642ac6f912dfd7a2646970667358221220312ae28bd436a0a43328e49dffbb98f7b3295c4569590a824fa408cd95bc684064736f6c634300081b0033000000000000000000000000da14fdd72345c4d2511357214c5b89a919768e59000000000000000000000000827922686190790b37229fd06084350e74485b720000000000000000000000005e7bb104d84c7cb9b682aac2f3d509f5f406809a000000000000000000000000ec8e5342b19977b4ef8892e02d8daecfa1315831000000000000000000000000940181a94a35a4569e4529a3cdfb74e38fd986310000000000000000000000001dc7a0f5336f52724b650e39174cfcbbedd67bf1000000000000000000000000d74339e0f10fce96894916b93e5cc7de89c98272