1k txs
2.9k calls
constructor
constructor(address owner_, address arcadiaFactory, address routerTrampoline, address positionManager, address uniswapV3Factory)
functions
accountInfo
viewfunction accountInfo(address account) view returns (uint64 maxClaimFee, uint64 maxSwapFee, uint64 upperSqrtPriceDeviation, uint64 lowerSqrtPriceDeviation, uint64 minLiquidityRatio, address strategyHook)
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_)
executeAction
nonpayablefunction executeAction(bytes actionTargetData) returns (tuple depositData)
pause
nonpayablefunction pause()
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_)
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, address indexed strategyHook)
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)
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()
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
0x6101003461016e57601f614c8238819003918201601f19168301916001600160401b038311848410176101725780849260a09460405283398101031261016e5761004881610186565b61005460208301610186565b9161006160408201610186565b610079608061007260608501610186565b9301610186565b5f80546001600160a01b0319166001600160a01b039095169485178155604051959194907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36001600160a01b0390811660805290811660a0521660c05260e052614ae7908161019b8239608051818181611eb5015261212a015260a0518181816102a601526139fa015260c0518181816106d501528181610aca01528181610ce201528181610d3501528181610dae01528181610dfc015281816111440152818161118c015281816113100152818161272a01528181612c1a0152612de3015260e05181818161017601526107c00152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361016e5756fe610180806040526004361015610013575f80fd5b5f610160525f3560e01c9081630686ddd914612e17575080630a73e39114612dc35780631204f52514612d70578063150b7a0214612d1a5780632cacb5fa1461264e5780632e7df0391461205f5780632fcb4f0414611fe1578063452a932014611fb65780635c975abb14611f8c5780638456cb5914611ee45780638cffa27714611e9d5780638da5cb5b14611e705780638da92e7114611deb578063a129568d146103ed578063a7310b5814610354578063a89d6dd4146102d5578063b699b82b1461028e578063f2fde38b1461020d5763fa461e33146100f3575f80fd5b34610206576060366003190112610206576024356004356044356001600160401b0381116102065761012b6060913690600401613003565b90809291810103126102065761014081612f21565b92604061014f60208401612f21565b9201359362ffffff85168503610206576001600160a01b039283169492169161019a9085847f0000000000000000000000000000000000000000000000000000000000000000613b45565b336001600160a01b03909116036101f157610160518313156101ca57506101c392503390613c0a565b6101605180f35b9150506101605181136101df575b50506101c3565b6101ea913390613c0a565b5f806101d8565b634b60273560e01b6101605152600461016051fd5b6101605180fd5b3461020657602036600319011261020657610226612ef5565b610160515490610240336001600160a01b0384161461320e565b60018060a01b031680916001600160601b0360a01b16176101605155337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e06101605161016051a36101605180f35b346102065761016051366003190112610206576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102065760a0366003190112610206576080366023190112610206576040516102fe81612f6d565b602435815260443560208201526064356001600160a01b03811681036102065760408201526084356001600160a01b0381168103610206578161034a91606060209401526004356133fe565b6040519015158152f35b34610206576020366003190112610206576001600160a01b03610375612ef5565b166101605152600360205260c06040610160512060018154910154604051916001600160401b03811683526001600160401b038160401c1660208401526001600160401b038160801c166040840152831c60608301526001600160401b038116608083015260018060a01b039060401c1660a0820152f35b34610206576020366003190112610206576004356001600160401b0381116102065761041d903690600401613003565b610425613249565b506002546001600160a01b03163303611dd657336101605152600360205260406101605120906040519061045882612f88565b60018354936001600160401b038516845260208401946001600160401b038160401c1686526001600160401b038160801c16604086015260c01c606085015201546001600160401b038116608084015260018060a01b039060401c1660a0830152830192604081850312610206576104cf81612f21565b610140526020810135906001600160401b038211610206570161012081850312610206576040519061012082018281106001600160401b038211176118375760405261051a81612f21565b825261052860208201613146565b946020830195865261053c6040830161315a565b604084015261054d6060830161315a565b60608401526080820135608084015261056860a0830161316e565b60a084015261057960c0830161316e565b60c084015260e08201356001600160401b038111610206578161059d918401613288565b60e08401526101008201356001600160401b038111610206576105c09201613288565b61010082015260018060a01b03815116926001600160401b0360a0830151166001600160401b0384511610908115611dbb575b50611da6576001600160601b038451169160405192836101408101106001600160401b03610140860111176118375761014084016040526101605184526101605160208501526101605160408501526101605160608501526101605160808501526101605160a08501526101605160c08501526101605160e08501526101605161010085015260606101208501525f608052606060805260405161069960805182612fbe565b60028152608051601f19013660208301376101208501526020840181905260405163133f757160e31b81526004810191909152610180816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156117a057610160519081908190819081908190611d59575b61076c9596509062ffffff92916001600160801b036101208c0151961660e08c015260020b60a08b015260020b60c08a015216604088015261075a82613338565b6001600160a01b039091169052613317565b6001600160a01b03918216905261012084015160049160e09161078e90613317565b51166107e460018060a01b036107a8610120890151613338565b51169160018060a01b039262ffffff60408a015116917f0000000000000000000000000000000000000000000000000000000000000000613b45565b1680865260405192838092633850c7bd851b82525afa80156117a05761016051918291611d33575b5060020b60808501526001600160a01b0390811661010085015283516040516334324e9f60e21b81529160209183916004918391165afa9081156117a0576101605191611cf9575b5060020b606084015261086c610120840151516132e5565b610100526001600160801b0360408301511661088a61010051613317565b526001600160801b036060830151166108a561010051613338565b526108b361010051516132e5565b61012052610913604060018060a01b0360a084015116610100850151908251808095819463c92d78a360e01b83523360048401528b602484015260806044840152610901608484018c61336a565b83810360031901606485015290612fdf565b03915afa80156117a05761016051918291611cb2575b5060020b60a085015260020b60c0840152608082015160405161094b81612f6d565b610160518152610160516020820152610160516040820152610160519060805101526001600160401b0360608301511690815f19048111820215670de0b6b3a76400000215610206576001600160401b03604084015116805f19048211810215670de0b6b3a7640000021561020657670de0b6b3a76400006109d360c088015160020b613c9c565b916109e460a089015160020b613c9c565b9382604051966109f388612f6d565b8202048652020460208401526001600160a01b039081166040840152608051911690820152610100840151610a299082906133fe565b15611872576001600160401b0360a084015116610abb60406020870151815190610a5282612f6d565b815230602082019081526001600160801b038383018190526080518301819052835163fc6f786560e01b81528351600482015291516001600160a01b03166024830152604083015181166044830152606090920151909116606482015291829081906084820190565b03816101605160018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19182156117a05761016051916101605193611c8f575b50610b1982610b1361010051613317565b516131e0565b610b2561010051613317565b52610b3683610b1361010051613338565b610b4261010051613338565b52805f19048211810215670de0b6b3a7640000021561020657610b77670de0b6b3a764000082840204610b1361012051613317565b610b8361012051613317565b52805f19048311810215670de0b6b3a7640000021561020657670de0b6b3a7640000610bb891840204610b1361012051613338565b610bc461012051613338565b526101208601516001600160a01b0390610bdd90613317565b5116906040519081527ff3055bc8d92d9c8d2f12b45d112dd345cd2cfd17292b8d65c5642ac6f912dfd760203392a36101208501516001600160a01b0390610c2490613338565b5116906040519081527ff3055bc8d92d9c8d2f12b45d112dd345cd2cfd17292b8d65c5642ac6f912dfd760203392a360208401516001600160801b0360e08601511660405191610c7383612fa3565b825260208201908152604082016101605181526080518301906101605182526001600160801b03608085019342855260405195630624e65f60e11b87525160048701525116602485015251604484015251606483015251608482015260408160a4816101605160018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156117a057611c71575b50610d2660406020860151815190610a5282612f6d565b03816101605160018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156117a057610d9a9161016051906101605192611c3d575b50610d8190610b1361010051613317565b610d8d61010051613317565b52610b1361010051613338565b610da661010051613338565b5260208401517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561020657604051630852cd8d60e31b815260048101919091526101605181602481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156117a057611c22575b506001600160401b0360808301511662ffffff604086015116916001600160401b0360c08601511660e0526101008601519260018060a01b0360408301511660c05260018060a01b0360805183015116610ea4610e9061010051613317565b51610e9d61012051613317565b5190613201565b90610ec1610eb461010051613338565b51610e9d61012051613338565b60a052604051610ed081612fa3565b61016080518252805160208301528051604083015280516080805184019190915281519201919091525181871061197f5750600191809361016051506001600160801b03881161020657815f190464e8d4a51000820260e05101670de0b6b3a76400000311820215670de0b6b3a7640000021561020657610f7790610f5361453a565b90670de0b6b3a76400008464e8d4a5100060028d0a930260e0510182030204614722565b965b6001600160a01b0316908488851561196e5750610f9591613201565b905b831561195d57610fa98860a0516131e0565b60c05193918280861161194f575b506001600160a01b03851681116118f0575050610fd392614608565b6001600160801b0381169081036118ec57945b845f19046001600160801b03871611850215670de0b6b3a764000002156102065760e0515f1904831160e0510215670de0b6b3a7640000021561020657670de0b6b3a76400006004956001600160801b03604051986110448a612fa3565b8515158a528360e05188020460208b01521602046040870152670de0b6b3a764000060e0518402048303608051870152608086015215155f146118bc57506110966020840151610b1361012051613317565b6110a261012051613317565b525b6110b8818488886101205161010051613636565b8551604051633850c7bd60e01b81529260e09184919082906001600160a01b03165afa80156117a057611106926101605191611887575b506001600160a01b031661010087018190526133fe565b15611872578051156118515761111e61010051613317565b5161112e610eb461010051613338565b6101208601516111769083906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169161116f90613317565b51166143f6565b6101208601516111b79082906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169161116f90613338565b6101208601516001600160a01b03906111cf90613317565b51169160018060a01b036111e7610120890151613338565b51169162ffffff6040890151169160c089015160020b9160a08a015160020b9160405196876101608101106001600160401b036101608a0111176118375761016088016040528752602087019586526040870194855260805187019384526080870192835260a0870190815260c0870191825260e087019261016051845261010088019461016051865262ffffff6101208a01973089526101408b0199428b526040519b634418b22b60e11b8d5260018060a01b0390511660048d015260018060a01b0390511660248c0152511660448a01525160020b60648901525160020b60848801525160a48701525160c48601525160e48501525161010484015260018060a01b0390511661012483015251610144820152608081610164816101605160018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156117a05761016051918291829182916117de575b5092611377916001600160801b03611390951660e08a0152602089015261137161010051613317565b51613201565b61138361010051613317565b5261137161010051613338565b61139c61010051613338565b5260406001600160801b0360e086015116910151116117c95760a001518451610100909201516001600160a01b0391909116916001600160601b0316823b156102065760405192839163bd6884a360e01b8352336004840152866024840152604483015260a06064830152818061142f61141960a483018961336a565b8281036003190160848401526101605196612fdf565b039161016051905af180156117a0576117ae575b506020810151823b156102065760405163095ea7b360e01b81523360048201526024810191909152610160518160448183875af180156117a057611785575b5061016051600191905b61010051518110156115e7576101208201516001600160a01b03906114b2908390613348565b5116926114c28261010051613348565b516114d08361012051613348565b5110156115af57906115276001926114fc6114ee8461010051613348565b51610e9d8561012051613348565b6115098461010051613348565b5261152261151a8461010051613348565b5133886143f6565b6134d3565b935b6115368261012051613348565b51611588575b6115498261012051613348565b51604051908152838060a01b036101405116907f1b37fcc57f4b6029ca7b3a70af0104811f67c72fe73e8043575f03a01e05663160203392a40161148c565b6115aa6115988361012051613348565b51848060a01b03610140511683613c0a565b61153c565b92906001916115c18261010051613348565b516115cf8361012051613348565b52610160516115e18361010051613348565b52611529565b5091909160208101519361012082015194611600613249565b5061160a856132e5565b94611614816132e5565b966001611620836132e5565b9261162a816132e5565b94886116358b613317565b5261163f8b613317565b528161164a85613317565b52600261165686613317565b52116116db575b50916001600160601b03916020936116d7986040519861167c8a612f6d565b8952858901526040880152608051870152511691015160405191825260208201527ffea7a9a6e25cd0bbbfa80ce0c7646e61ee5e0551b3fdaaff0642e6f6adcc72e260403392a360405191829160208352602083019061309f565b0390f35b90929591946001946101605150610160515b610100515181101561176d576117068161010051613348565b51611714575b6001016116ed565b95600190611765906001600160a01b0361172e8a88613348565b511661173a8289613348565b526117488961010051613348565b51611753828a613348565b528261175f828c613348565b526134d3565b96905061170c565b50929690959294509290506001600160601b0361165d565b6101605161179291612fbe565b610160516102065783611482565b6040513d61016051823e3d90fd5b610160516117bb91612fbe565b610160516102065783611443565b63bb55fd2760e01b6101605152600461016051fd5b93505050506080813d60801161182f575b816117fc60809383612fbe565b810103126102065780611377611390925161181960208401613417565b6040840151608051909401519394509091611348565b3d91506117ef565b634e487b7160e01b61016051526041600452602461016051fd5b611860610e9061010051613317565b61186c61010051613338565b5161112e565b633a8bf65960e01b6101605152600461016051fd5b6118a9915060e03d60e0116118b5575b6118a18183612fbe565b8101906135b2565b505050505050896110ef565b503d611897565b670de0b6b3a76400006118da9160e0510204610b1361012051613338565b6118e661012051613338565b526110a4565b5f80fd5b909290916001600160a01b0381168310156119435782916119159161191b9594614608565b936145d7565b8082101561193c57505b6001600160801b0381169081036118ec5794610fe6565b9050611925565b915050611925926145d7565b60c05190955092508f610fb7565b6119698560a051613201565b610fa9565b9050611979916131e0565b90610f97565b60c05190929087116119ac576119a664e8d4a5100060a051950260e0510160a05189614583565b96610f79565b959291506001600160801b038311610206576002830a956119cd8288614472565b60c0518560011b0303927812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f2160c051860311670de0b6b3a7640000021584021561020657611a2f611a27611a188761447c565b611a2061453a565b9085614722565b60a0516131e0565b937812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f2160a05111670de0b6b3a764000002158502156102065780670de0b6b3a764000060c0518803020485670de0b6b3a764000060a0510204105f14611b7157611afe611b0d91600196611acd64e8d4a51000860260e05101670de0b6b3a76400000364e8d4a51000870260e0510184670de0b6b3a76400008d60c05190030204613c87565b670de0b6b3a7640000019181670de0b6b3a764000060a051020490670de0b6b3a764000060c0518c03020403613c87565b98611b0761453a565b8a614722565b907812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218211670de0b6b3a7640000021564e8d4a51000820260e05101670de0b6b3a76400000302156102065764e8d4a51000670de0b6b3a7640000910260e05101810391020493610f79565b9390949750610160519364e8d4a51000860260e051015f190481670de0b6b3a764000060c0518c0302041164e8d4a51000870260e051010215670de0b6b3a7640000021561020657611c15816119a693670de0b6b3a76400008c64e8d4a510009582878d0260e051019260c051900302040204670de0b6b3a76400000391670de0b6b3a76400008d60c0519003020481670de0b6b3a764000060a051020403613c87565b950260e051018589614583565b61016051611c2f91612fbe565b610160516102065786610e31565b610d819250611c64915060403d604011611c6a575b611c5c8183612fbe565b810190613620565b91610d70565b503d611c52565b611c899060403d604011611c6a57611c5c8183612fbe565b50610d0f565b909250611cab915060403d604011611c6a57611c5c8183612fbe565b9189610b02565b9150506040813d604011611cf1575b81611cce60409383612fbe565b8101031261020657611ceb6020611ce48361335c565b920161335c565b87610929565b3d9150611cc1565b90506020813d602011611d2b575b81611d1460209383612fbe565b8101031261020657611d259061335c565b86610854565b3d9150611d07565b9050611d4e915060e03d60e0116118b5576118a18183612fbe565b50505050508761080c565b50505050505061076c611d8762ffffff926101803d8111611d9f575b611d7f8183612fbe565b81019061342b565b50505050965091945091969296939250869550610719565b503d611d75565b632a9ffab760e21b6101605152600461016051fd5b90506001600160401b038060c08401511691511610856105f3565b63f3f6425d60e01b6101605152600461016051fd5b34610206576020366003190112610206576004358015158091036102065761016051547f549bab54c75a364ce0e438a4fbf09df7e6b096bcc83a6f91065a0fc8e410b29a91602091611e47336001600160a01b0383161461320e565b6101605160ff60a01b1990911660a083901b60ff60a01b16179055604051908152a16101605180f35b3461020657610160513660031901126102065761016051546040516001600160a01b039091168152602090f35b346102065761016051366003190112610206576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102065761016051366003190112610206576001546001600160a01b03163303611f7757610160515460ff8160a01c16611f62576101605160ff60a01b19909116600160a01b179055604051600181527f549bab54c75a364ce0e438a4fbf09df7e6b096bcc83a6f91065a0fc8e410b29a90602090a16101605180f35b6313d0ff5960e31b6101605152600461016051fd5b636570ecab60e11b6101605152600461016051fd5b34610206576101605136600319011261020657602060ff610160515460a01c166040519015158152f35b346102065761016051366003190112610206576001546040516001600160a01b039091168152602090f35b3461020657602036600319011261020657611ffa612ef5565b61201160018060a01b03610160515416331461320e565b60018060a01b0316806001600160601b0360a01b6001541617600155337fa14fc14d8620a708a896fd11392a235647d99385500a295f0d7da2a258b2e9676101605161016051a36101605180f35b346102065761012036600319011261020657612079612ef5565b612081612f0b565b60c4356001600160a01b03811692906044359060a4359060643590608435908790036102065760e4356001600160401b038111610206576120c6903690600401613003565b939094610104356001600160401b038111610206576120e9903690600401613003565b60025491959094916001600160a01b031661263957604051630972932760e21b81526001600160a01b03998a166004820181905299602090829060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156117a05761016051916125ff575b50156125ea57604051638da5cb5b60e01b81526020816004818d61016051905af19081156117a05761016051916125b0575b506001600160a01b03163381900361259b57670de0b6b3a76400008411801561258a575b8015612579575b8015612568575b611da6576101605152600560205260406101605120895f5260205260405f209960018060a01b0316998a6001600160601b0360a01b82541617905581670de0b6b3a76400000180670de0b6b3a76400001161254e57670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561254e576122486001600160401b03916134e1565b169180670de0b6b3a76400000390670de0b6b3a7640000821161254e57670de0b6b3a76400008202918204670de0b6b3a76400001490670de0b6b3a764000014171561254e578b936001600160401b03938493846122a76001956134e1565b169085604051946122b786612f88565b168452856020850191168152604084019283526060840191825285608085019916895260a084019788528d610160515260036020528580604061016051209551161686198554161784555191856fffffffffffffffff00000000000000008554928260801b905160801b16938260c01b905160c01b169460401b169116171717815501935116166001600160401b03198354161782555181549068010000000000000000600160e01b039060401b16906001600160401b0363ffffffff60e01b0116179055846101605152600460205260406101605120916001600160401b0382116118375781906123a98454612f35565b601f81116124f5575b506101605190601f831160011461248557610160519261247a575b50508160011b915f199060031b1c19161790555b843b15610206576124199160405180938192632f9c799b60e21b835286600484015260406024840152610160519460448401916131b3565b038161016051885af180156117a05761245f575b507f343ef5cc595144359c9db657cd7fcef6ecc88d06d17651a8292e553ab73b1c706101605161016051a46101605180f35b6101605161246c91612fbe565b61016051610206578361242d565b0135905088806123cd565b909150601f198316918461016051526020610160512092610160515b8181106124dd57509084600195949392106124c4575b505050811b0190556123e1565b01355f19600384901b60f8161c191690558880806124b7565b919360206001819287870135815501950192016124a1565b90915083610160515260206101605120601f840160051c81019160208510612544575b90601f859493920160051c01905b81811061253357506123b2565b610160518155849350600101612526565b9091508190612518565b634e487b7160e01b61016051526011600452602461016051fd5b50670de0b6b3a764000085116121c1565b50670de0b6b3a764000083116121ba565b50670de0b6b3a764000082116121b3565b6312272fd360e11b6101605152600461016051fd5b90506020813d6020116125e2575b816125cb60209383612fbe565b81010312610206576125dc906130f6565b8c61218f565b3d91506125be565b630ea8370b60e41b6101605152600461016051fd5b90506020813d602011612631575b8161261a60209383612fbe565b810103126102065761262b906131d3565b8c61215d565b3d915061260d565b63b5dfd9e560e01b6101605152600461016051fd5b346118ec5760403660031901126118ec57612667612ef5565b602435906001600160401b0382116118ec57816004019161012060031982360301126118ec5760ff5f5460a01c16612d0b57600254916001600160a01b038316612cfc576001600160a01b03166001600160a01b0319929092168217600255604051638da5cb5b60e01b81526020816004815f875af1908115612b08575f91612cc2575b506001600160a01b039081165f908152600560209081526040808320868452909152902054163303612cb3576127208361310a565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911603612ca457600280546001600160a01b0319168317905560448101905f806001600160801b0361277c8561311e565b1615801590612c87575b612bdd575b6127948661310a565b9060248401936127a385613132565b946127ad8761311e565b9160648101996127bc8b61311e565b6040805133602082015280820191909152909b90998a946001600160a01b036127e485612f21565b1660608701526127f390613146565b6001600160601b0316608086015261280a9061315a565b6001600160801b031660a08501526128219061315a565b6001600160801b031660c0840152608482013560e084015261284560a4830161316e565b6001600160401b031661010084015261286060c4830161316e565b6001600160401b031661012084015261287c60e4830182613182565b61014085016101209052610180850190612895926131b3565b91610104016128a391613182565b838303605f19016101608501526128ba92916131b3565b03601f19810187526128cc9087612fbe565b6001600160801b0316966001600160801b031690600193881515906001600160601b039982612bd4575b8415159182612bc4575b612909886132e5565b9b8c996129158a6132e5565b9861293161292b6129258d6132e5565b9c6132e5565b9c613317565b6001600160a01b0390911690521661294888613317565b52600161295489613317565b5260026129608a613317565b52600193612b8a575b5050612b55575b5050506040519561298087612f6d565b8652602086015260408501526060840152612999613249565b60405190606082018281106001600160401b03821117612b4157906129eb9592916040526060825260208201905f82526129fd60408401915f835260405198899660a0602089015260c088019061309f565b868103601f190160408801529061309f565b91601f19858403016060860152606083019351936060845284518091526020608085019501905f5b818110612b1357505050916040612a889492612a96979451602084015251910152601f19848203016080850152606051808252806080602084015e5f828201602090810191909152601f909101601f191690910184810360a08601520190612fdf565b03601f198101845283612fbe565b803b156118ec576040805162b9252f60e41b81523060048201526024810191909152905f908290818381612acd6044820189612fdf565b03925af18015612b0857612af3575b600280546001600160a01b03191690556101605180f35b5f612afd91612fbe565b5f6101605280612adc565b6040513d5f823e3d90fd5b825180516001600160a01b03168852602090810151818901528b985060409097019690920191600101612a25565b634e487b7160e01b5f52604160045260245ffd5b600192612b8192612b66838c613348565b90858060a01b03169052612b7a8287613348565b5285613348565b52868080612970565b90919250612b978b613338565b6001600160a01b039091169052612bad86613338565b526001612bb987613338565b526002908a80612969565b96612bce906134d3565b96612900565b600296506128f6565b5050612be88461310a565b506001600160601b03612bfd60248301613132565b60405163133f757160e31b815291166004820152610180816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015612b08575f915f91612c59575b5061278b565b9050612c7491506101803d8111611d9f57611d7f8183612fbe565b5050505050505050925090509086612c53565b506001600160801b03612c9c6064850161311e565b161515612786565b63ed5f09f160e01b5f5260045ffd5b6317fb43e560e31b5f5260045ffd5b90506020813d602011612cf4575b81612cdd60209383612fbe565b810103126118ec57612cee906130f6565b846126eb565b3d9150612cd0565b63b5dfd9e560e01b5f5260045ffd5b6313d0ff5960e31b5f5260045ffd5b346118ec5760803660031901126118ec57612d33612ef5565b50612d3c612f0b565b506064356001600160401b0381116118ec57612d5c903690600401613003565b5050604051630a85bd0160e11b8152602090f35b346118ec5760403660031901126118ec57612d89612ef5565b612d91612f0b565b6001600160a01b039182165f908152600560209081526040808320938516835292815290829020549151919092168152f35b346118ec5760203660031901126118ec576020612dde612ef5565b6040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169216919091148152f35b346118ec5760203660031901126118ec576001600160a01b03612e38612ef5565b165f52600460205260405f205f90805490612e5282612f35565b8085529160018116908115612ece5750600114612e8e575b6116d784612e7a81860382612fbe565b604051918291602083526020830190612fdf565b5f90815260208120939250905b808210612eb457509091508101602001612e7a82612e6a565b919260018160209254838588010152019101909291612e9b565b60ff191660208087019190915292151560051b85019092019250612e7a9150839050612e6a565b600435906001600160a01b03821682036118ec57565b602435906001600160a01b03821682036118ec57565b35906001600160a01b03821682036118ec57565b90600182811c92168015612f63575b6020831014612f4f57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612f44565b608081019081106001600160401b03821117612b4157604052565b60c081019081106001600160401b03821117612b4157604052565b60a081019081106001600160401b03821117612b4157604052565b90601f801991011681019081106001600160401b03821117612b4157604052565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9181601f840112156118ec578235916001600160401b0383116118ec57602083818601950101116118ec57565b90602080835192838152019201905f5b81811061304d5750505090565b82516001600160a01b0316845260209384019390920191600101613040565b90602080835192838152019201905f5b8181106130895750505090565b825184526020938401939092019160010161307c565b6130f39160606130e26130d06130be8551608086526080860190613030565b6020860151858203602087015261306c565b6040850151848203604086015261306c565b92015190606081840391015261306c565b90565b51906001600160a01b03821682036118ec57565b356001600160a01b03811681036118ec5790565b356001600160801b03811681036118ec5790565b356001600160601b03811681036118ec5790565b35906001600160601b03821682036118ec57565b35906001600160801b03821682036118ec57565b35906001600160401b03821682036118ec57565b9035601e19823603018112156118ec5701602081359101916001600160401b0382116118ec5781360383136118ec57565b908060209392818452848401375f828201840152601f01601f1916010190565b519081151582036118ec57565b919082018092116131ed57565b634e487b7160e01b5f52601160045260245ffd5b919082039182116131ed57565b1561321557565b60405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606490fd5b6040519061325682612f6d565b606080838181528160208201528160408201520152565b6001600160401b038111612b4157601f01601f191660200190565b81601f820112156118ec5780359061329f8261326d565b926132ad6040519485612fbe565b828452602083830101116118ec57815f926020809301838601378301015290565b6001600160401b038111612b415760051b60200190565b906132ef826132ce565b6132fc6040519182612fbe565b828152809261330d601f19916132ce565b0190602036910137565b8051156133245760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156133245760400190565b80518210156133245760209160051b010190565b51908160020b82036118ec57565b906101406101206130f39360018060a01b0381511684526020810151602085015262ffffff6040820151166040850152606081015160020b6060850152608081015160020b608085015260a081015160020b60a085015260c081015160020b60c08501526001600160801b0360e08201511660e0850152610100810151610100850152015191816101208201520190613030565b81518111918261340d57505090565b6020015111919050565b51906001600160801b03821682036118ec57565b9190826101809103126118ec5781516001600160601b03811681036118ec5791613457602082016130f6565b91613464604083016130f6565b91613471606082016130f6565b91608082015162ffffff811681036118ec579161349060a0820161335c565b9161349d60c0830161335c565b916134aa60e08201613417565b9161010082015191610120810151916130f36101606134cc6101408501613417565b9301613417565b5f1981146131ed5760010190565b60b581600160881b81101561358c575b8069010000000000000000006201000092101561357f575b65010000000000811015613572575b6301000000811015613565575b010260121c8082040160011c8082040160011c8082040160011c8082040160011c8082040160011c8082040160011c8082040160011c8080920410900390565b60101c9160081b91613525565b60201c9160101b91613518565b60401c9160201b91613509565b5068b500000000000000009050608082901c6134f1565b519061ffff821682036118ec57565b908160e09103126118ec5780516001600160a01b03811681036118ec57916135dc6020830161335c565b916135e9604082016135a3565b916135f6606083016135a3565b91613603608082016135a3565b9160a082015160ff811681036118ec5760c06130f39193016131d3565b91908260409103126118ec576020825192015190565b9490939192936060830193845115613b3c5760e0015180518061391b57505082511515906040860194600462ffffff87511692602060018060a01b038a511660405193848092630d34328160e11b82525afa8015612b08578a925f916138da575b506101008a015160408801516060909801516136fd986001600160a01b03918216949082169391909216916136ef90610e9d6136e86136e26136d88a613317565b51610e9d85613317565b98613338565b5191613338565b95519660808b015198613fc9565b9182156138d3576137f192604092511515945f61372360018060a01b03835116936143e6565b8782146138b2576137af6101206401000276a4945b016137a162ffffff60018060a01b036137518451613317565b5193519316926001600160a01b039061376990613338565b5199518b516001600160a01b03958616602082015291909a16909316604084015290971662ffffff1660608201529586906080820190565b03601f198101875286612fbe565b855196879586948593630251596160e31b85523060048601528b6024860152604485015260018060a01b0316606484015260a0608484015260a4830190612fdf565b03925af1908115612b08575f905f92613875575b50613850929081156138605761381e9061137186613317565b61382785613317565b52156138535761384a9061384461383d85613338565b51916143e6565b906131e0565b91613338565b52565b61384a9061137184613338565b6138709061384461383d87613317565b61381e565b9150506040813d6040116138aa575b8161389160409383612fbe565b810103126118ec57805160209091015190613850613805565b3d9150613884565b6137af61012073fffd8963efd1fc6a506488495d951d5263988d2594613738565b5050505050565b9250506020823d602011613913575b816138f660209383612fbe565b810103126118ec576136fd9561390c8b93613417565b9096613697565b3d91506138e9565b959392509593505051151592840190606085602084019303126118ec5760208501516001600160a01b038116908190036118ec576040860151956060810151906001600160401b0382116118ec57019083603f830112156118ec576020820151916139858361326d565b946139936040519687612fbe565b838652604082850101116118ec576040935f602085613a5296886101209601838b015e880101528715613b085701935f60018060a01b036139d48751613317565b5196519616956001600160a01b03906139ec90613338565b5116955b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116949116613a298b8683613c0a565b8651978896879586946344bc658560e01b8652600486015260a0602486015260a4850190612fdf565b60448401929092526001600160a01b03166064830152608482018b905203925af1928315612b08575f915f94613ae5575b5015613abf57613aa6613ab091613aa1613850959661137186613317565b6131e0565b93610b1383613338565b613ab982613338565b52613317565b613ae090613aa1613ad661385095610b1386613317565b9561137185613338565b613ab0565b909350613b01915060403d604011611c6a57611c5c8183612fbe565b925f613a83565b01935f60018060a01b03613b1c8751613338565b5196519616956001600160a01b0390613b3490613317565b5116956139f0565b50505050505050565b9290916001600160a01b0380821690841610156118ec57604080516001600160a01b0394851660208201908152929094169084015262ffffff91909116606080840191909152825290613b99608082612fbe565b5190209060405191602083019160ff60f81b83526001600160601b03199060601b16602184015260358301527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54605583015260558252613bfa607583612fbe565b905190206001600160a01b031690565b60405163a9059cbb60e01b81526001600160a01b03909216600483015260248201929092526020915f9160449183905af13d15601f3d1160015f511416171615613c5057565b60405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606490fd5b815f190481118202158302156118ec57020490565b60020b908160ff1d82810118620d89e88111613fb65763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b189160028116613f9a575b60048116613f7e575b60088116613f62575b60108116613f46575b60208116613f2a575b60408116613f0e575b60808116613ef2575b6101008116613ed6575b6102008116613eba575b6104008116613e9e575b6108008116613e82575b6110008116613e66575b6120008116613e4a575b6140008116613e2e575b6180008116613e12575b620100008116613df6575b620200008116613ddb575b620400008116613dc0575b6208000016613da7575b5f12613d9f575b0160201c90565b5f1904613d98565b6b048a170391f7dc42444e8fa290910260801c90613d91565b6d2216e584f5fa1ea926041bedfe9890920260801c91613d87565b916e5d6af8dedb81196699c329225ee6040260801c91613d7c565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91613d71565b916f31be135f97d08fd981231505542fcfa60260801c91613d66565b916f70d869a156d2a1b890bb3df62baf32f70260801c91613d5c565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91613d52565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91613d48565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91613d3e565b916ff3392b0822b70005940c7a398e4b70f30260801c91613d34565b916ff987a7253ac413176f2b074cf7815e540260801c91613d2a565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91613d20565b916ffe5dee046a99a2a811c461f1969c30530260801c91613d16565b916fff2ea16466c96a3843ec78b326b528610260801c91613d0d565b916fff973b41fa98c081472e6896dfb254c00260801c91613d04565b916fffcb9843d60f6159c9db58835c9266440260801c91613cfb565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91613cf2565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91613ce9565b916ffff97272373d413259a46990580e213a0260801c91613ce0565b826345c3193d60e11b5f5260045260245ffd5b93929597949091965f945b60648610613fe9575050505050505050505090565b9091929394959697989984620f42400397885f19048111890215620f424002156118ec57620f42409089020482156143b5576001600160a01b039061402f908c8c614801565b16906001600160a01b0381116143695760601b6001600160801b038b1680820615159104015b6001600160a01b038a16908082111561435c5790036001600160a01b03165b821561433e570160011c6001600160a01b0316945b6001600160a01b0386811690851681106140c15750505050505050506140b56140bc916130f3956148d1565b8383614801565b6149fd565b60018060a09d9c9b9a939495969798999d1b03831610156143155782156142f4576140f6906140f18a8a8a61499d565b6148f4565b996141028989896149fd565b965b87908c8c8387156142c1575050808d11156142b757614127908d035b8883614608565b6141348a880183876145d7565b995b8a82109a8b15614276577812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218311670de0b6b3a764000002158102156118ec5780670de0b6b3a76400008402049b5b1561422f5750506001600160801b0381169081036118ec5761419f9185614a29565b90841561422557859190828211156141e75750035b620f4240819c98670de0b6b3a764000003106141d857506001019492909391613fd4565b9a505050505050505050505090565b915050600a60097f1c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c718311021502156118ec576009600a9102046141b4565b9b5084039a6141b4565b90939e9291506001600160801b0381169081036118ec57886142509261499d565b9185156142615750508a039a6141b4565b8c92919d508282115f146141e75750036141b4565b7812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218111670de0b6b3a764000002158302156118ec5782670de0b6b3a76400008202049b61417d565b506141275f614120565b6142cd91018984614608565b90808811156142ea576142e49088035b83876145d7565b99614136565b506142e45f6142dd565b614303906140f18a898b614a29565b9961430f89888a614933565b96614104565b9450505090506130f396506143389394955061433192506148d1565b838361487b565b90614933565b6001600160a01b039180820160011c91600291081515011694614089565b634323a5555f526004601cfd5b6001600160801b038b1661438281600160601b84614722565b9181156143a157600160601b9009156140555760010180614055575f80fd5b634e487b7160e01b5f52601260045260245ffd5b906001600160a01b03906143ca908c8c6147a2565b16906001600160a01b03906143e0908c8c61487b565b16614074565b600160ff1b81146131ed575f0390565b906014528160345263095ea7b360601b5f5260205f6044601082855af13d1560015f511417161561442a575b50505f603452565b604460105f80936020958260345263095ea7b360601b83528238868683865af1506034525af13d1560015f5114171615614465575f80614422565b633e3f8f735f526004601cfd5b81156143a1570490565b5f90801561453457808060011461452c576002146145255760016101338210166001600b83101617614517579060019060025b600181116144db5750825f190482116144c757500290565b634e487b7160e01b81526011600452602490fd5b92805f1904811161450357600184166144fa575b80029260011c6144af565b809202916144ef565b634e487b7160e01b82526011600452602482fd5b6002900a9190806144c75750565b5050600490565b505050600190565b50505f90565b600160601b600160025b6001811161455b5750815f190481116131ed570290565b91805f190481116131ed576001831661457a575b80029160011c614544565b8091029061456f565b90916001600160801b0382116118ec57670de0b6b3a76400000390825f19048211830215670de0b6b3a764000002156118ec57670de0b6b3a76400006130f39360026145cd61453a565b930a930204614722565b6130f39291906001600160a01b0380831690821611614602575b90036001600160a01b03169061464f565b906145f1565b6130f392916001600160a01b0380821690831611614649575b6146376001600160a01b038281169084166146d9565b9190036001600160a01b031691614722565b90614621565b90606082901b905f19600160601b8409928280851094039380850394858411156118ec57146146d2578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b81810291905f1982820991838084109303928084039384600160601b11156118ec571461471957600160601b910990828211900360a01b910360601c1790565b50505060601c90565b91818302915f19818509938380861095039480860395868511156118ec571461479a579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b919081156147fc576001600160a01b03909216918183029160609190911b600160601b600160e01b0316908204831482821116156147ef576130f3926147ea92820391614a65565b614a8e565b63f5c787f15f526004601cfd5b505090565b919081156147fc5760601b600160601b600160e01b0316916001600160a01b031690808202826148318383614472565b14614859575b50613aa16148459284614472565b80820491061515016001600160a01b031690565b8301838110614837576001600160a01b039361487793919250614a65565b1690565b6130f3926147ea92906001600160a01b0381116148b8576001600160801b036148a892169060601b614472565b905b6001600160a01b03166131e0565b6001600160801b036148cb92169061464f565b906148aa565b815f19048111820215620f424002156118ec5702620f4240808204910615150190565b7d10c6f7a0b5ed8d36b4c7f34938583621fafc8b0079a2834d26fa3fcc9ea98111620f424002158202156118ec57620f42400290808204910615150190565b906001600160a01b0380821690831611614997575b6001600160a01b03821691821561498b576130f393614986926001600160a01b0380821693909103169060601b600160601b600160e01b0316614722565b614472565b62bfc9215f526004601cfd5b90614948565b6001600160a01b03828116908216116149f7575b6001600160a01b03811692831561498b576149eb926001600160a01b0380821693909103169060601b600160601b600160e01b0316614a65565b90808206151591040190565b906149b1565b6130f3926001600160a01b03928316919092160360ff81901d90810118906001600160801b03166146d9565b6001600160a01b0391821691160360ff81901d90810118906001906001600160801b0316614a5783826146d9565b928260601b91091515160190565b929190614a73828286614722565b9382156143a15709614a8157565b906001019081156118ec57565b6001600160a01b03811691908203614aa257565b6393dafdf160e01b5f5260045ffdfea26469706673582212204fd9fc36d400d6fb23cb2b96697242993466e756a185a9c957cef1ac8c58862364736f6c634300081d0033000000000000000000000000b4d72b1c91e640e4ed7d7397f3244de4d8acc50b000000000000000000000000da14fdd72345c4d2511357214c5b89a919768e59000000000000000000000000354dbba1348985cc952c467b8ddaf5dd0759066700000000000000000000000003a520b32c04bf3beef7beb72e919cf822ed34f100000000000000000000000033128a8fc17869897dce68ed026d694621f6fdfd