6 txs
7 calls
constructor
constructor()
functions
canLaunch
viewfunction canLaunch(address) view returns (bool)
feeAddress
viewfunction feeAddress() view returns (address)
initialPayoutPct
viewfunction initialPayoutPct() view returns (uint256)
mintPeriod
viewfunction mintPeriod() view returns (uint256)
owner
viewfunction owner() view returns (address result)
ownershipHandoverExpiresAt
viewfunction ownershipHandoverExpiresAt(address pendingOwner) view returns (uint256 result)
publicAllowed
viewfunction publicAllowed() view returns (bool)
tokenWorksFeePct
viewfunction tokenWorksFeePct() view returns (uint256)
authorizeLauncher
nonpayablefunction authorizeLauncher(address launcher)
cancelOwnershipHandover
payablefunction cancelOwnershipHandover() payable
completeOwnershipHandover
payablefunction completeOwnershipHandover(address pendingOwner) payable
launchFundingWorks
nonpayablefunction launchFundingWorks(address builder, uint256 maxSupply, uint256 mintPrice, uint256 vestingPeriod, string ipfsHash, string tokenName, string tokenSymbol) returns (address)
renounceOwnership
payablefunction renounceOwnership() payable
requestOwnershipHandover
payablefunction requestOwnershipHandover() payable
revokeLauncher
nonpayablefunction revokeLauncher(address launcher)
setPublicAllowed
nonpayablefunction setPublicAllowed(bool _publicAllowed)
transferOwnership
payablefunction transferOwnership(address newOwner) payable
updateFeeAddress
nonpayablefunction updateFeeAddress(address _feeAddress)
updateFeePercentages
nonpayablefunction updateFeePercentages(uint256 _initialPayoutPct, uint256 _tokenWorksFeePct)
events
FundingWorksLaunched
event FundingWorksLaunched(address indexed fundingWorks, uint256 maxSupply, uint256 mintPrice, uint256 mintPeriod, uint256 vestingPeriod, uint256 initialPayoutPct, uint256 tokenWorksFeePct, address indexed deployer, address indexed tokenWorks, string ipfsHash, string tokenName, string tokenSymbol)
OwnershipHandoverCanceled
event OwnershipHandoverCanceled(address indexed pendingOwner)
OwnershipHandoverRequested
event OwnershipHandoverRequested(address indexed pendingOwner)
OwnershipTransferred
event OwnershipTransferred(address indexed oldOwner, address indexed newOwner)
errors
AlreadyInitialized
error AlreadyInitialized()
InvalidAddress
error InvalidAddress()
InvalidFeePercentages
error InvalidFeePercentages()
InvalidMaxSupply
error InvalidMaxSupply()
InvalidMintPrice
error InvalidMintPrice()
InvalidParameters
error InvalidParameters()
InvalidVestingPeriod
error InvalidVestingPeriod()
NewOwnerIsZeroAddress
error NewOwnerIsZeroAddress()
NoHandoverRequest
error NoHandoverRequest()
NotAuthorized
error NotAuthorized()
PublicDeploymentNotAllowed
error PublicDeploymentNotAllowed()
Unauthorized
error Unauthorized()
creation bytecode
0x608060405234606357600760025560038055600480546001600160a01b03191633908117909155638b78c6d8198190555f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36040516131c590816100688239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806310739ef0146107a95780631a3769fd146107605780632569296214610717578063385610da146106df57806341275358146106b75780634c4982031461069a57806354d1f13d1461065657806358373f041461061a578063715018a6146105d15780637319dbab146105b457806378578bb31461055957806385f08b6a146102705780638da5cb5b14610244578063bbcaac38146101e9578063d83d0f76146101c7578063f04e283e1461017a578063f2fde38b1461013d578063fb1eecb4146101205763fee81cf4146100ea575f80fd5b3461011c57602036600319011261011c576101036107ef565b63389a75e1600c525f52602080600c2054604051908152f35b5f80fd5b3461011c575f36600319011261011c576020600254604051908152f35b602036600319011261011c576101516107ef565b610159610891565b8060601b1561016d5761016b906108ad565b005b637448fbae5f526004601cfd5b602036600319011261011c5761018e6107ef565b610196610891565b63389a75e1600c52805f526020600c2090815442116101ba575f61016b92556108ad565b636f5e88185f526004601cfd5b3461011c575f36600319011261011c57602060ff600154166040519015158152f35b3461011c57602036600319011261011c576102026107ef565b61020a610891565b6001600160a01b03168015610235576bffffffffffffffffffffffff60a01b60045416176004555f80f35b63e6c4247b60e01b5f5260045ffd5b3461011c575f36600319011261011c57638b78c6d819546040516001600160a01b039091168152602090f35b3461011c5760e036600319011261011c576102896107ef565b60243590604435906064359060843567ffffffffffffffff811161011c576102b5903690600401610805565b60a43567ffffffffffffffff811161011c576102d5903690600401610805565b9360c43567ffffffffffffffff811161011c576102f6903690600401610805565b9261030181336108ea565b1561054a576001600160a01b0316801561053b5785511561053b5783511561053b57600a87108015610530575b61052157662386f26fc1000082108015610510575b6105015762278d00851080156104f4575b6104e5576002546003546004546040519361284a92838601926001600160a01b0316919067ffffffffffffffff8411878510176104d15786956103fb9561094688398d855288602086015262093a8060408601528b6060860152608085015260a084015260c083015260e08201526101606101008201526103eb6103dc61016083018861086d565b8281036101208401528a61086d565b906101408183039101528661086d565b03905ff09081156104c6576020966104bb6104ab61049d987fb02235f4fcdc4f033eacc4f049cda9167a1dcde7f452f15ff50fe61969bf791795335f525f8c5260405f2060ff19815416905560018060a01b0316998a976002546003549060018060a01b03600454169c604051998a998a5260208a015262093a8060408a01526060890152608088015260a087015261012060c087015261012086019061086d565b9084820360e086015261086d565b828103610100840152339661086d565b0390a4604051908152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b63ca6075df60e01b5f5260045ffd5b506301e133808511610354565b63020b5e0b60e11b5f5260045ffd5b50670de0b6b3a76400008211610343565b63066f305360e21b5f5260045ffd5b506103e8871161032e565b630e52390960e41b5f5260045ffd5b63ea8e4eb560e01b5f5260045ffd5b3461011c57604036600319011261011c57602435600435610578610891565b8181018082116105a057600a0361059157600255600355005b6317e71c1d60e31b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b3461011c575f36600319011261011c576020600354604051908152f35b5f36600319011261011c576105e4610891565b5f638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35f638b78c6d81955005b3461011c57602036600319011261011c576001600160a01b0361063b6107ef565b165f525f602052602060ff60405f2054166040519015158152f35b5f36600319011261011c5763389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2005b3461011c575f36600319011261011c57602060405162093a808152f35b3461011c575f36600319011261011c576004546040516001600160a01b039091168152602090f35b3461011c57602036600319011261011c5760043580151580910361011c57610705610891565b60ff8019600154169116176001555f80f35b5f36600319011261011c5763389a75e1600c52335f526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a2005b3461011c57602036600319011261011c576107796107ef565b610781610891565b6001600160a01b03168015610235575f525f60205260405f20600160ff198254161790555f80f35b3461011c57602036600319011261011c576107c26107ef565b6107ca610891565b6001600160a01b03168015610235575f525f60205260405f2060ff1981541690555f80f35b600435906001600160a01b038216820361011c57565b81601f8201121561011c5780359067ffffffffffffffff82116104d15760405192601f8301601f19908116603f0116840167ffffffffffffffff8111858210176104d1576040528284526020838301011161011c57815f926020809301838601378301015290565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b638b78c6d8195433036108a057565b6382b429005f526004601cfd5b60018060a01b031680638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3638b78c6d81955565b638b78c6d819546001600160a01b0391821692911682148015610930575b6109295760ff6001541661091c5750505f90565b6001600160a01b03161490565b5050600190565b50815f525f60205260ff60405f20541661090856fe610160604052346105e45761284a8038038061001a816105e8565b928339810190610160818303126105e45780519060208101516040820151906060830151608084015160a08501519161005560c0870161060d565b9461006260e0880161060d565b6101008801519095906001600160401b0381116105e4578a610085918a01610621565b6101208901519098906001600160401b0381116105e4578b6100a8918301610621565b610140820151909b906001600160401b0381116105e4576100c99201610621565b600160055560809990995260a05260c05260e05261010052610120526101405283516001600160401b03811161041d575f54600181811c911680156105da575b60208210146103ff57601f8111610578575b50602094601f8211600114610517579481929394955f9261050c575b50508160011b915f199060031b1c1916175f555b82516001600160401b03811161041d57600154600181811c91168015610502575b60208210146103ff57601f811161049f575b506020601f821160011461043c57819293945f92610431575b50508160011b915f199060031b1c1916176001555b81516001600160401b03811161041d57601054600181811c91168015610413575b60208210146103ff57601f811161039c575b50602092601f821160011461033b57928192935f92610330575b50508160011b915f199060031b1c1916176010555b6001600160a01b0316638b78c6d8198190555f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36040516121d790816106738239608051818181611324015281816113be01528181611e430152611f39015260a051818181610694015281816107e3015281816110280152818161140b0152611e1a015260c0518181816108c101528181610a0901528181610f8d015281816110a1015281816114350152611ded015260e051818181610eb30152818161145a0152818161193401528181611bbf01528181611d92015261211501526101005181818161080c01528181610937015261105101526101205181818161083d01526112ea015261014051818181610d7f01528181610f030152610fbe0152f35b015190505f806101f9565b601f1982169360105f52805f20915f5b868110610384575083600195961061036c575b505050811b0160105561020e565b01515f1960f88460031b161c191690555f808061035e565b9192602060018192868501518155019401920161034b565b60105f527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f830160051c810191602084106103f5575b601f0160051c01905b8181106103ea57506101df565b5f81556001016103dd565b90915081906103d4565b634e487b7160e01b5f52602260045260245ffd5b90607f16906101cd565b634e487b7160e01b5f52604160045260245ffd5b015190505f80610197565b601f1982169060015f52805f20915f5b8181106104875750958360019596971061046f575b505050811b016001556101ac565b01515f1960f88460031b161c191690555f8080610461565b9192602060018192868b01518155019401920161044c565b60015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f830160051c810191602084106104f8575b601f0160051c01905b8181106104ed575061017e565b5f81556001016104e0565b90915081906104d7565b90607f169061016c565b015190505f80610137565b601f198216955f8052805f20915f5b88811061056057508360019596979810610548575b505050811b015f5561014b565b01515f1960f88460031b161c191690555f808061053b565b91926020600181928685015181550194019201610526565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f830160051c810191602084106105d0575b601f0160051c01905b8181106105c5575061011b565b5f81556001016105b8565b90915081906105af565b90607f1690610109565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761041d57604052565b51906001600160a01b03821682036105e457565b81601f820112156105e4578051906001600160401b03821161041d57610650601f8301601f19166020016105e8565b92828452602083830101116105e457815f9260208093018386015e830101529056fe6080806040526004361015610034575b50361561002557631eb49d6d60e11b5f5260045ffd5b631eb49d6d60e11b5f5260045ffd5b5f3560e01c9081630197d9721461191f5750806301ffc9a7146118d257806306fdde0314611830578063075b222514611813578063081812fc146117c25780630913348f146115e9578063095ea7b3146115c55780630b97d964146115a85780630f4161aa146115865780631249c58b146115315780631e1d6b771461151357806323b872dd1461150157806324bd2816146114e4578063256929621461149b57806327ffb9a2146113865780632eb4a7ab146113695780632f2c269c1461134757806332cb6b0c1461130d57806333e03e09146112d3578063358cbf0a1461129657806342842e0e1461125d57806342966c68146110c657806344b28d5914610fed5780634bb278f314610df75780634f3e1efc14610dae578063520f3cc814610d6a578063537924ef14610c5d57806354d1f13d14610c195780636352211e14610be95780636c02a93114610b4757806370a0823114610af4578063715018a614610aab5780637b61c3201461098e5780637cb6475914610a495780638285268e14610a2c57806383ea6e97146109f25780638da5cb5b146109c6578063931e2e49146109a957806395d89b411461098e578063a22cb4651461095a578063a2c00d9e14610920578063a8660a7814610903578063a899adf4146107a8578063b7663e971461078b578063b88d4fde146106d9578063bac3bfb8146106b7578063c002d23d1461067d578063c623674f146105c6578063c87b56dd146104b9578063d123973014610494578063d62f3b1c14610449578063db1704e11461042c578063e32a748f1461040f578063e985e9c5146103cb578063eab1e62c146103ae578063f04e283e14610361578063f2fde38b14610324578063f998c8e8146102ff5763fee81cf4146102c9575f61000f565b346102fb5760203660031901126102fb576102e26119af565b63389a75e1600c525f52602080600c2054604051908152f35b5f80fd5b346102fb575f3660031901126102fb57602060ff60065460081c166040519015158152f35b60203660031901126102fb576103386119af565b610340611dbb565b8060601b1561035457610352906120a2565b005b637448fbae5f526004601cfd5b60203660031901126102fb576103756119af565b61037d611dbb565b63389a75e1600c52805f526020600c2090815442116103a1575f61035292556120a2565b636f5e88185f526004601cfd5b346102fb575f3660031901126102fb576020600d54604051908152f35b346102fb5760403660031901126102fb576103e46119af565b6103ec6119c5565b601c52670a5a2e7a000000006008525f5260206030600c20546040519015158152f35b346102fb575f3660031901126102fb576020600954604051908152f35b346102fb575f3660031901126102fb576020600c54604051908152f35b346102fb575f3660031901126102fb57610461611dbb565b600160ff1960035416176003557fbad7871e16f9b9d8b2a6bd6e38ada7c99940913046fe099cffa0040643fb064e5f80a1005b346102fb575f3660031901126102fb57602060ff60035460081c166040519015158152f35b346102fb5760203660031901126102fb576004355f818152673ec412a9852d173d60c11b601c52602090208101015460601b156105b75760405166697066733a2f2f60c81b60208201525f9060105461051181611a15565b9060018116908115610593575060011461054d575b5061053d816105499303601f198101835282611a69565b60405191829182611957565b0390f35b915060105f525f805160206121828339815191525f905b83821061057c5750509081016027019061053d610526565b600181602092546027858701015201910190610564565b60ff19166027808501919091528215159092028301909101925061053d9050610526565b63677510db60e11b5f5260045ffd5b346102fb575f3660031901126102fb576040515f6010546105e681611a15565b8084529060018116908115610659575060011461060e575b6105498361053d81850382611a69565b60105f9081525f80516020612182833981519152939250905b80821061063f5750909150810160200161053d6105fe565b919260018160209254838588010152019101909291610627565b60ff191660208086019190915291151560051b8401909101915061053d90506105fe565b346102fb575f3660031901126102fb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102fb575f3660031901126102fb5760206106d1611d7c565b604051908152f35b60803660031901126102fb576106ed6119af565b6106f56119c5565b60443560643567ffffffffffffffff81116102fb57610718903690600401611981565b929093610726838383611c15565b813b61072e57005b67ffffffffffffffff84116107775760405193610755601f8201601f191660200186611a69565b80855236818701116102fb576020815f92610352988389013786010152611fcb565b634e487b7160e01b5f52604160045260245ffd5b346102fb575f3660031901126102fb576020600b54604051908152f35b346102fb575f3660031901126102fb576107c0611dbb565b60035460ff8160081c166108f45761ffff191661010117600355426004556108727f000000000000000000000000000000000000000000000000000000000000000061086d60646108317f000000000000000000000000000000000000000000000000000000000000000084611b4f565b0480600a5560646108627f000000000000000000000000000000000000000000000000000000000000000085611b4f565b049283600b55611b42565b611b42565b600c557fbad7871e16f9b9d8b2a6bd6e38ada7c99940913046fe099cffa0040643fb064e5f80a17fcb0654d378ad3cd02dbc858de79e52889616696769cabc0cbfb2ec86e055045160406108e67f000000000000000000000000000000000000000000000000000000000000000042611d42565b8151904282526020820152a1005b6339f3829b60e01b5f5260045ffd5b346102fb575f3660031901126102fb576020600754604051908152f35b346102fb575f3660031901126102fb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102fb5760403660031901126102fb576109736119af565b50602435801515036102fb57631eb49d6d60e11b5f5260045ffd5b346102fb575f3660031901126102fb5761054961053d611a8b565b346102fb575f3660031901126102fb576020600454604051908152f35b346102fb575f3660031901126102fb57638b78c6d819546040516001600160a01b039091168152602090f35b346102fb575f3660031901126102fb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102fb575f3660031901126102fb576020600a54604051908152f35b346102fb5760203660031901126102fb57600435610a65611dbb565b8015610a9c576020817f90004c04698bc3322499a575ed3752dd4abf33e0a7294c06a787a0fe01bea94192600255604051908152a1005b631e1d0ab560e01b5f5260045ffd5b5f3660031901126102fb57610abe611dbb565b5f638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35f638b78c6d81955005b346102fb5760203660031901126102fb57610b0d6119af565b8015610b3a57673ec412a9852d173d60c11b601c525f52602063ffffffff601c600c205416604051908152f35b638f4eb6045f526004601cfd5b346102fb575f3660031901126102fb576040515f8054610b6681611a15565b80845290600181169081156106595750600114610b8d576105498361053d81850382611a69565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210610bcf5750909150810160200161053d6105fe565b919260018160209254838588010152019101909291610bb7565b346102fb5760203660031901126102fb576020610c07600435611d4f565b6040516001600160a01b039091168152f35b5f3660031901126102fb5763389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2005b60203660031901126102fb5760043567ffffffffffffffff81116102fb57366023820112156102fb57806004013567ffffffffffffffff81116102fb5760248160051b8301013681116102fb573068929eee149b4bd212685414610d5d573068929eee149b4bd2126855610cd034611dd7565b6002549260405160208101903360601b825260148152610cf1603482611a69565b51902092610d2e575b505003610d1f576020610d0b611e96565b3868929eee149b4bd2126855604051908152f35b6306fb10a960e01b5f5260045ffd5b602401915b602083359182811160051b9081521852602060405f20920191818310610d33579150508280610cfa565b63ab143c065f526004601cfd5b346102fb575f3660031901126102fb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102fb575f3660031901126102fb57610dcd60055460095490611b42565b5f198101908111610de357602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b346102fb575f3660031901126102fb573068929eee149b4bd212685414610d5d573068929eee149b4bd2126855638b78c6d81954336001600160a01b038216141580610fba575b6100255760065460ff81161580610f84575b610f755760081c60ff16610f6657600e5490600f549180610f3c575b505080610ef2575b61010061ff0019600654161760065542600755426008557fb968440accd1ce5fa60b00de8bb8d8487eb2fda3c3701fb30fea3f69aa910a486040610ed87f000000000000000000000000000000000000000000000000000000000000000042611d42565b8151904282526020820152a13868929eee149b4bd2126855005b804710610f2d57610f27905f600f557f000000000000000000000000000000000000000000000000000000000000000061205d565b80610e74565b63786e0a9960e01b5f5260045ffd5b804710610f2d57610f5f915f600e55610f5782600d54611d42565b600d5561205d565b8180610e6c565b6372de7acd60e01b5f5260045ffd5b63a4bcf01360e01b5f5260045ffd5b50610fb26004547f000000000000000000000000000000000000000000000000000000000000000090611d42565b421115610e50565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415610e3e565b346102fb575f3660031901126102fb57611005611dbb565b60035460ff8160081c166108f45761ff00191661010017600355426004556110767f000000000000000000000000000000000000000000000000000000000000000061086d60646108317f000000000000000000000000000000000000000000000000000000000000000084611b4f565b600c557fcb0654d378ad3cd02dbc858de79e52889616696769cabc0cbfb2ec86e055045160406108e67f000000000000000000000000000000000000000000000000000000000000000042611d42565b346102fb5760203660031901126102fb576004353068929eee149b4bd212685414610d5d573068929eee149b4bd212685560ff60065460081c161561124e5761110e81611d4f565b336001600160a01b039091160361123f5761112881611b80565b90611131611f90565b61113c600954611d34565b6009556001600160a01b0361115082611d4f565b16151580611238575b610025575f818152673ec412a9852d173d60c11b601c5260209020810181018054906001600160a01b03821690811561122b57815f528060010192835480156001171561120c575b905f948492611203575b50189055601c600c20821981540190557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4806111f3575b3868929eee149b4bd2126855005b6111fd903361205d565b806111e5565b859055876111ab565b906030600c20541561121e57906111a1565b634b6e7f185f526004601cfd5b63ceea21b65f526004601cfd5b505f611159565b6359dc379f60e01b5f5260045ffd5b635788079960e01b5f5260045ffd5b611266366119db565b6112738183859495611c15565b823b61127b57005b610352926040519261128e602085611a69565b5f8452611fcb565b346102fb575f3660031901126102fb576112ae611dbb565b3068929eee149b4bd212685414610d5d573068929eee149b4bd21268556111e5611f90565b346102fb575f3660031901126102fb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102fb575f3660031901126102fb5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102fb575f3660031901126102fb57602060ff600654166040519015158152f35b346102fb575f3660031901126102fb576020600254604051908152f35b346102fb575f3660031901126102fb575f60806040516113a581611a4d565b82815282602082015282604082015282606082015201527f0000000000000000000000000000000000000000000000000000000000000000600554905f198201918211610de35760a0916040516113fb81611a4d565b82815260208101918252604081017f00000000000000000000000000000000000000000000000000000000000000008152608060608301927f0000000000000000000000000000000000000000000000000000000000000000845201927f00000000000000000000000000000000000000000000000000000000000000008452604051948552516020850152516040840152516060830152516080820152f35b5f3660031901126102fb5763389a75e1600c52335f526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a2005b346102fb575f3660031901126102fb576020600f54604051908152f35b61035261150d366119db565b91611c15565b346102fb5760203660031901126102fb5760206106d1600435611b80565b5f3660031901126102fb573068929eee149b4bd212685414610d5d573068929eee149b4bd212685561156234611dd7565b60ff6003541615611577576020610d0b611e96565b63447691f760e01b5f5260045ffd5b346102fb575f3660031901126102fb57602060ff600354166040519015158152f35b346102fb575f3660031901126102fb576020600e54604051908152f35b60403660031901126102fb576115d96119af565b50631eb49d6d60e11b5f5260045ffd5b346102fb5760203660031901126102fb5760043567ffffffffffffffff81116102fb5761161a903690600401611981565b611622611dbb565b67ffffffffffffffff81116107775761163c601054611a15565b601f811161175a575b505f91601f82116001146116c957604090827fddf1c344aad789eabd94922c3bda7a42ef5192db3a152c21524fa011b9b11c15945f916116be575b508360011b905f198560031b1c1916176010555b82825193849260208452816020850152848401375f828201840152601f01601f19168101030190a1005b905081013585611680565b601f19821660105f525f80516020612182833981519152905f5b8181106117425750907fddf1c344aad789eabd94922c3bda7a42ef5192db3a152c21524fa011b9b11c1594846040949310611729575b5050600183811b01601055611694565b8201355f19600386901b60f8161c191690558480611719565b838601358355602095860195600190930192016116e3565b60105f52601f820160051c5f805160206121828339815191520190602083106117ad575b601f0160051c5f8051602061218283398151915201905b8181106117a25750611645565b5f8155600101611795565b5f80516020612182833981519152915061177e565b346102fb5760203660031901126102fb576004355f818152673ec412a9852d173d60c11b601c5260209020810101805460601b1561122b57600101546040516001600160a01b039091168152602090f35b346102fb575f3660031901126102fb576020600854604051908152f35b346102fb575f3660031901126102fb576040515f805461184f81611a15565b80845290600181169081156106595750600114611876576105498361053d81850382611a69565b5f8080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b8082106118b85750909150810160200161053d6105fe565b9192600181602092548385880101520191019092916118a0565b346102fb5760203660031901126102fb576004356001600160e01b0319811681036102fb5760209060e01c60405190635b5e139f8114906301ffc9a76380ac58cd82149114171715158152f35b346102fb575f3660031901126102fb576020907f00000000000000000000000000000000000000000000000000000000000000008152f35b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b9181601f840112156102fb5782359167ffffffffffffffff83116102fb57602083818601950101116102fb57565b600435906001600160a01b03821682036102fb57565b602435906001600160a01b03821682036102fb57565b60609060031901126102fb576004356001600160a01b03811681036102fb57906024356001600160a01b03811681036102fb579060443590565b90600182811c92168015611a43575b6020831014611a2f57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611a24565b60a0810190811067ffffffffffffffff82111761077757604052565b90601f8019910116810190811067ffffffffffffffff82111761077757604052565b604051905f8260015491611a9e83611a15565b8083529260018116908115611b235750600114611ac4575b611ac292500383611a69565b565b5060015f90815290917fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b818310611b07575050906020611ac292820101611ab6565b6020919350806001915483858901015201910190918492611aef565b60209250611ac294915060ff191682840152151560051b820101611ab6565b91908203918211610de357565b81810292918115918404141715610de357565b8115611b6c570490565b634e487b7160e01b5f52601260045260245ffd5b5f818152673ec412a9852d173d60c11b601c52602090208101015460601b156105b75760ff60065460081c1615611c0f57611bbd60075442611b42565b7f00000000000000000000000000000000000000000000000000000000000000009081811015611c0957611c00611c0692611bfb600c549384611b4f565b611b62565b90611b42565b90565b50505f90565b600c5490565b6001600160a01b038116151580611d22575b610025575f838152673ec412a9852d173d60c11b3317601c52602090208301830180546001600160a01b0393841693928316928116808414810215611d0d5750825f528160010180548033148533141715611cf6575b611ced575b50838318189055601c600c205f198154019055815f52601c600c2060018154019063ffffffff8216840215611cd857557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4565b67ea553b3401336cea841560021b526004601cfd5b5f90555f611c82565b6030600c2054611c7d57634b6e7f185f526004601cfd5b67ceea21b6a1148100901560021b526004601cfd5b506001600160a01b0382161515611c27565b5f198114610de35760010190565b91908201809211610de357565b5f818152673ec412a9852d173d60c11b601c5260209020810101546001600160a01b031690811561122b57565b60ff60065460081c1615611db757611c06600c547f000000000000000000000000000000000000000000000000000000000000000090611b62565b5f90565b638b78c6d819543303611dca57565b6382b429005f526004601cfd5b60ff60035460081c161561157757611e126004547f000000000000000000000000000000000000000000000000000000000000000090611d42565b4211611e87577f000000000000000000000000000000000000000000000000000000000000000003611e78576005547f000000000000000000000000000000000000000000000000000000000000000010611e6957565b6370d818df60e01b5f5260045ffd5b6349986e7360e01b5f5260045ffd5b63046b084160e31b5f5260045ffd5b60055490611ea382611d34565b60055581611eb5600a54600e54611d42565b600e55611ec6600b54600f54611d42565b600f55805f52673ec412a9852d173d60c11b601c5260205f208101810180548060601b611f835733179055335f52601c600c2060018154019063ffffffff8216330215611f6e5755335f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a46005547f000000000000000000000000000000000000000000000000000000000000000010611f5f57565b600160ff196006541617600655565b67ea553b3401336cea331560021b526004601cfd5b63c991cbb15f526004601cfd5b611f986120df565b8015611fc857804710610f2d5780611fb5611ac292600d54611d42565b600d5542600855638b78c6d8195461205d565b50565b9060a46020939460405195869463150b7a028652338787015260018060a01b03166040860152606085015260808085015280518091818060a0880152612049575b505001905f601c8401915af11561203b575b5163757a42ff60e11b0161202e57565b63d1a57ed65f526004601cfd5b3d1561201e573d5f823e3d90fd5b818760c08801920160045afa50805f61200c565b814710612095575f3881808585620186a0f115612078575050565b601691600b915f526073825360ff602053f01561209157565b3838fd5b63b12d13eb5f526004601cfd5b60018060a01b031680638b78c6d819547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3638b78c6d81955565b60ff60065460081c1615611db7576005545f198101908111610de35760095461210791611b42565b801561217c5761213a6007547f000000000000000000000000000000000000000000000000000000000000000090611d42565b8042105f14612176575042905b6008548083111561216f5761216261216a91611c0694611b42565b61216a611d7c565b611b4f565b5050505f90565b90612147565b505f9056fe1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672a2646970667358221220f0ec5930e5508803c4a6de597e3ac488201a301aa42c14fa51a19ae8874ea83f64736f6c634300081a0033a2646970667358221220991a06fff4565a8dbbc612369cdd6d5d84e85cee14b907906abd5e7efb8077e864736f6c634300081a0033