0 txs
44.4k calls
constructor
constructor()
functions
allTokens
viewfunction allTokens() view returns (address[])
allTradingTokens
viewfunction allTradingTokens() view returns (address[])
applicationThreshold
viewfunction applicationThreshold() view returns (uint256)
assetToken
viewfunction assetToken() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
FACTORY_ROLE
viewfunction FACTORY_ROLE() view returns (bytes32)
getAgentAddresses
viewfunction getAgentAddresses(bytes key) view returns (address, address, address)
getApplication
viewfunction getApplication(uint256 proposalId) view returns (tuple)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
LAUNCH_ROLE
viewfunction LAUNCH_ROLE() view returns (bytes32)
paused
viewfunction paused() view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
tokenImplementation
viewfunction tokenImplementation() view returns (address)
totalAgents
viewfunction totalAgents() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
veTokenImplementation
viewfunction veTokenImplementation() view returns (address)
WITHDRAW_ROLE
viewfunction WITHDRAW_ROLE() view returns (bytes32)
executeApplication
nonpayablefunction executeApplication(uint256 id, bytes32 salt) returns (address)
executeFactoryApplication
nonpayablefunction executeFactoryApplication(uint256 id, uint256 lpSupply) returns (address)
executeFactoryApplicationSalt
nonpayablefunction executeFactoryApplicationSalt(uint256 id, uint256 lpSupply, bytes32 salt) returns (address agent)
grantLaunchRole
nonpayablefunction grantLaunchRole(address account)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initFromApplication
nonpayablefunction initFromApplication(string name, string symbol, uint256 coolDownPeriod, uint256 applicationThreshold_, address creator) returns (uint256)
initialize
nonpayablefunction initialize(address _launchFactory, address tokenImplementation_, address veTokenImplementation_, address stakeImplementation_, address assetToken_, uint256 applicationThreshold_, uint256 nextId_)
mintAgentToken
nonpayablefunction mintAgentToken(address agentToken, address to, uint256 amount)
pause
nonpayablefunction pause()
proposeAgent
nonpayablefunction proposeAgent(string name, string symbol, uint256 _coolDownPeriod) returns (uint256)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setApplicationThreshold
nonpayablefunction setApplicationThreshold(uint256 newThreshold)
setImplementations
nonpayablefunction setImplementations(address token, address veToken, address stakeToken)
setParams
nonpayablefunction setParams(address newRouter, address newTokenAdmin)
setProjectTaxRecipient
nonpayablefunction setProjectTaxRecipient(address agentToken, address projectTaxRecipient)
setProjectTaxRecipient
nonpayablefunction setProjectTaxRecipient(address agentToken, uint16 projectBuyTaxBasisPoints, uint16 projectSellTaxBasisPoints)
setTokenParams
nonpayablefunction setTokenParams(uint256 lpSupply, uint256 projectBuyTaxBasisPoints, uint256 projectSellTaxBasisPoints, address projectTaxRecipient)
unpause
nonpayablefunction unpause()
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw(uint256 id)
withdrawAgentTax
nonpayablefunction withdrawAgentTax(address agentToken)
withdrawLp
nonpayablefunction withdrawLp(address uniswapV2Pair)
events
ApplicationThresholdUpdated
event ApplicationThresholdUpdated(uint256 newThreshold)
ImplContractsUpdated
event ImplContractsUpdated(address token, address veToken)
Initialized
event Initialized(uint64 version)
NewApplication
event NewApplication(uint256 id)
NewPersona
event NewPersona(address token, address veToken, address lp)
ParamsSet
event ParamsSet(address newRouter, address newTokenAdmin)
Paused
event Paused(address account)
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)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
AgentAlreadyExists
error AgentAlreadyExists()
EnforcedPause
error EnforcedPause()
ERC1167FailedCreateClone
error ERC1167FailedCreateClone()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a08060405234620000d157306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c16620000c257506001600160401b036002600160401b0319828216016200007c575b604051613c739081620000d682396080518181816112f601526117440152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80806200005c565b63f92ee8a960e01b8152600490fd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a71461242c5750806304a0fb17146124055780631083f761146123d157806311de87df1461229d5780631e7b0fb0146122785780631f2f4bfd14612104578063248a9ca3146120cb5780632b8c637a146120035780632c87eedd14611d6c5780632da8ab3e14611c775780632e1a7d4d14611b0d5780632f2ff15d14611ac35780632f3a3d5d14611a8e57806330b078b714611a0357806336568abe146119bb578063374e1377146119555780633f4ba83a146118de5780634f1ef286146117065780634fec19681461134d57806352d1902d146112e35780635c975abb146112b45780636ff97f1d1461121d5780637f6594a81461115057806384269e00146110f15780638456cb591461108a5780638c82668e1461101857806391d1485414610fc25780639256345014610f9a5780639300d23814610e3f5780639cbe0bac14610e0a578063a217fddf14610dee578063aafa2bc714610d67578063ad3cb1cc14610cf7578063b2b3288714610b70578063b33f9527146108a7578063bd1cf2581461084d578063c505371214610823578063d547741f146107d5578063ddf44275146107ab578063e02023a114610783578063e3bcd6fc1461064c5763f80ac66a146101ec575f80fd5b34610649576060366003190112610649576004356001600160401b0381116106455761021c9036906004016125fc565b906024356001600160401b0381116106455761023c9036906004016125fc565b6102446137ec565b5f80516020613bfe833981519152549160018060a01b035f80516020613b7e83398151915254166040516370a0823160e01b8152336004820152602081602481855afa8015610604578590849061060f575b6102a2925010156128e5565b604051636eb1769f60e11b8152602081806102c130336004840161292c565b0381855afa9081156106045790859184916105c9575b50916102e8826102f1941015612946565b30903390613816565b5f80516020613b3e8339815191529283549361030c8561299d565b90556040519461031b8661258a565b855260208501928352816040860152606085015233608085015260443560a08501524360c08501528281525f80516020613b9e833981519152602052604081209184518051906001600160401b0382116105b5576103838261037d8754612731565b87612810565b602090601f831160011461054d576103b292918591836104c0575b50508160011b915f199060031b1c19161790565b83555b518051906001600160401b038211610539576103e1826103d86001870154612731565b60018701612810565b602090601f83116001146104cb5761040f92918491836104c05750508160011b915f199060031b1c19161790565b60018301555b60408401519060038210156104ac575060c0602094610439600693600286016128cd565b6060810151600385015560808101516004850180546001600160a01b0319166001600160a01b039290921691909117905560a0810151600585015501519101556040518181527f0ff47c4a3dc48719ecfd1876116e80d7d76ec7cb67248ae49449f9104747af29908390a1604051908152f35b634e487b7160e01b81526021600452602490fd5b015190505f8061039e565b9190600185018452602084209084935b601f198416851061051e576001945083601f19811610610506575b505050811b016001830155610415565b01515f1960f88460031b161c191690555f80806104f6565b818101518355602094850194600190930192909101906104db565b634e487b7160e01b83526041600452602483fd5b9190858552602085209085935b601f198416851061059a576001945083601f19811610610582575b505050811b0183556103b5565b01515f1960f88460031b161c191690555f8080610575565b8181015183556020948501946001909301929091019061055a565b634e487b7160e01b84526041600452602484fd5b9150506020813d6020116105fc575b816105e5602093836125c0565b810103126105f8575184906102e86102d7565b5f80fd5b3d91506105d8565b6040513d85823e3d90fd5b50506020813d60201161063d575b8161062a602093836125c0565b810103126105f857846102a29151610296565b3d915061061d565b5080fd5b80fd5b50346106495760603660031901126106495761066661247f565b60243561ffff918282168092036105f8576044359283168093036105f85761068c612ad6565b6001600160a01b0316906106a1821515612665565b61271080821161074757831161070a578392823b1561070557604484928360405195869485936324daca4d60e21b8552600485015260248401525af180156106fa576106ea5750f35b6106f390612577565b6106495780f35b6040513d84823e3d90fd5b505050fd5b60405162461bcd60e51b815260206004820152601560248201527453656c6c207461782065786365656473203130302560581b6044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273427579207461782065786365656473203130302560601b6044820152606490fd5b503461064957806003193601126106495760206040515f80516020613abe8339815191528152f35b503461064957806003193601126106495760205f80516020613bfe83398151915254604051908152f35b50346106495760403660031901126106495761081f6004356107f5612495565b908084525f80516020613b5e83398151915260205261081a6001604086200154612b74565b61376d565b5080f35b503461064957806003193601126106495760205f80516020613a5e83398151915254604051908152f35b5034610649576020366003190112610649577fcfa33021ab0175831433b2f3bd8eeb24a22f5ae53ca0e660a246811754f9e34a602060043561088d612ad6565b805f80516020613bfe83398151915255604051908152a180f35b50346106495760e0366003190112610649576108c161247f565b6108c9612495565b6108d16124d7565b906108da6124ab565b926108e36124c1565b60a435907ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009586549560ff8760401c1615966001600160401b03811680159081610b68575b6001149081610b5e575b159081610b55575b50610b435767ffffffffffffffff198116600117895587610b24575b5061095f6138e4565b6109676138e4565b5f80516020613bbe833981519152805460ff191690556109856138e4565b61098d6138e4565b6001600160a01b0391858316151580610b19575b80610b0e575b80610b03575b6109b690612a19565b8415610aa9576109d4610a14926109cf610a5b996129bf565b6129ec565b7f12bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd0780546001600160a01b0319166001600160a01b03909216919091179055565b5f80516020613b7e83398151915280546001600160a01b031916919092161790555f80516020613bfe8339815191525560c4355f80516020613b3e833981519152556135e0565b50610a6533613673565b50610a6e575080f35b805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a180f35b60405162461bcd60e51b815260206004820152602c60248201527f4170706c69636174696f6e207468726573686f6c64206d75737420626520677260448201526b06561746572207468616e20360a41b6064820152608490fd5b5083831615156109ad565b5082821615156109a7565b5082871615156109a1565b68ffffffffffffffffff1916680100000000000000011788555f610956565b60405163f92ee8a960e01b8152600490fd5b9050155f61093a565b303b159150610932565b899150610928565b50346106495760208060031936011261064557610b8b61247f565b610b93612ad6565b6001600160a01b0316908115610cbc576040516370a0823160e01b80825230600483015292908281602481855afa908115610cb1578591610c84575b5015610c44576040519283523060048401528183602481845afa918215610c39578492610c07575b50610c0492503390613508565b80f35b90915082813d8311610c32575b610c1e81836125c0565b810103126105f857610c049151905f610bf7565b503d610c14565b6040513d86823e3d90fd5b60405162461bcd60e51b81526004810183905260186024820152774e6f204c5020746f6b656e7320746f20776974686472617760401b6044820152606490fd5b90508281813d8311610caa575b610c9b81836125c0565b810103126105f857515f610bcf565b503d610c91565b6040513d87823e3d90fd5b6064906040519062461bcd60e51b825260048201526014602482015273496e76616c69642070616972206164647265737360601b6044820152fd5b503461064957806003193601126106495760405160408101908082106001600160401b03831117610d5357610d4f9160405260058152640352e302e360dc1b602082015260405191829160208352602083019061250e565b0390f35b634e487b7160e01b5f52604160045260245ffd5b503461064957602036600319011261064957610d8161247f565b335f9081527fae397ad4942fd55c39428db5ea3ac85cc8592b20d92437b6ec53a8b6ff39d42d60205260409020545f80516020613b1e8339815191529060ff1615610dd0575061081f90613546565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b5034610649578060031936011261064957602090604051908152f35b50346106495780600319360112610649575f80516020613a9e833981519152546040516001600160a01b039091168152602090f35b503461064957606036600319011261064957610e5961247f565b610e61612495565b610e696124d7565b91610e72612ad6565b6001600160a01b038181169383821691858314610f4957811615610ef957610ec8610eda927f20d9a5a159df5e444a69a0ce82e49cd62692bca85e74f6cabc39b1bf0a1276969615159081610eef575b50612a19565b610ed1836129bf565b6109d4846129ec565b610ee96040519283928361292c565b0390a180f35b905015155f610ec2565b60405162461bcd60e51b815260206004820152602260248201527f5374616b6520746f6b656e2063616e6e6f74206265207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f546f6b656e20616e64207665546f6b656e2063616e6e6f74206265207468652060448201526373616d6560e01b6064820152608490fd5b503461064957806003193601126106495760206040515f80516020613a7e8339815191528152f35b5034610649576040366003190112610649576040610fde612495565b9160043581525f80516020613b5e833981519152602052209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b5034610649576020366003190112610649576004356001600160401b038111610645576110499036906004016125fc565b6001600160a01b03610d4f81600161106085612a59565b01541691600261107b8261107387612a59565b541695612a59565b01541660405193849384612642565b50346106495780600319360112610649576110a3612ad6565b6110ab6137ec565b5f80516020613bbe833981519152600160ff198254161790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b50346106495760403660031901126106495761110b612b2c565b602061113e604051828101903360601b825242603482015260348152611130816125a5565b5190206024356004356126af565b6040516001600160a01b039091168152f35b5034610649576040366003190112610649577fc96f5d17220fb5b501163ef6b6f881d9fc1c846402f3227fc3dc47992880c4cb61118b61247f565b611193612495565b9061119c612ad6565b6001600160a01b0381811680151580611212575b6111b990612a19565b60018060a01b0319907f12bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd0590828254161790555f80516020613afe83398151915291841690825416179055610ee96040519283928361292c565b5083821615156111b0565b50346106495780600319360112610649576040515f80516020613a5e83398151915280548083529083526020808301937f16e7b33ec3b00f01ee6f0eb2c1eab5c7a0c0f538c1122219d0d7cedd505b041f92915b82821061129457610d4f85611288818903826125c0565b60405191829182612533565b83546001600160a01b031686529485019460019384019390910190611271565b5034610649578060031936011261064957602060ff5f80516020613bbe83398151915254166040519015158152f35b50346106495780600319360112610649577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361133b5760206040515f80516020613ade8339815191528152f35b60405163703e46dd60e11b8152600490fd5b50346106495760a0366003190112610649576004356001600160401b0381116106455761137e9036906004016125fc565b906024356001600160401b0381116106455761139e9036906004016125fc565b906044356064356113ad6124c1565b906113b66137ec565b6113be612b2c565b5f80516020613b7e833981519152546040516370a0823160e01b81523360048201526001600160a01b0390911690602081602481855afa80156116c557839087906116d0575b611410925010156128e5565b604051636eb1769f60e11b81526020818061142f30336004840161292c565b0381855afa80156116c5578390879061168f575b61144f92501015612946565b831561163a57816114639130903390613816565b5f80516020613b3e8339815191529485549561147e8761299d565b90556040519661148d8861258a565b87526020870152836040870152606086015260018060a01b0316608085015260a08401524360c08401528181525f80516020613b9e833981519152602052604081209083518051906001600160401b038211610539576114f7826114f18654612731565b86612810565b602090601f83116001146115d25761152592918491836104c05750508160011b915f199060031b1c19161790565b82555b60208401518051906001600160401b0382116105395761154f826103d86001870154612731565b602090601f831160011461157d5761040f92918491836104c05750508160011b915f199060031b1c19161790565b9190600185018452602084209084935b601f19841685106115b7576001945083601f1981161061050657505050811b016001830155610415565b8181015183556020948501946001909301929091019061158d565b9190848452602084209084935b601f198416851061161f576001945083601f19811610611607575b505050811b018255611528565b01515f1960f88460031b161c191690555f80806115fa565b818101518355602094850194600190930192909101906115df565b60405162461bcd60e51b815260206004820152602760248201527f436f6f6c20646f776e20706572696f64206d75737420626520677265617465726044820152660207468616e20360cc1b6064820152608490fd5b50506020813d6020116116bd575b816116aa602093836125c0565b810103126105f8578261144f9151611443565b3d915061169d565b6040513d88823e3d90fd5b50506020813d6020116116fe575b816116eb602093836125c0565b810103126105f857826114109151611404565b3d91506116de565b5060403660031901126106495761171b61247f565b6024356001600160401b0381116118da5761173a9036906004016125fc565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081163081149081156118bf575b5061133b5761177d612ad6565b8216916040516352d1902d60e01b8152602081600481875afa859181611887575b506117bc57604051634c9c8ce360e01b815260048101859052602490fd5b9284935f80516020613ade8339815191529081810361186f5750823b156118565780546001600160a01b0319168217905560405184917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a283511561183a57508083602061081f95519101845af461183461398b565b916139ba565b9250505034611847575080f35b63b398979f60e01b8152600490fd5b604051634c9c8ce360e01b815260048101839052602490fd5b60249060405190632a87526960e21b82526004820152fd5b9091506020813d6020116118b7575b816118a3602093836125c0565b810103126118b35751905f61179e565b8580fd5b3d9150611896565b9050815f80516020613ade833981519152541614155f611770565b8280fd5b50346106495780600319360112610649576118f7612ad6565b5f80516020613bbe833981519152805460ff8116156119435760ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a180f35b604051638dfc202b60e01b8152600490fd5b5034610649576020366003190112610649578061197061247f565b611978612ad6565b6001600160a01b031661198c811515612665565b803b156119b857818091600460405180948193636fd1078560e11b83525af180156106fa576106ea5750f35b50fd5b5034610649576040366003190112610649576119d5612495565b336001600160a01b038216036119f15761081f9060043561376d565b60405163334bd91960e11b8152600490fd5b50346106495780600319360112610649576040515f80516020613bde83398151915280548083529083526020808301937fca83e170a2f808bfc3863c724196f6d8fd5a6c01255fb6c9d22554efbd71e74792915b828210611a6e57610d4f85611288818903826125c0565b83546001600160a01b031686529485019460019384019390910190611a57565b50346106495780600319360112610649575f80516020613a3e833981519152546040516001600160a01b039091168152602090f35b50346106495760403660031901126106495761081f600435611ae3612495565b908084525f80516020613b5e833981519152602052611b086001604086200154612b74565b6136fd565b5034610649576020366003190112610649575f80516020613c1e8339815191528054611b3c60ff8216156126f4565b60ff1990811660011782556004803584525f80516020613b9e83398151915260205260408420908101546001600160a01b039081163381148015611c39575b611b849061284a565b600283019182549260ff84166003811015611c2557611ba39015612885565b6006850154431115611be0576002866003611bd89701958a87549755161790555f80516020613b7e8339815191525416613508565b815416905580f35b60405162461bcd60e51b815260206004820152601e60248201527f4170706c69636174696f6e206973206e6f74206d6174757265642079657400006044820152606490fd5b634e487b7160e01b89526021600452602489fd5b505f80516020613abe83398151915286525f80516020613b5e83398151915260205260408620335f52602052611b8460ff60405f2054169050611b7b565b503461064957604036600319011261064957602090600435905f80516020613c1e833981519152611d22815493611cb160ff8616156126f4565b600160ff199586161783558084525f80516020613b9e833981519152865260408420600401546001600160a01b03949085163314908115611d31575b50611cf79061284a565b7f12bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd0a5460243591612c22565b92815416905560405191168152f35b604091505f80516020613abe83398151915281525f80516020613b5e833981519152885220335f528652611cf760ff60405f20541690611ced565b503461064957608036600319011261064957604435906024803590600435611d926124ab565b611d9a612ad6565b8115611fce576001600160a01b0316908115611f9257612710808511159081611f87575b5015611f4f577f12bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd0a556040519460209384870152604086015260608501526060845260808401906001600160401b039185811083821117611f3b576040528451918211611f2957507f12bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd0c91611e518354612731565b601f8111611ef0575b5080601f8311600114611e8f575081908495611e8a9495926104c05750508160011b915f199060031b1c19161790565b905580f35b90601f198316958486528286209286905b888210611ed857505083600195969710611ec0575b505050811b01905580f35b01515f1960f88460031b161c191690555f8080611eb5565b80600185968294968601518155019501930190611ea0565b611f1990845f52825f20601f850160051c810191848610611f1f575b601f0160051c01906127fa565b5f611e5a565b9091508190611f0c565b634e487b7160e01b8452604160045283fd5b50634e487b7160e01b5f9081526041600452fd5b60405162461bcd60e51b81526020600482015260118185015270496e76616c69642074617820726174657360781b6044820152606490fd5b90508611155f611dbe565b60405162461bcd60e51b81526020600482015260158185015274125b9d985b1a59081d185e081c9958da5c1a595b9d605a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e818501526d496e76616c696420737570706c7960901b6044820152606490fd5b50346106495760403660031901126106495761201d61247f565b612025612495565b9061202e612ad6565b6001600160a01b0390811691612045831515612665565b16908115612086578291813b15612082578291602483926040519485938492639808751d60e01b845260048401525af180156106fa576106ea5750f35b5050fd5b60405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642074617820726563697069656e7420616464726573730000006044820152606490fd5b5034610649576020366003190112610649576001604060209260043581525f80516020613b5e8339815191528452200154604051908152f35b503461064957602080600319360112610645578160c06040516121268161258a565b606081526060848201528260408201528260608201528260808201528260a0820152015260043582525f80516020613b9e833981519152815260408220604051916121708361258a565b604051612188816121818186612769565b03826125c0565b8352604051916121a68361219f8160018501612769565b03846125c0565b81840192835260ff60028201541692604085019360038110156122645784526003820154906060860191825260018060a01b0391612234836004860154169260808901938452612221600660058801549760a08c0198895201549760c08b0198895260e06040519b828d5251918c01526101008b019061250e565b9051898203601f190160408b015261250e565b95516003811015611c25578798506060880152516080870152511660a08501525160c08401525160e08301520390f35b634e487b7160e01b5f52602160045260245ffd5b503461064957606036600319011261064957602061113e6044356024356004356126af565b50346105f85760603660031901126105f8576122b761247f565b6122bf612495565b6044356122ca612ad6565b6001600160a01b03928316926122e1841515612665565b82161561239057801561234b57823b156105f8576040516340c10f1960e01b81526001600160a01b039290921660048301526024820152905f908290604490829084905af1801561234057612334575080f35b61233e9150612577565b005b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606490fd5b60405162461bcd60e51b8152602060048201526019602482015278496e76616c696420726563697069656e74206164647265737360381b6044820152606490fd5b346105f8575f3660031901126105f8575f80516020613b7e833981519152546040516001600160a01b039091168152602090f35b346105f8575f3660031901126105f85760206040515f80516020613b1e8339815191528152f35b346105f85760203660031901126105f8576004359063ffffffff60e01b82168092036105f857602091637965db0b60e01b811490811561246e575b5015158152f35b6301ffc9a760e01b14905083612467565b600435906001600160a01b03821682036105f857565b602435906001600160a01b03821682036105f857565b606435906001600160a01b03821682036105f857565b608435906001600160a01b03821682036105f857565b604435906001600160a01b03821682036105f857565b5f5b8381106124fe5750505f910152565b81810151838201526020016124ef565b90602091612527815180928185528580860191016124ed565b601f01601f1916010190565b60209060206040818301928281528551809452019301915f5b82811061255a575050505090565b83516001600160a01b03168552938101939281019260010161254c565b6001600160401b038111610d5357604052565b60e081019081106001600160401b03821117610d5357604052565b606081019081106001600160401b03821117610d5357604052565b90601f801991011681019081106001600160401b03821117610d5357604052565b6001600160401b038111610d5357601f01601f191660200190565b81601f820112156105f857803590612613826125e1565b9261262160405194856125c0565b828452602083830101116105f857815f926020809301838601378301015290565b6001600160a01b0391821681529181166020830152909116604082015260600190565b1561266c57565b60405162461bcd60e51b815260206004820152601b60248201527a496e76616c6964206167656e7420746f6b656e206164647265737360281b6044820152606490fd5b916126eb906126bc612b2c565b5f80516020613c1e833981519152928354946126db60ff8716156126f4565b60ff199586166001178555612c22565b91815416905590565b156126fb57565b60405162461bcd60e51b815260206004820152600e60248201526d31b0b73737ba103932b2b73a32b960911b6044820152606490fd5b90600182811c9216801561275f575b602083101461274b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691612740565b80545f939261277782612731565b918282526020936001916001811690815f146127db575060011461279d575b5050505050565b90939495505f92919252835f2092845f945b8386106127c757505050500101905f80808080612796565b8054858701830152940193859082016127af565b60ff19168685015250505090151560051b010191505f80808080612796565b818110612805575050565b5f81556001016127fa565b9190601f811161281f57505050565b612848925f5260205f20906020601f840160051c83019310611f1f57601f0160051c01906127fa565b565b1561285157565b60405162461bcd60e51b815260206004820152600c60248201526b2737ba10383937b837b9b2b960a11b6044820152606490fd5b1561288c57565b60405162461bcd60e51b81526020600482015260196024820152784170706c69636174696f6e206973206e6f742061637469766560381b6044820152606490fd5b9060038110156122645760ff80198354169116179055565b156128ec57565b60405162461bcd60e51b815260206004820152601860248201527724b739bab33334b1b4b2b73a1030b9b9b2ba103a37b5b2b760411b6044820152606490fd5b6001600160a01b0391821681529116602082015260400190565b1561294d57565b60405162461bcd60e51b815260206004820152602260248201527f496e73756666696369656e7420617373657420746f6b656e20616c6c6f77616e604482015261636560f01b6064820152608490fd5b5f1981146129ab5760010190565b634e487b7160e01b5f52601160045260245ffd5b5f80516020613a3e83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b5f80516020613a9e83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b15612a2057565b60405162461bcd60e51b8152602060048201526011602482015270496e76616c69642061646472657373657360781b6044820152606490fd5b6020612a729181604051938285809451938492016124ed565b81017f12bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd0f81520301902090565b6001600160a01b03165f9081527f12bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd0d6020526040902090565b335f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff1615612b0e57565b60405163e2517d3f60e01b81523360048201525f6024820152604490fd5b335f9081527f5c3bf92f80137d95bc0f8f75246a4f53c6228952ac81956e1da8d06c3b77ca1a60205260409020545f80516020613a7e8339815191529060ff1615610dd05750565b805f525f80516020613b5e83398151915260205260405f20335f5260205260ff60405f20541615610dd05750565b5f92918154612bb081612731565b92600191808316908115612c075750600114612bcd575b50505050565b9091929394505f5260209060205f20905f915b858310612bf6575050505001905f808080612bc7565b805485840152918301918101612be0565b60ff191684525050508115159091020191505f808080612bc7565b909291925f915f525f80516020613b9e83398151915260205260405f2093600285019081549160ff8316600381101561226457612c5f9015612885565b5f80516020613afe833981519152546001600160a01b0316156134cd57600160038801935f8554955560ff191617905560405192612ca884612ca1818a612769565b03856125c0565b60405190612cc482612cbd8160018c01612769565b03836125c0565b5f80516020613a3e83398151915254612ce79084906001600160a01b0316613925565b9460ff612cf387612a9e565b54166134bb57612dbb612d9b91612d0988612a9e565b600160ff19825416179055612dad60405195612d24876125a5565b5f80516020613afe833981519152546001600160a01b0390811688527f12bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd055481166020808a01919091525f80516020613b7e833981519152549091166040808a0191909152805191820152948593606085019061250e565b838103601f190160408501529061250e565b03601f1981018352826125c0565b6001600160a01b0386163b156105f8576040516306bc10a760e51b8152925f600485015b6003821061349b57505050612dff9060c0606485015260c484019061250e565b9060848301526003198282030160a4830152815f917f12bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd0c90815491612e4283612731565b80835292600181169081156134795750600114613436575b505f938390039150829050836001600160a01b0389165af1801561234057613423575b505f80516020613bde83398151915254600160401b811015610d535760018101805f80516020613bde833981519152558110156132f0575f80516020613bde8339815191525f527fca83e170a2f808bfc3863c724196f6d8fd5a6c01255fb6c9d22554efbd71e7470180546001600160a01b0319166001600160a01b03851690811790915560405163d6efd7c360e01b81529396879490918690829060049082905afa9081156116c5578691613348575b5080511561333457602001515f80516020613b7e833981519152546001600160a01b0391821694612f63929091879116613508565b6001600160a01b0384163b1561333057604051631672aef960e21b81523060048201528581602481836001600160a01b038a165af180156116c55790869161331c575b5050604051946203b32960ed1b6020870152612fd786612fc96023820185612ba2565b03601f1981018852876125c0565b604051603b60f91b6020820152612ff881612dad6021820160018701612ba2565b60058301549661301e8560018060a01b035f80516020613a9e8339815191525416613925565b976001600160a01b0389163b15613318576040516326896a5b60e11b81526001600160a01b038916600482015260806024820152928492849283929091613080919061306e90608486019061250e565b8481036003190160448601529061250e565b60648301919091520381836001600160a01b038c165af180156106fa57908291613304575b50505f80516020613a5e833981519152805490600160401b821015610d5357600182018082558210156132f0575f5260205f200160018060a01b03871660018060a01b03198254161790556040519266039ba30b5b2b2160cd1b6020850152613123846131156027820186612ba2565b03601f1981018652856125c0565b60405190607360f81b6020830152613153826131456021820160018801612ba2565b03601f1981018452836125c0565b7f12bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd07546001600160a01b0391613189918316613925565b1693843b156118da576040516285fc1360e71b81526001600160a01b03881660048201526002602482015260806044820152918391839182916131e791906131d590608485019061250e565b8381036003190160648501529061250e565b038183885af180156106fa576132dc575b5050916132d79160027f9a1e0d9133b3c84cec936bf84e3c80b8ec3d42fece718db83f8fd5b79d9188a196959460405190613232826125a5565b6001600160a01b0388811683528716602080840191825260408085019687525191928290613261908290612ba2565b7f12bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd0f815203019020915182546001600160a01b03199081166001600160a01b039283161784559151600184018054841691831691909117905593519290910180549091169190921617905560405193849384612642565b0390a1565b6132e68291612577565b61064957806131f8565b634e487b7160e01b5f52603260045260245ffd5b61330d90612577565b61064957805f6130a5565b8380fd5b61332590612577565b61333057845f612fa6565b8480fd5b634e487b7160e01b86526032600452602486fd5b90503d8087833e61335981836125c0565b602082828101031261341f578151916001600160401b039283811161341b57828201601f82840101121561341b5780820151938411613407578360051b90604051946133a860208401876125c0565b85526020850193830160208383860101011161340357602081840101935b602083838601010185106133df5750505050505f612f2e565b84516001600160a01b03811681036133ff578152602094850194016133c6565b8b80fd5b8980fd5b634e487b7160e01b89526041600452602489fd5b8880fd5b8680fd5b61342e919450612577565b5f925f612e7d565b9093505f5260205f20905f915b81831061345b575050602082915f940101925f612e5a565b60209194935080600191548385870101520191019092849293613443565b5f965060209392508594915060ff191683830152151560051b0101925f612e5a565b82516001600160a01b031681526020928301926001929092019101612ddf565b604051630d82532d60e21b8152600490fd5b60405162461bcd60e51b8152602060048201526013602482015272151bdad95b8818591b5a5b881b9bdd081cd95d606a1b6044820152606490fd5b60405163a9059cbb60e01b60208201526001600160a01b0390921660248301526044820192909252612848916135418260648101613145565b61386a565b6001600160a01b03165f8181527f5c3bf92f80137d95bc0f8f75246a4f53c6228952ac81956e1da8d06c3b77ca1a60205260409020545f80516020613a7e83398151915291905f80516020613b5e8339815191529060ff166135d957825f5260205260405f20815f5260205260405f20600160ff1982541617905533915f80516020613a1e8339815191525f80a4600190565b5050505f90565b6001600160a01b03165f8181527fae397ad4942fd55c39428db5ea3ac85cc8592b20d92437b6ec53a8b6ff39d42d60205260409020545f80516020613b1e83398151915291905f80516020613b5e8339815191529060ff166135d957825f5260205260405f20815f5260205260405f20600160ff1982541617905533915f80516020613a1e8339815191525f80a4600190565b6001600160a01b03165f8181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020545f80516020613b5e8339815191529060ff166136f7575f805260205260405f20815f5260205260405f20600160ff1982541617905533905f5f80516020613a1e8339815191528180a4600190565b50505f90565b90815f525f80516020613b5e8339815191528060205260405f209160018060a01b031691825f5260205260ff60405f205416155f146135d957825f5260205260405f20815f5260205260405f20600160ff1982541617905533915f80516020613a1e8339815191525f80a4600190565b90815f525f80516020613b5e8339815191528060205260405f209160018060a01b031691825f5260205260ff60405f2054165f146135d957825f5260205260405f20815f5260205260405f2060ff19815416905533917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b60ff5f80516020613bbe833981519152541661380457565b60405163d93c066560e01b8152600490fd5b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815260a08101918183106001600160401b03841117610d5357612848926040525b5f806138929260018060a01b03169360208151910182865af161388b61398b565b90836139ba565b80519081151591826138c0575b50506138a85750565b60249060405190635274afe760e01b82526004820152fd5b81925090602091810103126105f857602001518015908115036105f8575f8061389f565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561391357565b604051631afcd79f60e31b8152600490fd5b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b0382161561397957565b6040516330be1a3d60e21b8152600490fd5b3d156139b5573d9061399c826125e1565b916139aa60405193846125c0565b82523d5f602084013e565b606090565b906139e157508051156139cf57805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580613a14575b6139f2575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156139ea56fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d12bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd0612bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd01f17a52ef07e0bf6004487e8a911da5d0c2069acda44a7d6c0664442b85327a9e12bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd085d8e12c39142ff96d79d04d15d1ba1269e4fe57bb9d26f43523628b34ba108ec360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc12bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd03dfbefbf47cfe66b701d8cfdbce1de81c821590819cb07e71cb01b6602fb0ee2712bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd0902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680012bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd0412bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd0ecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330012bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd0212bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd0b12bc02d145808713dc439900bff3af1c62e212f9280db6b0a931dd2590b9bd00a26469706673582212201233d9f7cf8d75cb43390dbbf2cecb65aaa24360be65292c98eaf8a37039e0ca64736f6c63430008170033