291 txs
292 calls
constructor
constructor(address _nonfungiblePositionManager, address _uniswapV3Staker)
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
deposits
viewfunction deposits(uint256) view returns (address owner, uint128 liquidity, address token0, address token1)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
incentives
viewfunction incentives(bytes32) view returns (address pool, address rewardToken, uint256 reward, uint256 startTime, uint256 endTime)
marketTokenIds
viewfunction marketTokenIds(address, uint256) view returns (uint256)
nonfungiblePositionManager
viewfunction nonfungiblePositionManager() view returns (address)
onERC721Received
viewfunction onERC721Received(address, address, uint256, bytes) view returns (bytes4)
poolIncentives
viewfunction poolIncentives(address, uint256) view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
tokenIdMarket
viewfunction tokenIdMarket(uint256) view returns (address)
uniswapV3Staker
viewfunction uniswapV3Staker() view returns (address)
createIncentive
nonpayablefunction createIncentive(address pool, address rewardToken, uint256 reward, uint256 startTime, uint256 endTime)
endIncentive
nonpayablefunction endIncentive(address pool, address rewardToken, uint256 startTime, uint256 endTime)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
mintAndProvideLiquidity
nonpayablefunction mintAndProvideLiquidity(address truthMarket, uint256 paymentTokenAmount)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 tokenId) returns (uint256 amount0, uint256 amount1)
removeMarketLiquidity
nonpayablefunction removeMarketLiquidity(address market)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
withdrawAllToken
nonpayablefunction withdrawAllToken(address token, address to)
withdrawToken
nonpayablefunction withdrawToken(address token, uint256 amount, address to)
events
IncentiveCreated
event IncentiveCreated(bytes32 indexed incentiveId, address indexed pool, address indexed rewardToken, uint256 reward, uint256 startTime, uint256 endTime)
IncentiveEnded
event IncentiveEnded(bytes32 indexed incentiveId, address indexed pool, address indexed rewardToken, uint256 startTime, uint256 endTime)
LiquidityRemoved
event LiquidityRemoved(address indexed market, uint256 indexed tokenId, uint256 amount0, uint256 amount1)
MarketLiquidityProvided
event MarketLiquidityProvided(address market)
MarketLiquidityRemoved
event MarketLiquidityRemoved(address indexed market, uint256 totalAmount0, uint256 totalAmount1)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
errors
No errors.
creation bytecode
0x60c03461019457612f7f90601f38839003908101601f19168201906001600160401b03821183831017610198578083916040958694855283398101031261019457610049816101ac565b61005660208093016101ac565b6001600160a01b039182166080521660a0525f80805280825282812033825282528290205460ff161561015f575b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92990815f525f8152825f20335f52815260ff835f20541615610127575b8251612d9e90816101c182396080518181816103a00152818161042f0152818161048801528181610e3601528181610ee6015281816112250152818161137301528181611bfb0152612749015260a051818181610b780152818161171c0152611ca40152f35b815f525f8152825f2090335f5252815f20600160ff19825416179055339033905f80516020612f5f8339815191525f80a45f806100c1565b5f80525f8152815f20335f528152815f20600160ff1982541617905533335f5f80516020612f5f8339815191528180a4610084565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101945756fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a714611cd35750806303baa0ea14611c8f578063150b7a0214611ba1578063248a9ca314611b755780632f2ff15d14611ad057806336568abe14611a3e5780633aeebedb1461198c5780633ccdbb281461193a5780634255d5e8146116d057806351f8705a1461169d578063607777951461163c57806391d14854146115f35780639c8f9f23146112d2578063a217fddf146112b6578063b02c43d014611254578063b44a27221461120f578063b73178bf14610d1a578063c5d62bd714610cc3578063d28bb1b214610c6d578063d547741f14610c2d578063f74767a514610aea5763fbe4bc3714610110575f80fd5b34610ae7576040366003190112610ae757610129611d26565b6101316120e9565b604051633013ce2960e01b8152906020826004816001600160a01b0385165afa918215610adc578392610aa0575b5060405163095ea7b360e01b81526001600160a01b0382166004820152602480359082015260208180604481010381876001600160a01b0388165af18015610a3957610a67575b506001600160a01b0381163b15610a585760405163140e25ad60e31b81526024803560048301528491908290829081836001600160a01b0388165af18015610a5c57610a44575b50506040805163392db6d360e21b815290816004816001600160a01b0386165afa928315610a3957849185946109ec575b5060405163313ce56760e01b8152916020836004816001600160a01b0386165afa9283156106cf5786936109b0575b50604051630786cdd960e51b8152926020846004816001600160a01b0389165afa938415610684578794610971575b5060405163313ce56760e01b815293602090859060049082906001600160a01b03165afa938415610684578794610935575b506040516308d4f88560e11b8152936020856004816001600160a01b038a165afa94851561076c5788956108f6575b5060405163313ce56760e01b815294602090869060049082906001600160a01b03165afa94851561076c578895610896575b509061034460ff6103516103318261034a610339610331836103589a16611f0d565b602435611ed8565b610344838916611f0d565b90611f1b565b9916611f0d565b9216611f0d565b604051630786cdd960e51b81529093906020816004816001600160a01b038a165afa90811561076c57889161085c575b5060405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490529091602091839160449183918d91165af1801561076c57610823575b506040516308d4f88560e11b81526020816004816001600160a01b038a165afa90811561076c5788916107e9575b5060405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018790529091602091839160449183918d91165af1801561076c576107b0575b5060405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201526024803590820152602081806044810103818b6001600160a01b0389165af1801561076c57610777575b50604051630786cdd960e51b8152916020836004816001600160a01b038a165afa92831561076c57889361072c575b506040516334324e9f60e21b8152916020836004816001600160a01b0386165afa9081156107215787938a926106da575b5061055c9460243560011c91906001600160a01b03881690612591565b6040516308d4f88560e11b8152916020836004816001600160a01b0388165afa9283156106cf57869361068f575b506040516334324e9f60e21b8152926020846004816001600160a01b038a165afa938415610684578794610610575b509484936105fc93602096937f2f9eb3607e1ab9527e84637029cbf03ef11854f6342d9be56434e8f8ea66a9139860243560011c9260018060a01b031690612591565b6040516001600160a01b039091168152a180f35b9192949350946020823d60201161067c575b8161062f60209383611e37565b81010312610678577f2f9eb3607e1ab9527e84637029cbf03ef11854f6342d9be56434e8f8ea66a913956020956105fc9461066a8795611f39565b9650939650935090956105b9565b8680fd5b3d9150610622565b6040513d89823e3d90fd5b9092506020813d6020116106c7575b816106ab60209383611e37565b810103126106c3576106bc90611eeb565b915f61058a565b8580fd5b3d915061069e565b6040513d88823e3d90fd5b935090506020833d602011610719575b816106f760209383611e37565b810103126107155761055c9361070d8894611f39565b91909461053f565b8880fd5b3d91506106ea565b6040513d8b823e3d90fd5b9092506020813d602011610764575b8161074860209383611e37565b810103126107605761075990611eeb565b915f61050e565b8780fd5b3d915061073b565b6040513d8a823e3d90fd5b6020813d6020116107a8575b8161079060209383611e37565b81010312610760576107a190611e59565b505f6104df565b3d9150610783565b6020813d6020116107e1575b816107c960209383611e37565b81010312610760576107da90611e59565b505f610478565b3d91506107bc565b90506020813d60201161081b575b8161080460209383611e37565b810103126107605761081590611eeb565b5f610417565b3d91506107f7565b6020813d602011610854575b8161083c60209383611e37565b810103126107605761084d90611e59565b505f6103e9565b3d915061082f565b90506020813d60201161088e575b8161087760209383611e37565b810103126107605761088890611eeb565b5f610388565b3d915061086a565b919094506020823d6020116108ee575b816108b360209383611e37565b810103126107605761034460ff6103516103318261034a610339610331836108dd6103589b611eff565b9d999a50505050505050505061030f565b3d91506108a6565b94506020853d60201161092d575b8161091160209383611e37565b81010312610760576020610926600496611eeb565b95506102dd565b3d9150610904565b9093506020813d602011610969575b8161095160209383611e37565b810103126106785761096290611eff565b925f6102ae565b3d9150610944565b93506020843d6020116109a8575b8161098c60209383611e37565b810103126106785760206109a1600495611eeb565b945061027c565b3d915061097f565b9092506020813d6020116109e4575b816109cc60209383611e37565b810103126106c3576109dd90611eff565b915f61024d565b3d91506109bf565b915092506040813d604011610a31575b81610a0960409383611e37565b81010312610a2d57610a266020610a1f83611eeb565b9201611eeb565b925f61021e565b8380fd5b3d91506109fc565b6040513d86823e3d90fd5b610a4d90611deb565b610a5857825f6101ed565b8280fd5b6040513d84823e3d90fd5b6020813d602011610a98575b81610a8060209383611e37565b81010312610a2d57610a9190611e59565b505f6101a6565b3d9150610a73565b9091506020813d602011610ad4575b81610abc60209383611e37565b81010312610a5857610acd90611eeb565b905f61015f565b3d9150610aaf565b6040513d85823e3d90fd5b80fd5b5034610ae7576080366003190112610ae757610b04611d26565b610b0c611d3c565b60443590606435610b1b6120e9565b6040516001600160a01b039283169483169390610b3781611dbb565b8581528660208095878285015284604085015285606085015230608085015260a460405180948193632d6b69b960e21b8352610b766004840189611e66565b7f0000000000000000000000000000000000000000000000000000000000000000165af190811561076c578591610bfc575b5050907f5c7cb2fcfb798b4434a2e9365701ae8ce313266e9fc99e792e48739b04d52ba2926040928351610bdf8782018093611e66565b60a08152610bec81611e1b565b519020948351928352820152a480f35b819392933d8311610c26575b610c128183611e37565b81010312610c225790835f610ba8565b5f80fd5b503d610c08565b5034610ae7576040366003190112610ae757610c6a600435610c4d611d3c565b9080845283602052610c656001604086200154612252565b61237c565b80f35b5034610ae7576040366003190112610ae757610c87611d26565b6001600160a01b0316815260046020526040812080546024359290831015610ae7576020610cb58484611d52565b90546040519160031b1c8152f35b5034610ae7576040366003190112610ae757610cdd611d26565b6001600160a01b0316815260036020526040812080546024359290831015610ae7576020610d0b8484611d52565b90549060031b1c604051908152f35b5034610ae7576020366003190112610ae757610d34611d26565b610d3c6120e9565b6001600160a01b038116825260046020526040822082908190815b815481101561118f57610d6a8183611d52565b9054808260031b1c885260016020526001600160801b03600160408a20015416610d99575b5050600101610d57565b90919394610da56120e9565b818360031b1c885260016020526001600160801b03600160408a2001541660405190610dd082611dbb565b600385901b84901c82526020820190815260408083018b8152606084018c815242608086019081528351630624e65f60e11b81529551600487015293516001600160801b0316602486015290516044850152516064840152905160848301528160a4818c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561072157611171575b5060405191610e7983611dff565b600384901b81901c835230602084019081526001600160801b03604080860182815260608701838152825163fc6f786560e01b81529751600489015293516001600160a01b0390811660248901529051831660448801529251909116606486015290849060849082908d907f0000000000000000000000000000000000000000000000000000000000000000165af19384156107215789938a9561113a575b50600381811b83901c8b52600160205260408b20805460028201549190920154610f609288926001600160a01b0391821692821691610f5b918a918591166123ed565b6123ed565b600381901b82901c8a52600560205260408a208054906001600160a01b038216610fc8575b50509260019492610fba92610fc09560031b1c8b52856020528a60036040822082815582898201558260028201550155611eb7565b95611eb7565b92905f610d8f565b6001600160601b0360a09a98929394959697999a1b8316905560018060a01b0382168b52600460205260408b20998b5b8b54808210156111205761100c828e611d52565b888860031b1c91549060031b1c146110275750600101610ff8565b919b905f9b9a989796959493999b199283810190811161110c5761105f6110516110759285611d52565b90549060031b1c9284611d52565b819391549060031b91821b915f19901b19161790565b9055805480156110f8579282610fc0989592610fba979460019b9996019161109d8383611d52565b909182549160031b1b19169055555b6040518581528760208201527f1dc8bb69df2b8e91fbdcbfcf93d951b3f0000f085a95fe3f7946d6161439245d6040858560031b1c938c8060a01b031692a39295509281949650610f85565b634e487b7160e01b8e52603160045260248efd5b634e487b7160e01b8f52601160045260248ffd5b505099509597969293610fc094610fba93600197936110ac565b90945061116091935060403d60401161116a575b6111588183611e37565b810190611ea1565b929092935f610f18565b503d61114e565b6111899060403d60401161116a576111588183611e37565b50610e6b565b8584868560018060a01b0382168452600460205260408420805490858155816111f1575b50507f7fd2bd6999ffd36e35ed6ce6daf531c90a1d703b2c4cf9daac7f71ae6d209b0d916040918251948552602085015260018060a01b031692a280f35b855260208520908101905b818110156111b3575f81556001016111fc565b5034610ae75780600319360112610ae7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610ae7576020366003190112610ae7576040608091600435815260016020522060018060a01b0380825416916001600160801b03600182015416916003816002840154169201541691604051938452602084015260408301526060820152f35b5034610ae75780600319360112610ae757602090604051908152f35b5034610ae7576020806003193601126115ef576004356112f06120e9565b808352600182526001600160801b039182600160408620015416926040519361131885611dbb565b83855282850190815260408086018781526060870188815242608089019081528351630624e65f60e11b8152985160048a015293518516602489015290516044880152516064870152905160848601526001600160a01b03947f00000000000000000000000000000000000000000000000000000000000000008616918160a4818a865af1801561068457604092879894926084926115d3575b50848451916113c083611dff565b8883528783019430865286840181815281606086019181835289519d8e998a9863fc6f786560e01b8a525160048a01525116602488015251166044860152511660648401525af19283156115c6578194829461159f575b508082526001835260408220611445858883541689600285015416610f5b8a838d60038099015416936123ed565b818352600584526040832080549788169788611489575b50505060409550815260018252600385822082815582600182015582600282015501558351928352820152f35b6001600160a01b03191690558683526004845260408320959493929190825b87548082101561158d57836114bd838b611d52565b905490851b1c146114d157506001016114a8565b905f989293949596979819918281019081116115795761105f6114f76115049286611d52565b905490871b1c9285611d52565b90558154801561156557918185949260409b9401926115238484611d52565b81939154921b1b19169055555b7f1dc8bb69df2b8e91fbdcbfcf93d951b3f0000f085a95fe3f7946d6161439245d8880518981528888820152a35f808061145c565b634e487b7160e01b86526031600452602486fd5b634e487b7160e01b87526011600452602487fd5b50505080919293949550604096611530565b9093506115bc91945060403d60401161116a576111588183611e37565b939093925f611417565b50604051903d90823e3d90fd5b6115e990853d871161116a576111588183611e37565b506113b2565b5080fd5b5034610ae7576040366003190112610ae757604061160f611d3c565b91600435815280602052209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b5034610ae7576020366003190112610ae757604060a0916004358152600260205220600180831b0390818154169160018201541690600281015460046003830154920154926040519485526020850152604084015260608301526080820152f35b5034610ae7576020366003190112610ae757602090600435815260058252604060018060a01b0391205416604051908152f35b5034610c225760a0366003190112610c22576116ea611d26565b6116f2611d3c565b60643591906044356084356117056120e9565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483018190526024830185905294811696949590949160209182826044815f8d5af19182156118f8578792611903575b5016956040519061177e82611dbb565b8882528783830152836040830152846060830152306080830152803b15610c22575f809160c460405180948193635cc5e3d960e01b83526117c26004840189611e66565b8b60a48401525af180156118f8576118e5575b506040516117e68382018093611e66565b60a081526117f381611e1b565b519020946004868a6040519361180885611dbb565b8a85528585018c815260408601918a835280604060608901958b875260808a01978d8952815260028b5220975116906001600160601b0360a01b91828954161788556001880192511690825416179055516002850155516003840155519101558588526003815260408820805490600160401b8210156118d15791866118bd61105f846060989660017f238a6118211b5bf2823b96f58a829b681f545db0dbe2a6483eea7033d55099d39b9997018155611d52565b90556040519384528301526040820152a480f35b634e487b7160e01b8a52604160045260248afd5b6118f0919950611deb565b5f975f6117d5565b6040513d5f823e3d90fd5b91508282813d8311611933575b61191a8183611e37565b81010312610c225761192c8792611e59565b505f61176e565b503d611910565b34610c22576060366003190112610c2257611953611d26565b6001600160a01b036044358181169291838203610c225761198061198a94611979611f47565b1515611d7b565b60243592166123ed565b005b34610c22576040366003190112610c22576119a5611d26565b6119ad611d3c565b906119b6611f47565b6001600160a01b03906119cc8383161515611d7b565b6040516370a0823160e01b8152306004820152911691602082602481865afa9182156118f8575f92611a0a575b5081611a0157005b61198a926123ed565b9091506020813d602011611a36575b81611a2660209383611e37565b81010312610c22575190836119f9565b3d9150611a19565b34610c22576040366003190112610c2257611a57611d3c565b336001600160a01b03821603611a735761198a9060043561237c565b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b34610c22576040366003190112610c2257600435611aec611d3c565b815f525f602052611b03600160405f200154612252565b815f525f60205260405f209060018060a01b031690815f5260205260ff60405f20541615611b2d57005b815f525f60205260405f20815f5260205260405f20600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4005b34610c22576020366003190112610c22576004355f525f6020526020600160405f200154604051908152f35b34610c22576080366003190112610c2257611bba611d26565b50611bc3611d3c565b5060643567ffffffffffffffff808211610c225736602383011215610c22578160040135908111610c225736910160240111610c22577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303611c3b57604051630a85bd0160e11b8152602090f35b60405162461bcd60e51b815260206004820152602660248201527f4f6e6c7920616363657074204e4654732066726f6d20706f736974696f6e206d60448201526530b730b3b2b960d11b6064820152608490fd5b34610c22575f366003190112610c22576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610c22576020366003190112610c22576004359063ffffffff60e01b8216809203610c2257602091637965db0b60e01b8114908115611d15575b5015158152f35b6301ffc9a760e01b14905083611d0e565b600435906001600160a01b0382168203610c2257565b602435906001600160a01b0382168203610c2257565b8054821015611d67575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b15611d8257565b60405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606490fd5b60a0810190811067ffffffffffffffff821117611dd757604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff8111611dd757604052565b6080810190811067ffffffffffffffff821117611dd757604052565b60c0810190811067ffffffffffffffff821117611dd757604052565b90601f8019910116810190811067ffffffffffffffff821117611dd757604052565b51908115158203610c2257565b80516001600160a01b039081168352602080830151821690840152604080830151908401526060808301519084015260809182015116910152565b9190826040910312610c22576020825192015190565b91908201809211611ec457565b634e487b7160e01b5f52601160045260245ffd5b81810292918115918404141715611ec457565b51906001600160a01b0382168203610c2257565b519060ff82168203610c2257565b604d8111611ec457600a0a90565b8115611f25570490565b634e487b7160e01b5f52601260045260245ffd5b51908160020b8203610c2257565b335f9081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb560209081526040918290205460ff1615611f85575050565b611f8e33612bf2565b915f8151611f9b81611dff565b60428152838101916060368437815115611d675760308353815160019060011015611d6757607860218401536041905b8082116120a6575050612064576120609461204a92604892855196879376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b82860152805191829101603786015e8301907001034b99036b4b9b9b4b733903937b6329607d1b60378301525180928583015e015f83820152036028810185520183611e37565b5162461bcd60e51b815291829160048301612bb7565b0390fd5b60648484519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015611d67576f181899199a1a9b1b9c1cb0b131b232b360811b901a6120d58486612be1565b5360041c918015611ec4575f190190611fcb565b335f9081527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f6020908152604091829020547f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929929060ff161561214b57505050565b61215433612bf2565b92815161216081611dff565b60428152838101916060368437815115611d675760308353815160019060011015611d6757607860218401536041905b80821161220f575050612064576120609461204a92604892855196879376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b82860152805191829101603786015e8301907001034b99036b4b9b9b4b733903937b6329607d1b60378301525180928583015e015f83820152036028810185520183611e37565b9091600f81166010811015611d67576f181899199a1a9b1b9c1cb0b131b232b360811b901a61223e8486612be1565b5360041c918015611ec4575f190190612190565b805f5260205f81526040805f20335f52825260ff815f2054161561227557505050565b61227e33612bf2565b92815161228a81611dff565b60428152838101916060368437815115611d675760308353815160019060011015611d6757607860218401536041905b808211612339575050612064576120609461204a92604892855196879376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b82860152805191829101603786015e8301907001034b99036b4b9b9b4b733903937b6329607d1b60378301525180928583015e015f83820152036028810185520183611e37565b9091600f81166010811015611d67576f181899199a1a9b1b9c1cb0b131b232b360811b901a6123688486612be1565b5360041c918015611ec4575f1901906122ba565b90815f525f60205260405f209060018060a01b031690815f5260205260ff60405f2054166123a8575050565b815f525f60205260405f20815f5260205260405f2060ff19815416905533917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4565b6040805163a9059cbb60e01b60208083019182526001600160a01b03959095166024830152604480830196909652948152929390929091601f1990612433606484611e37565b60018060a01b031684519285840167ffffffffffffffff9585821087831117611dd7575f92839289528987527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648a880152519082855af1903d1561254c573d948511611dd7576124bd946124b088885195601f8401160185611e37565b83523d5f8885013e612cd7565b805183811591821561252d575b50509050156124d7575050565b60849250519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b8380929350010312610c2257826125449101611e59565b80835f6124ca565b6124bd945060609250612cd7565b519061ffff82168203610c2257565b60ff16604d8111611ec457600a0a90565b9060020b9060020b02908160020b918203611ec457565b93955f95909492916001600160a01b038082169085161015612bad57929391905f905b604051633850c7bd60e01b81526001600160a01b0391909116919060e081600481865afa9081156118f8575f91612b1b575b506001600160a01b0316156128fe575b50508660020b968715611f255780612617612622928a620d89e7190561257a565b98620d89e80561257a565b60405197610160890189811067ffffffffffffffff821117611dd75760405260018060a01b038616895260018060a01b03851660208a0152610bb860408a015260020b606089015260020b608088015260a087015260c08601528360e086015283610100860152306101208601524261014086015261014060405195634418b22b60e11b875260018060a01b03815116600488015260018060a01b03602082015116602488015262ffffff6040820151166044880152606081015160020b6064880152608081015160020b608488015260a081015160a488015260c081015160c488015260e081015160e488015261010081015161010488015260018060a01b03610120820151166101248801520151610144860152608085610164818760018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1918215610a3957849585936128ad575b506001600160801b036040519361279185611dff565b30855216602084015260018060a01b0316604083015260018060a01b03166060820152838352600160205260036040842060018060a01b038351166001600160601b0360a01b825416178155600181016001600160801b036020850151166001600160801b03198254161790556002810160018060a01b036040850151166001600160601b0360a01b8254161790550190606060018060a01b03910151166001600160601b0360a01b82541617905560018060a01b031691828252600460205260408220805490600160401b821015612899579161287c61105f836040969560018596018155611d52565b9055815260056020522080546001600160a01b0319169091179055565b634e487b7160e01b84526041600452602484fd5b955091506080853d6080116128f6575b816128ca60809383611e37565b81010312610a2d5760208551950151946001600160801b03861686036128f25794915f61277b565b8480fd5b3d91506128bd565b60405163313ce56760e01b808252916020919082826004816001600160a01b038d165afa9182156118f8575f92612ae4575b5060405193845282846004816001600160a01b038c165afa9384156118f8575f94612aad575b5015612a785761296590612569565b80600502906005820403611ec45761297d9092612569565b80600a0290600a820403611ec457905b81151580612a6f575b15612a3b5750906129a99160c01b611f1b565b6001808201808311611ec45760011c90825b838310612a1b57505050813b15610c225760405163f637731d60e01b81526001600160a01b039091166004820152905f908290602490829084905af180156118f857612a08575b806125f6565b612a13919650611deb565b5f945f612a02565b90919250612a3283612a2d8184611f1b565b611eb7565b821c91906129bb565b6064906040519062461bcd60e51b82526004820152600d60248201526c496e76616c696420707269636560981b6044820152fd5b50821515612996565b612a8190612569565b80600a0290600a820403611ec457612a999092612569565b80600502906005820403611ec4579061298d565b9093508281813d8311612add575b612ac58183611e37565b81010312610c2257612ad690611eff565b925f612956565b503d612abb565b9091508281813d8311612b14575b612afc8183611e37565b81010312610c2257612b0d90611eff565b905f612930565b503d612af2565b905060e0813d60e011612ba5575b81612b3660e09383611e37565b81010312610c22578051906001600160a01b0382168203610c225760c081612b636020612b9e9401611f39565b50612b706040820161255a565b50612b7d6060820161255a565b50612b8a6080820161255a565b50612b9760a08201611eff565b5001611e59565b505f6125e6565b3d9150612b29565b93906001906125b4565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b908151811015611d67570160200190565b604051906060820182811067ffffffffffffffff821117611dd757604052602a8252602082016040368237825115611d675760309053815160019060011015611d6757607860218401536029905b808211612c94575050612c505790565b606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015611d67576f181899199a1a9b1b9c1cb0b131b232b360811b901a612cc38486612be1565b5360041c918015611ec4575f190190612c40565b91929015612d395750815115612ceb575090565b3b15612cf45790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015612d4c5750805190602001fd5b60405162461bcd60e51b81529081906120609060048301612bb756fea2646970667358221220e7fd9f23ee5cf8c049d90dbaf61d9463ab525a28360968e91e65ec94a4e954e064736f6c634300081900332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d00000000000000000000000003a520b32c04bf3beef7beb72e919cf822ed34f100000000000000000000000042be4d6527829fefa1493e1fb9f3676d2425c3c1