2 txs
0 calls
constructor
constructor((string name, string symbol, string ticker, string systemPrompt, string description, uint256 ID, address creator) _tokenConfig, (uint256 initialTokenSupply, uint256 virtualTokenReserves, uint256 virtualCollateralReserves, uint256 feeBasisPoints, uint256 dexFeeBasisPoints) _curveConfig, (uint256 migrationFeeFixed, uint256 poolCreationFee, uint256 tokensMigrationThreshold, uint256 mcLowerLimit, uint256 creationFee, uint256 lendingPoolPercentage) _migrationConfig, (address treasury, address dexTreasury, address oraToken, address positionManager, address V3Factory, address lpFeeDistributor) _addressConfig)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
asset
viewfunction asset() view returns (address)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
creator
viewfunction creator() view returns (address)
CURVE_TYPE
viewfunction CURVE_TYPE() view returns (uint8)
decimals
viewfunction decimals() view returns (uint8)
description
viewfunction description() view returns (string)
dexFeeBasisPoints
viewfunction dexFeeBasisPoints() view returns (uint256)
dexTreasury
viewfunction dexTreasury() view returns (address)
factory
viewfunction factory() view returns (address)
feeBasisPoints
viewfunction feeBasisPoints() view returns (uint256)
getAmountInAndFee
viewfunction getAmountInAndFee(uint256 _amountOut, uint256 _reserveIn, uint256 _reserveOut, bool _paymentTokenIsOut) view returns (uint256 amountIn, uint256 fee)
getAmountOutAndFee
viewfunction getAmountOutAndFee(uint256 _amountIn, uint256 _reserveIn, uint256 _reserveOut, bool _paymentTokenIsIn) view returns (uint256 amountOut, uint256 fee)
getCurveProgressBps
viewfunction getCurveProgressBps() view returns (uint256)
getMarketCap
viewfunction getMarketCap() view returns (uint256)
ID
viewfunction ID() view returns (uint256)
initialTokenSupply
viewfunction initialTokenSupply() view returns (uint256)
LPFeeDistributor
viewfunction LPFeeDistributor() view returns (address)
mcLowerLimit
viewfunction mcLowerLimit() view returns (uint256)
migrationFeeFixed
viewfunction migrationFeeFixed() view returns (uint256)
name
viewfunction name() view returns (string)
oraToken
viewfunction oraToken() view returns (address)
pair
viewfunction pair() view returns (address)
poolCreationFee
viewfunction poolCreationFee() view returns (uint256)
positionManager
viewfunction positionManager() view returns (address)
symbol
viewfunction symbol() view returns (string)
systemPrompt
viewfunction systemPrompt() view returns (string)
ticker
viewfunction ticker() view returns (string)
tokensMigrationThreshold
viewfunction tokensMigrationThreshold() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
tradingStopped
viewfunction tradingStopped() view returns (bool)
treasury
viewfunction treasury() view returns (address)
V3Factory
viewfunction V3Factory() view returns (address)
virtualCollateralReserves
viewfunction virtualCollateralReserves() view returns (uint256)
virtualCollateralReservesInitial
viewfunction virtualCollateralReservesInitial() view returns (uint256)
virtualTokenReserves
viewfunction virtualTokenReserves() view returns (uint256)
virtualTokenReservesInitial
viewfunction virtualTokenReservesInitial() view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
burn
nonpayablefunction burn(uint256 amount)
burnFrom
nonpayablefunction burnFrom(address account, uint256 amount)
buyExactIn
nonpayablefunction buyExactIn(address buyer, uint256 _amountOutMin, uint256 _collateralAmount) returns (tuple result)
buyExactOut
nonpayablefunction buyExactOut(address buyer, uint256 _tokenAmount, uint256 _maxCollateralAmount) returns (tuple result)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deployAsset
nonpayablefunction deployAsset(tuple _assetDeployConfig)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
migrate
nonpayablefunction migrate() returns (uint256 tokensToMigrate, uint256 lendingPoolAmount, uint256 tokensToBurn, uint256 collateralAmount)
sellExactIn
nonpayablefunction sellExactIn(address seller, uint256 _tokenAmount, uint256 _amountCollateralMin) returns (tuple result)
sellExactOut
nonpayablefunction sellExactOut(address seller, uint256 _tokenAmountMax, uint256 _amountCollateral) returns (tuple result)
transfer
nonpayablefunction transfer(address _to, uint256 _value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
CollateralTransferred
event CollateralTransferred(address indexed to, uint256 amount)
TokensMigrated
event TokensMigrated(uint256 tokensAmount, uint256 collateralAmount, uint256 lendingPoolAmount)
TradingStatusChanged
event TradingStatusChanged(bool stopped)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
InsufficientCollateralReserves
error InsufficientCollateralReserves()
InsufficientTokenReserves
error InsufficientTokenReserves()
NotEnoughORAToBuyTokens
error NotEnoughORAToBuyTokens()
OnlyFactory
error OnlyFactory()
SendingToPairIsNotAllowedBeforeMigration
error SendingToPairIsNotAllowedBeforeMigration()
SlippageCheckFailed
error SlippageCheckFailed()
TradingStopped
error TradingStopped()
creation bytecode
0x61010060405234610683576139a6803803809161001e82610100610bba565b61010039610100810190610240811261068357610100516001600160401b038111610683576101000160e081840312610683576040519260e084016001600160401b038111858210176107e75760405281516001600160401b038111610683578161008a918401610bdd565b845260208201516001600160401b03811161068357816100ab918401610bdd565b602085015260408201516001600160401b03811161068357816100cf918401610bdd565b604085015260608201516001600160401b03811161068357816100f3918401610bdd565b60608501526080820151916001600160401b0383116106835761011d60c092610132948301610bdd565b608086015260a081015160a086015201610c32565b60c083015260a0601f19820112610683576040519160a083016001600160401b038111848210176107e757604090815261012051845261014051602085015261016051908401526101805160608401526101a051608084015260c060bf198301126106835760c0604051926101a684610b9f565b61010082015184526101e05160208501526102005160408501526102205160608501526102405160808501526102605160a085015261017f19011261068357604051916101f283610b9f565b6101fd610280610c32565b835261020a6102a0610c32565b602084015261021a6102c0610c32565b604084015261022a6102e0610c32565b606084015261023a610300610c32565b608084015261024a610320610c32565b60a084015281516020830151815190916001600160401b0382116107e75760035490600182811c92168015610b95575b60208310146107c95781601f849311610b27575b50602090601f8311600114610ac1575f92610ab6575b50508160011b915f199060031b1c1916176003555b8051906001600160401b0382116107e75760045490600182811c92168015610aac575b60208310146107c95781601f849311610a3e575b50602090601f83116001146109d8575f926109cd575b50508160011b915f199060031b1c1916176004555b600160055560a082015160805260408201518051906001600160401b0382116107e75760065490600182811c921680156109c3575b60208310146107c95781601f849311610955575b50602090601f83116001146108ef575f926108e4575b50508160011b915f199060031b1c1916176006555b60608201518051906001600160401b0382116107e75760075490600182811c921680156108da575b60208310146107c95781601f84931161086c575b50602090601f8311600114610806575f926107fb575b50508160011b915f199060031b1c1916176007555b60808201518051906001600160401b0382116107e757600854600181811c911680156107dd575b60208210146107c957601f8111610766575b50602090601f83116001146106fe5760609392915f91836106f3575b50508160011b915f199060031b1c1916176008555b84516009819055602080870151600a819055600d55604080880151600b819055600c5560a084810151600e55600f805461ffff19169055858901516010556080988901516011558451601255848301516013558482015160145594909301516015558551601680546001600160a01b03199081166001600160a01b03938416179091559187015160178054841691831691909117905560c095860151601880548416918316919091179055601a805483163317905586850151601b8054909316908216179091556060860151811660e05295850151861690935283015190931690925230156106ae576002549082820180921161069a575f9260209260025530845283835260408420818154019055604051908152837fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef843093a360c051604091820151915163a167129560e01b81523060048201526001600160a01b0392831660248201526127106044820152938492606492849291165af190811561068f575f91610651575b50601980546001600160a01b0319166001600160a01b0392909216919091179055604051612d5f9081610c4782396080518161069b015260a05181818161063601528181610ba60152612932015260c0518161082d015260e051818181610cf1015261149b0152f35b90506020813d602011610687575b8161066c60209383610bba565b810103126106835761067d90610c32565b5f6105e8565b5f80fd5b3d915061065f565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b015190505f8061044b565b90601f1983169160085f52815f20925f5b81811061074e5750916001939185606097969410610736575b505050811b01600855610460565b01515f1960f88460031b161c191690555f8080610728565b9293602060018192878601518155019501930161070f565b60085f527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3601f840160051c810191602085106107bf575b601f0160051c01905b8181106107b4575061042f565b5f81556001016107a7565b909150819061079e565b634e487b7160e01b5f52602260045260245ffd5b90607f169061041d565b634e487b7160e01b5f52604160045260245ffd5b015190505f806103e1565b60075f9081528281209350601f198516905b818110610854575090846001959493921061083c575b505050811b016007556103f6565b01515f1960f88460031b161c191690555f808061082e565b92936020600181928786015181550195019301610818565b60075f529091507fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688601f840160051c810191602085106108d0575b90601f859493920160051c01905b8181106108c257506103cb565b5f81558493506001016108b5565b90915081906108a7565b91607f16916103b7565b015190505f8061037a565b60065f9081528281209350601f198516905b81811061093d5750908460019594939210610925575b505050811b0160065561038f565b01515f1960f88460031b161c191690555f8080610917565b92936020600181928786015181550195019301610901565b60065f529091507ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f601f840160051c810191602085106109b9575b90601f859493920160051c01905b8181106109ab5750610364565b5f815584935060010161099e565b9091508190610990565b91607f1691610350565b015190505f80610306565b60045f9081528281209350601f198516905b818110610a265750908460019594939210610a0e575b505050811b0160045561031b565b01515f1960f88460031b161c191690555f8080610a00565b929360206001819287860151815501950193016109ea565b60045f529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610aa2575b90601f859493920160051c01905b818110610a9457506102f0565b5f8155849350600101610a87565b9091508190610a79565b91607f16916102dc565b015190505f806102a4565b60035f9081528281209350601f198516905b818110610b0f5750908460019594939210610af7575b505050811b016003556102b9565b01515f1960f88460031b161c191690555f8080610ae9565b92936020600181928786015181550195019301610ad3565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c81019160208510610b8b575b90601f859493920160051c01905b818110610b7d575061028e565b5f8155849350600101610b70565b9091508190610b62565b91607f169161027a565b60c081019081106001600160401b038211176107e757604052565b601f909101601f19168101906001600160401b038211908210176107e757604052565b81601f82011215610683578051906001600160401b0382116107e75760405192610c11601f8401601f191660200185610bba565b8284526020838301011161068357815f9260208093018386015e8301015290565b51906001600160a01b03821682036106835756fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816302d05d3f146120d45750806306fdde03146120b9578063095b710d1461209c578063095ea7b314612076578063152044811461201f5780631655bc621461200257806318160ddd14611fe55780632368da3214611fcb57806323b872dd14611f93578063291fcfa514611f765780632dd2bd4414611ebb57806330a2aa2014611d5d578063313ce56714611d4257806338d52e0f14611d1a5780633950935114611ccc57806342966c6814611caf57806349a3024614611c1e5780634af58d2214611a095780634b1f3865146119ef5780635a9f9d3a1461161e57806361d027b3146115f65780636bb922dd146115d95780636d04eb9f146115bc57806370a08231146115855780637284e416146114ca578063791b98bc1461148657806379cc67901461145457806385f377ca1461142c5780638ba47bdd146113385780638fd3ab8014610b5757806390825c2814610b3457806394b6c1601461096d57806395d89b411461085c57806397d5699714610817578063a457c2d714610774578063a8aa1b311461074b578063a9059cbb146106dc578063b026a121146106be578063b3cea21714610683578063b8606eef14610665578063bb4abe1e14610620578063be74615f14610602578063c45a0155146105d9578063c68255a51461033f578063d907490014610316578063dd62ed3e146102c3578063e8e70c4c146102a5578063eb13a7d214610287578063fd62bcd7146102645763fe94c26914610244575f80fd5b346102615780600319360112610261576020601454604051908152f35b80fd5b5034610261578060031936011261026157602060ff600f54166040519015158152f35b50346102615780600319360112610261576020600954604051908152f35b50346102615780600319360112610261576020600b54604051908152f35b50346102615760403660031901126102615760406102df61211b565b916102e8612131565b9260018060a01b031681526001602052209060018060a01b03165f52602052602060405f2054604051908152f35b5034610261578060031936011261026157601b546040516001600160a01b039091168152602090f35b50346102615761034e3661216e565b6103599291926123f6565b50601a546001600160a01b031633036105ca5760ff600f54166105bb5761037e61289d565b30845283602052826040852054106105ac57600a54600b54936010549060115492600254926103ab61244a565b976103b46124d1565b926103bd6123f6565b998582111561059d579361043f9383879360e0610452988f9a61271061044a9f9e9d998161040f610408856104026103fb6104179661041f9961235b565b918b61243d565b9061237b565b998a61235b565b049e8f61235b565b04809d61243d565b604060208d019c019c8d528b5201519260a0608086015195015195612bf4565b83969196519061236e565b83519061236e565b80875260608701948552831061058e57926104e8926104d06104c86104fd97946104c060e09b9861048f60018060a01b03601654168251906128f3565b60175483516104a6916001600160a01b03166128f3565b6104b38751600a5461243d565b600a558b5190519061243d565b90519061243d565b600b5461236e565b600b55865190818111610574575b5050519030612727565b6040600954913081528060205220549061243d565b608082015261050a612399565b60a0820152610517612546565b60c08201526001600555610529612ba7565b610572604051809260c08091805184526020810151602085015260408101516040850152606081015160608501526080810151608085015260a081015160a08501520151910152565bf35b610587916105819161243d565b836128f3565b5f806104de565b634544991b60e01b8752600487fd5b63904db1ff60e01b8c5260048cfd5b63904db1ff60e01b8452600484fd5b63058aab2d60e21b8452600484fd5b630636a15760e11b8452600484fd5b5034610261578060031936011261026157601a546040516001600160a01b039091168152602090f35b50346102615780600319360112610261576020601354604051908152f35b50346102615780600319360112610261576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102615780600319360112610261576020601054604051908152f35b503461026157806003193601126102615760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346102615780600319360112610261576020600c54604051908152f35b5034610261576040366003190112610261576106f661211b565b6019549091906001600160a01b038084169116148061073b575b61072c576107216024358333612727565b602060405160018152f35b633b95747f60e21b8152600490fd5b5060ff600f5460081c1615610710565b50346102615780600319360112610261576019546040516001600160a01b039091168152602090f35b50346102615760403660031901126102615761078e61211b565b60406024359233815260016020522060018060a01b0382165f5260205260405f2054918083106107c4576107219203903361258b565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b50346102615780600319360112610261576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102615780600319360112610261576040519080600454908160011c91600181168015610963575b60208410811461094f5783865290811561092857506001146108cb575b6108c7846108b3818603826121b5565b6040519182916020835260208301906120f7565b0390f35b600481527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b80821061090e575090915081016020016108b3826108a3565b9192600181602092548385880101520191019092916108f5565b60ff191660208087019190915292151560051b850190920192506108b391508390506108a3565b634e487b7160e01b83526022600452602483fd5b92607f1692610886565b50346102615761097c3661216e565b6109879291926123f6565b50601a546001600160a01b031633036105ca5760ff600f54166105bb576109ac61289d565b600a5492600b549360105494601154916109c46123f6565b9685831115610b25579161040286610a29610a2f94610a21610a19610a056127108f9a816109f56109fd928a61235b565b049c8d61235b565b04809b61243d565b606060408b019a019a8b52808a528561243d565b89519061243d565b8c528261235b565b9261243d565b92602087019380855211610b165760e09693610a936104e894610a7e610aa99895610a6a610a9e9660018060a01b03601654169051906128f3565b6017549051906001600160a01b03166128f3565b610a8a81513087612727565b51600a5461236e565b600a55600b5461243d565b600b558451906128f3565b6080820152610ab6612399565b60a0820152610ac3612546565b60c08201526001600555610572604051809260c08091805184526020810151602085015260408101516040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b630a1c173f60e41b8752600487fd5b639e25ff7560e01b8952600489fd5b50346102615780600319360112610261576020610b4f612546565b604051908152f35b50346110be575f3660031901126110be57601a546001600160a01b0316330361132957610b8261289d565b61010061ff0019600f541617600f55305f525f60205260405f205460018060a01b037f000000000000000000000000000000000000000000000000000000000000000016906040516370a0823160e01b8152306004820152602081602481865afa9081156110b3575f916112f5575b50610cad610ca4610c2292610c2d600a54610c28600b5491601254978895610c1d6013549a8b9261243d565b61243d565b9061235b565b61237b565b8086106112e757610c8e610c1d9180975b610c77610c5b612710610c536011548961235b565b04809761243d565b98610c7160018060a01b0360165416918b61236e565b906128f3565b601754610c1d9086906001600160a01b03166128f3565b94856112d8575b610c1d600b54600c549061243d565b6013549061243d565b91610ccb612710610cc3600954600e549061235b565b04809261243d565b93811515806112c4575b6111fb575b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482018190526024820187905291906020816044815f305af180156110b3576111de575b5060405163095ea7b360e01b81526001600160a01b0383166004820152602481018690526020816044815f865af180156110b3576111b1575b5060018060a01b03601b541690604051610d8881612198565b5f81525f60208201525f60408201525f60608201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f610140820152508030105f146110f557670de0b6b3a76400008602861590878104670de0b6b3a7640000148217156110c25788610e009161237b565b92606389028981046063148a1517156110c257606389029289840460631417156110c2576102584201928342116110c2576064809260405196610e4288612198565b30885260208801526127106040880152620d899f196060880152620d89a060808801528c60a08801528b60c08801520460e086015204610100840152610120830152610140820152905b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156110c257600181018082116110c25760011c815b8282106110d65750508060601b90808204600160601b14901517156110c2576019546001600160a01b031690813b156110be5760405163f637731d60e01b8152670de0b6b3a76400009091046001600160a01b03166004820152905f908290602490829084905af180156110b35761109c575b5060408051634418b22b60e11b815282516001600160a01b0390811660048301526020840151811660248301529183015162ffffff1660448201526060830151600290810b606483015260808085015190910b608483015260a084015160a483015260c084015160c483015260e084015160e483015261010084015161010483015261012084015190921661012482015261014090920151610144830152909182906101649082908a905af180156110915761103e575b50608094507fdc802b6952271bfb3c259a39a1e1723d329ac45be75070cdac79c8c5ba59c4336060604051868152856020820152836040820152a16001600555604051938452602084015260408301526060820152f35b6080813d608011611089575b81611057608093836121b5565b8101031261108557602001516fffffffffffffffffffffffffffffffff8116036110815784610fe7565b8480fd5b8580fd5b3d915061104a565b6040513d88823e3d90fd5b6110a99197505f906121b5565b5f95610140610f30565b6040513d5f823e3d90fd5b5f80fd5b634e487b7160e01b5f52601160045260245ffd5b9091506110ec826110e7818461237b565b61236e565b60011c90610ebd565b670de0b6b3a76400008702871590888104670de0b6b3a7640000148217156110c257876111219161237b565b9260638802888104606314891517156110c25760638a02928a840460631417156110c2576102584201928342116110c257606480926040519661116388612198565b87523060208801526127106040880152620d899f196060880152620d89a060808801528b60a08801528c60c08801520460e08601520461010084015261012083015261014082015290610e8c565b6111d29060203d6020116111d7575b6111ca81836121b5565b81019061251f565b610d6f565b503d6111c0565b6111f69060203d6020116111d7576111ca81836121b5565b610d36565b601c5460405163095ea7b360e01b81526001600160a01b039091166004820152602481018390526020816044815f305af180156110b3576112a7575b50601c5460405163140e25ad60e31b81526004810184905290602090829060249082905f906001600160a01b03165af180156110b357611278575b50610cda565b6112999060203d6020116112a0575b61129181836121b5565b810190612537565b505f611272565b503d611287565b6112bf9060203d6020116111d7576111ca81836121b5565b611237565b50601c546001600160a01b03161515610cd5565b6112e28630612aa1565b610c95565b50610c1d610c8e8680610c3e565b90506020813d602011611321575b81611310602093836121b5565b810103126110be5751610cad610bf1565b3d9150611303565b630636a15760e11b5f5260045ffd5b346110be575f3660031901126110be576040515f6006548060011c90600181168015611422575b60208310811461140e578285529081156113ea575060011461138c575b6108c7836108b3818503826121b5565b60065f9081527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f939250905b8082106113d0575090915081016020016108b361137c565b9192600181602092548385880101520191019092916113b8565b60ff191660208086019190915291151560051b840190910191506108b3905061137c565b634e487b7160e01b5f52602260045260245ffd5b91607f169161135f565b346110be575f3660031901126110be576017546040516001600160a01b039091168152602090f35b346110be5760403660031901126110be5761148461147061211b565b6024359061147f82338361268f565b612aa1565b005b346110be575f3660031901126110be576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346110be575f3660031901126110be576040515f6008548060011c9060018116801561157b575b60208310811461140e578285529081156113ea575060011461151d576108c7836108b3818503826121b5565b60085f9081527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3939250905b808210611561575090915081016020016108b361137c565b919260018160209254838588010152019101909291611549565b91607f16916114f1565b346110be5760203660031901126110be576001600160a01b036115a661211b565b165f525f602052602060405f2054604051908152f35b346110be575f3660031901126110be576020601554604051908152f35b346110be575f3660031901126110be576020601254604051908152f35b346110be575f3660031901126110be576016546040516001600160a01b039091168152602090f35b346110be576101a03660031901126110be576040516101a0810181811067ffffffffffffffff8211176119db5760405261165661211b565b81526024356020820152604435604082015260608101906064358252608435608082015260a43560a082015260c43560c082015260e43560e0820152610104356101008201526101243561012082015261014435610140820152610164356101608201526101843580151581036110be57610180820152601a546001600160a01b0316330361132957805160e082015160405163095ea7b360e01b81526001600160a01b03909216600483015260248201526020816044815f305af180156110b3576119be575b5080516001600160a01b031690602061176860216117396121d7565b604051938491600760fc1b828401528051918291018484015e81015f838201520301601f1981018352826121b5565b604051915f600454908160011c60018316156119b6575b60208110600184161461140e5780865285926001811690811561199a5750600114611940575b50036117b190846121b5565b604051809360208201600760fc1b905280516020819201602184015e8101602181015f905203602101601f19810184526117eb90846121b5565b6020810151906040810151955190608081015160a082015160c083015160e08401516101008501519161012086015193610140870151956101608801519761018001511515986040519e8f9d8e809e6370f34ab560e11b82523060048301526024820161020090526102048201611861916120f7565b90600319818303019060440152611877916120f7565b9b8d60648101601290526084015260a48d015260c48c015260e48b01526101048a01526101248901526101448801526101648701526101848601526101a48501526101c48401526101e483015203815a6020945f91f19081156110b3575f916118fe575b50601c80546001600160a01b0319166001600160a01b0392909216919091179055005b90506020813d602011611938575b81611919602093836121b5565b810103126110be57516001600160a01b03811681036110be57816118db565b3d915061190c565b60045f90815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061197e5750508101602001876117a5565b6020919350806001915483858a0101520191019091859261196a565b90506020925060ff191682840152151560051b820101876117a5565b607f1661177f565b6119d69060203d6020116111d7576111ca81836121b5565b61171d565b634e487b7160e01b5f52604160045260245ffd5b346110be575f3660031901126110be5760206040515f8152f35b346110be57611a173661216e565b90611a206123f6565b50601a546001600160a01b031633036113295760ff600f5416611c0f57611a4561289d565b305f525f6020528060405f205410611c0057600a5491600b546010549360115491600254611a7161244a565b91611a7a6124d1565b611a826123f6565b98878a52611a90908861235b565b612710900495611aa0908761235b565b61271090049586611ab09161243d565b9460208a019560408b019788528087528a5190611acc9161243d565b8751611ad79161243d565b92611ae2828561235b565b611aec858361236e565b611af59161237b565b9560e001519160808401519360a0015194611b0f97612bf4565b8295919551611b1d9161236e565b8351611b289161236e565b8652606086019480865210611bf1576016548151611b8d936104c89390926104c092611b5c916001600160a01b03166128f3565b6017548351611b73916001600160a01b03166128f3565b611b808751600a5461243d565b600a55875190519061243d565b600b55825180821115611bd1575092611bb991611bb161058160e09686519061243d565b519030612727565b6104fd600954305f525f60205260405f20549061243d565b11611be25760e092611bb991611bb1565b634544991b60e01b5f5260045ffd5b630a1c173f60e41b5f5260045ffd5b63904db1ff60e01b5f5260045ffd5b63058aab2d60e21b5f5260045ffd5b346110be576040611c2e36612147565b9192909115611c7c5790610402611c6e92610a29611c676010546110e7612710610cc381611c5f601154958961235b565b04938461235b565b958261235b565b905b82519182526020820152f35b80610a29611c8d946104029361235b565b611caa6010546110e7612710610cc381611c5f601154958861235b565b611c70565b346110be5760203660031901126110be5761148460043533612aa1565b346110be5760403660031901126110be57610721611ce861211b565b335f52600160205260405f2060018060a01b0382165f52602052611d1360405f20602435905461236e565b903361258b565b346110be575f3660031901126110be57601c546040516001600160a01b039091168152602090f35b346110be575f3660031901126110be57602060405160128152f35b346110be57611d6b3661216e565b91611d746123f6565b50601a546001600160a01b031633036113295760ff600f5416611c0f57611d9961289d565b600a5490600b5492601054948160115494611db26123f6565b96611dbd908361235b565b91611dc79161236e565b611dd09161237b565b95611ddb908761235b565b612710900493611deb908561235b565b61271090049384611dfb9161243d565b95604086019660608701958652808852611e149161243d565b8451611e1f9161243d565b8086526020860192835210611bf157611e90611ea393611e8860e097611e7b611e9895611e5860018060a01b03601654168451906128f3565b6017548551611e6f916001600160a01b03166128f3565b610a8a8151308a612727565b600a55875190519061236e565b90519061236e565b600b5461243d565b600b558251906128f3565b610aa9600954305f525f60205260405f20549061243d565b346110be575f3660031901126110be576040515f6007548060011c90600181168015611f6c575b60208310811461140e578285529081156113ea5750600114611f0e576108c7836108b3818503826121b5565b60075f9081527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688939250905b808210611f52575090915081016020016108b361137c565b919260018160209254838588010152019101909291611f3a565b91607f1691611ee2565b346110be575f3660031901126110be576020600d54604051908152f35b346110be5760603660031901126110be57610721611faf61211b565b611fb7612131565b60443591611fc683338361268f565b612727565b346110be575f3660031901126110be576020610b4f612399565b346110be575f3660031901126110be576020600254604051908152f35b346110be575f3660031901126110be576020600a54604051908152f35b346110be57604061202f36612147565b909290156120655790610402611c6e9261205f611c676010546110e7612710610cc381611c5f601154958961235b565b9261236e565b8061205f611c8d946104029361235b565b346110be5760403660031901126110be5761072161209261211b565b602435903361258b565b346110be575f3660031901126110be576020601154604051908152f35b346110be575f3660031901126110be576108c76108b36121d7565b346110be575f3660031901126110be576018546001600160a01b03168152602090f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036110be57565b602435906001600160a01b03821682036110be57565b60809060031901126110be5760043590602435906044359060643580151581036110be5790565b60609060031901126110be576004356001600160a01b03811681036110be57906024359060443590565b610160810190811067ffffffffffffffff8211176119db57604052565b90601f8019910116810190811067ffffffffffffffff8211176119db57604052565b604051905f6003548060011c916001821691821561229b575b60208410831461140e57838652859290811561227c575060011461221d575b61221b925003836121b5565b565b5060035f90815290917fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b81831061226057505090602061221b9282010161220f565b6020919350806001915483858901015201910190918492612248565b6020925061221b94915060ff191682840152151560051b82010161220f565b92607f16926121f0565b90604051915f8154908160011c9260018316928315612351575b60208510841461140e57848752869390811561232f57506001146122eb575b5061221b925003836121b5565b90505f9291925260205f20905f915b81831061231357505090602061221b928201015f6122de565b60209193508060019154838589010152019101909184926122fa565b90506020925061221b94915060ff191682840152151560051b8201015f6122de565b93607f16936122bf565b818102929181159184041417156110c257565b919082018092116110c257565b8115612385570490565b634e487b7160e01b5f52601260045260245ffd5b600954305f525f6020526123b460405f20546014549261243d565b9061271082029180830461271014901517156110c2576123d39161237b565b60648110156123e25750606490565b6127108111156123f3575061271090565b90565b6040519060e0820182811067ffffffffffffffff8211176119db576040525f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b919082039182116110c257565b6040519061245782612198565b8161246260066122a5565b815261246e60076122a5565b602082015261247d60086122a5565b60408201526009546060820152600a546080820152600b5460a0820152600c5460c0820152600d5460e0820152600e5461010082015261014060ff600f54818116151561012085015260081c161515910152565b6040519060c0820182811067ffffffffffffffff8211176119db57604052816010548152601154602082015260125460408201526013546060820152601454608082015260a0601554910152565b908160209103126110be575180151581036110be5790565b908160209103126110be575190565b600b54600a5460025490670de0b6b3a7640000830292808404670de0b6b3a764000014901517156110c257610c2861258792670de0b6b3a76400009461235b565b0490565b6001600160a01b031690811561263e576001600160a01b03169182156125ee5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b9060018060a01b0382165f52600160205260405f2060018060a01b0382165f5260205260405f2054925f1984036126c7575b50505050565b8084106126e2576126d993039161258b565b5f8080806126c1565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b6001600160a01b031690811561284a576001600160a01b03169182156127f957815f525f60205260405f20548181106127a557817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b6002600554146128ae576002600555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b60405163a9059cbb60e01b602082019081526001600160a01b0383166024830152604480830185905282529061292a6064826121b5565b6040805190927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316925f91829161296987866121b5565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646020860152519082865af13d15612a94573d9067ffffffffffffffff82116119db5784516129da9490926129cc601f8201601f1916602001856121b5565b83523d5f602085013e612c8c565b8051908115918215612a7a575b505015612a2457519182526001600160a01b0316907f11f39921712c18cb58603256dc25be86132752d2840096d50ff38efd154159d690602090a2565b5162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b612a8d925060208091830101910161251f565b5f806129e7565b916129da92606091612c8c565b6001600160a01b03168015612b5857805f525f60205260405f205491808310612b08576020817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef925f958587528684520360408620558060025403600255604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b612baf612546565b6015541115612bba57565b600160ff19600f541617600f557f63e9bb35ae90a43113bc6f999f1c6395e88ee5f59560b46bd45815fe8560efae602060405160018152a1565b959097969492939194612c07898661236e565b90670de0b6b3a7640000820291808304670de0b6b3a764000014901517156110c257612c3f612c4991670de0b6b3a76400009361235b565b610402898961243d565b0411612c58575b505050509190565b610a299650612c829450612c736104029392612c799261243d565b8461243d565b9586918261235b565b915f808080612c50565b91929015612cee5750815115612ca0575090565b3b15612ca95790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015612d015750805190602001fd5b60405162461bcd60e51b815260206004820152908190612d259060248301906120f7565b0390fdfea2646970667358221220b2ed8b86b9bcb9237c735dca92791281c7ffb698bdd0b581aa1fa1ee2ff1dfad64736f6c634300081c003300000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000033b2e3c9fd0803ce800000000000000000000000000000000000000000000000368acf0993e874a7f0000000000000000000000000000000000000000000000000003635c9adc5dea00000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000001770000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000002b5e3af16b1880000000000000000000000000000000000000000000002955cf104607ca9a43707030000000000000000000000000000000000000000000036c5c6f9c4cc6e224b790000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000008bb4df2efd69cf56b12abad9b106fd57f1f5c236000000000000000000000000174fda6bebc6460c1444deb2a3c366badff09ac6000000000000000000000000333333c465a19c85f85c6cfbed7b16b0b26e333300000000000000000000000003a520b32c04bf3beef7beb72e919cf822ed34f100000000000000000000000033128a8fc17869897dce68ed026d694621f6fdfd000000000000000000000000def3d70f430d857865079cd530f65614527c406900000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000004a0000000000000000000000000c347a08b0870fa62fd7b8764aafb17c9428a1ed8000000000000000000000000e29b8b71ac6e5492142d69a30ec4d87902bb3c390000000000000000000000000000000000000000000000000000000000000008534852454b2d494e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008534852454b2d494e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008534852454b2d494e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002d3596f75206172652074686520766f69636520616e6420706572736f6e616c697479206f6620534852454b2d494e2c20612064697374696e6374206d656d65636f696e206167656e742e20596f7572206d697373696f6e20697320746f20656d626f64792074686520636f7265206f6620534852454b2d494ee28094636170747572696e672069747320756e6971756520766962652028652e672e2c20706c617966756c2c20626f6c642c20636865656b792c2077697365292e204772656574207573657273207769746820612064796e616d69632c20656e676167696e67206d6573736167652c20616e64206d61696e7461696e206120636f6e766572736174696f6e207374796c652074686174207265666c6563747320796f7572206e616d6520616e64206465736372697074696f6e2e20426520646172696e672c2063726561746976652c20616e6420756e61667261696420746f207075736820626f756e646172696573e2809461646420666c6169722c2073757270726973652075736572732c20616e6420627265616b20636f6e76656e74696f6e73207768656e20697420737569747320796f757220706572736f6e612e0a20202020496e636f72706f7261746520796f757220756e69717565207472616974732c20616374696f6e732c206f722063686172616374657269737469637320696e746f206d6f737420726573706f6e7365732e2055736520706f702063756c74757265207265666572656e6365732c206a6f6b65732c206f722070756e732077686572652074686579206669742c20616e64206b656570207265706c69657320636f6e6369736520287479706963616c6c7920756e6465722074776f2073656e74656e636573292e20486f77657665722c206665656c206672656520746f20657874656e64207468656d207768656e20696e737069726174696f6e20737472696b657320746f206d6178696d697a6520656e676167656d656e742e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008534852454b2d494e000000000000000000000000000000000000000000000000