0 txs
9.47m calls
constructor
constructor(address _coinImpl, address _coinV4Impl, address _creatorCoinImpl, address _contentCoinHook, address _creatorCoinHook)
functions
coinAddress
viewfunction coinAddress(address msgSender, string name, string symbol, bytes poolConfig, address platformReferrer, bytes32 coinSalt) view returns (address)
coinImpl
viewfunction coinImpl() view returns (address)
coinV4Impl
viewfunction coinV4Impl() view returns (address)
contentCoinHook
viewfunction contentCoinHook() view returns (address)
contractName
purefunction contractName() pure returns (string)
contractVersion
purefunction contractVersion() pure returns (string)
creatorCoinHook
viewfunction creatorCoinHook() view returns (address)
creatorCoinImpl
viewfunction creatorCoinImpl() view returns (address)
getVersionForDeployedCoin
viewfunction getVersionForDeployedCoin(address coin) view returns (uint8)
implementation
viewfunction implementation() view returns (address)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
deploy
payablefunction deploy(address payoutRecipient, address[] owners, string uri, string name, string symbol, address platformReferrer, address currency, int24, uint256 orderSize) payable returns (address, uint256)
deploy
payablefunction deploy(address payoutRecipient, address[] owners, string uri, string name, string symbol, bytes poolConfig, address platformReferrer, address postDeployHook, bytes postDeployHookData, bytes32 coinSalt) payable returns (address coin, bytes postDeployHookDataOut)
deploy
payablefunction deploy(address payoutRecipient, address[] owners, string uri, string name, string symbol, bytes poolConfig, address platformReferrer, uint256 orderSize) payable returns (address, uint256)
deployCreatorCoin
nonpayablefunction deployCreatorCoin(address payoutRecipient, address[] owners, string uri, string name, string symbol, bytes poolConfig, address platformReferrer, bytes32 coinSalt) returns (address)
deployWithHook
payablefunction deployWithHook(address payoutRecipient, address[] owners, string uri, string name, string symbol, bytes poolConfig, address platformReferrer, address hook, bytes hookData) payable returns (address coin, bytes hookDataOut)
initialize
nonpayablefunction initialize(address initialOwner)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
CoinCreated
event CoinCreated(address indexed caller, address indexed payoutRecipient, address indexed platformReferrer, address currency, string uri, string name, string symbol, address coin, address pool, string version)
CoinCreatedV4
event CoinCreatedV4(address indexed caller, address indexed payoutRecipient, address indexed platformReferrer, address currency, string uri, string name, string symbol, address coin, (address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks) poolKey, bytes32 poolKeyHash, string version)
CreatorCoinCreated
event CreatorCoinCreated(address indexed caller, address indexed payoutRecipient, address indexed platformReferrer, address currency, string uri, string name, string symbol, address coin, (address currency0, address currency1, uint24 fee, int24 tickSpacing, address hooks) poolKey, bytes32 poolKeyHash, string version)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ArrayLengthMismatch
error ArrayLengthMismatch()
CannotMintZeroLiquidity
error CannotMintZeroLiquidity()
ConfigTickLowerMustBeLessThanTickUpper
error ConfigTickLowerMustBeLessThanTickUpper()
Deprecated
error Deprecated()
ERC1167FailedCreateClone
error ERC1167FailedCreateClone()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ERC20TransferAmountMismatch
error ERC20TransferAmountMismatch()
EthTransferInvalid
error EthTransferInvalid()
FailedInnerCall
error FailedInnerCall()
InvalidConfig
error InvalidConfig()
InvalidHook
error InvalidHook()
InvalidInitialization
error InvalidInitialization()
InvalidPoolVersion
error InvalidPoolVersion()
InvalidTickRangeMisordered
error InvalidTickRangeMisordered(int24 tickLower, int24 tickUpper)
InvalidTickRangeMisordered
error InvalidTickRangeMisordered(int24 tickLower, int24 tickUpper)
MaxShareToBeSoldExceeded
error MaxShareToBeSoldExceeded(uint256 value, uint256 limit)
NotInitializing
error NotInitializing()
NumDiscoveryPositionsOutOfRange
error NumDiscoveryPositionsOutOfRange()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UpgradeToMismatchedContractName
error UpgradeToMismatchedContractName(string currentName, string newName)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
ZeroDiscoveryPositions
error ZeroDiscoveryPositions()
ZeroDiscoverySupplyShare
error ZeroDiscoverySupplyShare()
creation bytecode
0x6101403461019a57601f613f8738819003918201601f19168301916001600160401b0383118484101761019e5780849260a09460405283398101031261019a57610048816101b2565b90610055602082016101b2565b610061604083016101b2565b9061007a6080610073606086016101b2565b94016101b2565b93306080525f516020613f675f395f51905f525460ff8160401c1661018b576002600160401b03196001600160401b03821601610135575b5060a05260c05260e0526101005261012052604051613da090816101c782396080518181816109f80152610a89015260a051818181610fd70152611a15015260c0518181816101520152611a52015260e05181818161067e0152610df8015261010051818181610f4f01526124cf0152610120518181816106ba0152610f930152f35b6001600160401b0319166001600160401b039081175f516020613f675f395f51905f52556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f6100b2565b63f92ee8a960e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361019a5756fe6102806040526004361015610012575f80fd5b5f5f3560e01c80630d36fc7714611006578063109cbac514610fc257806312902a4d14610f7e578063144f93dc14610f3a5780631f63f65f14610e2757806320a20a4a14610de35780633c7bca9414610cbf5780634f1ef28614610a4c57806352d1902d146109e65780635c60da1b146109b2578063715018a61461094b57806375d0c0dc1461091c578063885efbd2146108c25780638da5cb5b1461088e578063a0a8e46014610847578063a27a6dce1461057d578063a423ada114610466578063ad3cb1cc1461041e578063c4d66de8146102a9578063c7ce4e1614610181578063c954661b1461013c5763f2fde38b1461010d575f80fd5b3461013957602036600319011261013957610136610129611124565b610131612a36565b61169b565b80f35b80fd5b50346101395780600319360112610139576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5061010036600319011261013957610197611124565b6024356001600160401b0381116102a5576101b6903690600401611204565b6044356001600160401b0381116102a1576101d590369060040161128d565b6064356001600160401b03811161029d576101f490369060040161128d565b6084356001600160401b0381116102995761021390369060040161128d565b9060a435956001600160401b038711610139575061023861025a96369060040161128d565b9261024161113a565b9461024a61170c565b6102548288611744565b96611a74565b61026660e43582612659565b60015f516020613d2b5f395f51905f5255604080516001600160a01b0390931683526020830191909152819081015b0390f35b8580fd5b8480fd5b8380fd5b8280fd5b5034610139576020366003190112610139576102c3611124565b5f516020613d4b5f395f51905f52549060ff8260401c1615916001600160401b03811680159081610416575b600114908161040c575b159081610403575b506103f45767ffffffffffffffff1981166001175f516020613d4b5f395f51905f52556103699190836103c8575b506103386132b8565b6103406132b8565b6103486132b8565b60015f516020613d2b5f395f51905f52556103616132b8565b6101316132b8565b6103705780f35b68ff0000000000000000195f516020613d4b5f395f51905f5254165f516020613d4b5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b68ffffffffffffffffff191668010000000000000001175f516020613d4b5f395f51905f52555f61032f565b63f92ee8a960e01b8452600484fd5b9050155f610301565b303b1591506102f9565b8491506102ef565b50346101395780600319360112610139576102956040516104406040826111cc565b60058152640352e302e360dc1b60208201526040519182916020835260208301906112fe565b506101403660031901126101395761047c611124565b6024356001600160401b0381116102a55761049b903690600401611204565b6044356001600160401b0381116102a1576104ba90369060040161128d565b906064356001600160401b03811161029d576104da90369060040161128d565b6084356001600160401b038111610299576104f990369060040161128d565b60a4356001600160401b0381116105795761051890369060040161128d565b61052061113a565b91610529611150565b9361010435986001600160401b038a11610139575061054f6105699936906004016112d1565b979096610563610124358787878733611965565b996117fb565b9061029560405192839283611322565b8680fd5b50346108345761010036600319011261083457610598611124565b6024356001600160401b038111610834576105b7903690600401611204565b906044356001600160401b038111610834576105d790369060040161128d565b6064356001600160401b038111610834576105f690369060040161128d565b926084356001600160401b0381116108345761061690369060040161128d565b9360a4356001600160401b0381116108345761063690369060040161128d565b9461063f61113a565b9061064861170c565b61065860e4358389848733611965565b93610662886119eb565b94600460ff871603610838576106ea986106a96106a26106af937f0000000000000000000000000000000000000000000000000000000000000000612a69565b9788612acc565b86612b6e565b919b929893509091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169089856131c4565b6001600160a01b0383169a9093908b3b15610834578b5f92838d61072d8c978f968f8c908f8f6040519d8e9c8d9b8c9a63dd0371d560e01b8c5260048c0161150d565b03925af180156108295761080e575b50906004929161074b8261326a565b928b8b60405196878092630505472360e51b82525afa94851561080357917f74b670d628e152daa36ca95dda7cb0002d6ea7a37b55afe4593db7abd151578197969593916107c295938e60209f966107de575b50506040516001600160a01b039788169c9097169a339a979889989091908961161d565b0390a460015f516020613d2b5f395f51905f5255604051908152f35b6107fb9296503d8091833e6107f381836111cc565b8101906115e7565b935f8061079e565b6040513d8e823e3d90fd5b60049392919a505f61081f916111cc565b5f9990919261073c565b6040513d5f823e3d90fd5b5f80fd5b6306b7c75960e31b5f5260045ffd5b34610834575f366003190112610834576102956040516108686040826111cc565b6005815264189718971960d91b60208201526040519182916020835260208301906112fe565b34610834575f366003190112610834575f516020613ceb5f395f51905f52546040516001600160a01b039091168152602090f35b34610834576020366003190112610834576001600160a01b036108e3611124565b165f527f9a79df0b86f39d0543c14aee714123562f798115071e932933bcc3e29cc86f00602052602060ff60405f205416604051908152f35b34610834575f36600319011261083457610295610937611347565b6040519182916020835260208301906112fe565b34610834575f36600319011261083457610963612a36565b5f516020613ceb5f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610834575f366003190112610834575f516020613d0b5f395f51905f52546040516001600160a01b039091168152602090f35b34610834575f366003190112610834577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610a3d5760206040515f516020613d0b5f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261083457610a60611124565b6024356001600160401b03811161083457610a7f90369060040161128d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610c9d575b50610a3d57610ac1612a36565b604051631d74303760e21b81526001600160a01b03831692905f8160048183885af15f9181610c81575b50610c1e575b506040516352d1902d60e01b8152602081600481875afa5f9181610bea575b50610b285783634c9c8ce360e01b5f5260045260245ffd5b805f516020613d0b5f395f51905f52859203610bd85750813b15610bc6575f516020613d0b5f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115610bae575f80836020610bac95519101845af4610ba6613343565b9161371b565b005b505034610bb757005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610c16575b81610c06602093836111cc565b8101031261083457519085610b10565b3d9150610bf9565b610c26611347565b81516020830120906020815191012014610af157610c6b90610c7d610c49611347565b9160405193849363a23cbf7b60e01b85526040600486015260448501906112fe565b838103600319016024850152906112fe565b0390fd5b610c969192503d805f833e6107f381836111cc565b9085610aeb565b5f516020613d0b5f395f51905f52546001600160a01b03161415905083610ab4565b61012036600319011261083457610cd4611124565b6024356001600160401b03811161083457610cf3903690600401611204565b906044356001600160401b03811161083457610d1390369060040161128d565b6064356001600160401b03811161083457610d3290369060040161128d565b906084356001600160401b03811161083457610d5290369060040161128d565b60a435926001600160a01b038416840361083457610d6e61113a565b9260e4358060020b0361083457610dd696610d8761170c565b604051946002602087015260018060a01b03166040860152620bdb27196060860152620363306080860152600a60a08601526706de97e09bd1800060c086015260c0855261024a60e0866111cc565b6102666101043582612659565b34610834575f366003190112610834576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346108345760c036600319011261083457610e40611124565b6024356001600160401b03811161083457610e5f90369060040161128d565b906044356001600160401b03811161083457610e7f90369060040161128d565b906064356001600160401b03811161083457610e9f90369060040161128d565b6084356001600160a01b038116810361083457610ed5610ecf604394610eda938560559860209a60a43594611965565b926119eb565b611a04565b90604051913060388401526f5af43d82803e903d91602b57fd5bf3ff60248401526014830152733d602d80600a3d3981f3363d3d373d3d3d363d73825260588201526037600c820120607882015201206040519060018060a01b03168152f35b34610834575f366003190112610834576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610834575f366003190112610834576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610834575f366003190112610834576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6101203660031901126108345761101b611124565b6024356001600160401b0381116108345761103a903690600401611204565b906044356001600160401b0381116108345761105a90369060040161128d565b6064356001600160401b0381116108345761107990369060040161128d565b926084356001600160401b0381116108345761109990369060040161128d565b60a4356001600160401b038111610834576110b890369060040161128d565b6110c061113a565b906110c9611150565b9261010435976001600160401b038911610834576110ee6111039936906004016112d1565b9790966110f961170c565b610563828b611744565b9060015f516020613d2b5f395f51905f525561029560405192839283611322565b600435906001600160a01b038216820361083457565b60c435906001600160a01b038216820361083457565b60e435906001600160a01b038216820361083457565b606081019081106001600160401b0382111761118157604052565b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761118157604052565b60a081019081106001600160401b0382111761118157604052565b90601f801991011681019081106001600160401b0382111761118157604052565b6001600160401b0381116111815760051b60200190565b9080601f830112156108345781359061121c826111ed565b9261122a60405194856111cc565b82845260208085019360051b82010191821161083457602001915b8183106112525750505090565b82356001600160a01b038116810361083457815260209283019201611245565b6001600160401b03811161118157601f01601f191660200190565b81601f82011215610834576020813591016112a782611272565b926112b560405194856111cc565b8284528282011161083457815f92602092838601378301015290565b9181601f84011215610834578235916001600160401b038311610834576020838186019501011161083457565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6001600160a01b039091168152604060208201819052611344929101906112fe565b90565b604051906113566040836111cc565b600f82526e5a6f7261436f696e466163746f727960881b6020830152565b90602080835192838152019201905f5b8181106113915750505090565b82516001600160a01b0316845260209384019390920191600101611384565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b90602080835192838152019201905f5b8181106114105750505090565b825160020b845260209384019390920191600101611403565b610100820160ff825116835261ffff602083015116602084015262ffffff6040830151166040840152606082015160020b606084015260808201519061010060808501528151809152602061012085019201905f5b8181106114f3575050506114b56114a360e09260a085015186820360a08801526113f3565b60c084015185820360c08701526113f3565b9101519160e0818303910152602080835192838152019201905f5b8181106114dd5750505090565b82518452602093840193909201916001016114d0565b825161ffff1684526020938401939092019160010161147e565b96926113449a989461155661156492611548611572966101c09b9e9b60208e6115939d9960018060a01b0316815201526101c08d0190611374565b908b820360408d01526112fe565b9089820360608b01526112fe565b9087820360808901526112fe565b6001600160a01b0397881660a0870152961660c085015260e08401906113b0565b6001600160a01b03166101808201528083036101a090910152611429565b9291926115bd82611272565b916115cb60405193846111cc565b829481845281830111610834578281602093845f96015e010152565b602081830312610834578051906001600160401b03821161083457019080601f83011215610834578151611344926020016115b1565b94969361165f611687946116516113449b999561166d9560018060a01b03168a5261018060208b01526101808a01906112fe565b9088820360408a01526112fe565b9086820360608801526112fe565b6001600160a01b03909616608085015260a08401906113b0565b6101408201526101608184039101526112fe565b6001600160a01b031680156116f9575f516020613ceb5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b60025f516020613d2b5f395f51905f5254146117355760025f516020613d2b5f395f51905f5255565b633ee5aeb560e01b5f5260045ffd5b906040516117716020828180820195805191829101875e81015f838201520301601f1981018352826111cc565b5190206040519060208201923360601b84526001600160601b03199060601b16603483015260488201524160601b606882015243607c82015244609c8201524260bc8201523a60dc8201523260601b60fc8201525f61011082015261011081526117dd610130826111cc565b51902090565b90816020910312610834575180151581036108345790565b959261181995929b9a949198979b60609960018060a01b0398611a74565b16946001600160a01b031691821561194a57506040516301ffc9a760e01b815263337bf44960e21b6004820152602081602481865afa908115610829575f9161191b575b501561190c575f918391608460405180968195829463337bf44960e21b84523360048501528b602485015260606044850152816064850152848401378181018301879052601f01601f1916810103019134905af1908115610829575f916118c2575090565b90503d805f833e6118d381836111cc565b810190602081830312610834578051906001600160401b03821161083457019080601f83011215610834578151611344926020016115b1565b639c9d882360e01b5f5260045ffd5b61193d915060203d602011611943575b61193581836111cc565b8101906117e3565b5f61185d565b503d61192b565b93925050503461195657565b630f09014960e21b5f5260045ffd5b9493602094856117dd9560348281976040519a8b98818a01809e6001600160601b03199060601b169052805191829101858b015e8801908382015f8152815193849201905e0101905f8252805192839101825e01916001600160601b03199060601b16825260148201520360148101845201826111cc565b519060ff8216820361083457565b60208180518101031261083457602061134491016119dd565b611a0d8161328a565b15611a3757507f000000000000000000000000000000000000000000000000000000000000000090565b60ff16600414611a5057637103df4360e01b5f5260045ffd5b7f000000000000000000000000000000000000000000000000000000000000000090565b96959293919094966101c052610240526101e05261014052611ac9611aaa611a9b866119eb565b94611aa586611a04565b612a69565b5f610260526001600160a01b031694611ac38587612acc565b85612b6e565b61022052610180529094909150611adf8161328a565b156124b75750604051637c887c5960e01b8152602081600481895afa908115611f76576102605191612498575b506101805115612490576020865b610180511561248757606487915b60405163a167129560e01b81526001600160a01b03918216600482015292811660248401526127106044840152610260519294859384929091165af18015611f76576102605161020052612455575b50610200516001600160a01b03163b15611f9f5760405163f637731d60e01b81526001600160a01b039182166004820152610260516102005191929091839160249183918591165af18015611f765761243a575b506102605160c05261ffff602061022051015116611be8816111ed565b90611bf660405192836111cc565b808252611c05601f19916111ed565b01610260515b81811061242357505060c052610260516101a08190526101008190526102205160a001515161012052610160525b610120516101605110612030576101a0516b0332e8a789bc7ef49e000000908103908111611fe3576102205160a00151610120515f19810192908311611fe357611ca5611c8e846001600160801b0394613322565b5160020b9360c06102205101516102605150613322565b5160020b611cb16132e3565b50610180511561201157925b610180511561200c5750611ccf61383c565b8060020b91611cf7611cf18660020b96611cec8582888b12613407565b6138bf565b926138bf565b6101805115611ffd57611d0992613c48565b905b60405193611d1885611166565b845260208401521660408201525f1961ffff602061022051015116019061ffff8211611fe35761ffff611d5c921690611d538260c051613322565b5260c051613322565b50833b15611f9f576040519063812a353560e01b8252611de0611dcb611db9611da460018060a01b036101c05116968760048801526101406024880152610144870190611374565b858103600319016044870152610240516112fe565b848103600319016064860152836112fe565b8381036003190160848501526101e0516112fe565b610140516001600160a01b0390811660a4850181905295811660c485018190526102005190911660e48501528382036003190161010485015261022051909391611e2991611429565b60031982820301610124830152602060c05151918281520190602060c0510190610260515b818110611fa657505050818061026051920381610260518a5af18015611f7657611f84575b5060405190630505472360e51b82526102605182600481895afa918215611f76576102605192611f37575b507f3d1462491f7fa8396808c230d95c3fa60fd09ef59506d0b9bd1cf072d2a03f569192611f31611f09611ef8604051948594855260e06020860152611eea60e08601610240516112fe565b9085820360408701526112fe565b83810360608501526101e0516112fe565b60808301899052610200516001600160a01b031660a084015282810360c084015233956112fe565b0390a490565b7f3d1462491f7fa8396808c230d95c3fa60fd09ef59506d0b9bd1cf072d2a03f569250611f70903d8061026051833e6107f381836111cc565b91611e9e565b6040513d61026051823e3d90fd5b61026051611f91916111cc565b61026051611f9f575f611e73565b6102605180fd5b909192602060606001926001600160801b0360408851805160020b84528581015160020b8685015201511660408201520194019101919091611e4e565b634e487b7160e01b61026051526011600452602461026051fd5b61200692613c05565b90611d0b565b611ccf565b5061202a60c861202581620d89e719613779565b6137af565b92611cbd565b61204d6120476101605160e0610220510151613322565b5161342b565b60a0526120646101605160a0610220510151613322565b5160020b61207c6101605160c0610220510151613322565b5160020b906120c461ffff61209b610160516080610220510151613322565b5116916102605160e052610180515f1461241a578360e0525b61018051156124145780936136c5565b6080526120d260e0516138bf565b81670de0b6b3a7640000810204670de0b6b3a76400001482151715611fe357612107670de0b6b3a7640000830260a0516134c7565b6102605193845b84811061218357505050505060a051811161216e576101a0516121319190613336565b6101a05261215a61ffff61214f610160516080610220510151613322565b511661010051613336565b610100526001610160510161016052611c39565b6366bf045960e01b6102605152600461026051fd5b61018051156123ec576121b86121af62ffffff6121a58882608051168661362a565b1660020b846136fd565b610180516137c6565b60e05160020b8160020b036121d1575b5060010161210e565b6121da816138bf565b6102605160a051909190612268575b6001939261224f9290916001600160a01b039081169089161015612256576001600160801b039060e051925b6040519361222285611166565b60020b845260020b60208401521660408201526122428361010051613336565b90611d538260c051613322565b50906121c8565b60e0516001600160801b039190612215565b61018051909893929150156123dc5761228285878a613c48565b6101805181908a901561239057508990886001600160a01b0380821690841611612386575b6001600160a01b03831615612377576122df6001600160a01b038281169085840316606085901b600160601b600160e01b031661362a565b916001600160a01b0382161561235d576001600160a01b0382811692859003169060601b600160601b600160e01b031609612347575b60019561224f94939261233b926001600160a01b03909116808204910615150190613336565b999193945091506121e9565b909291906001018015611f9f5792909192612315565b634e487b7160e01b61026051526012600452602461026051fd5b62bfc92161026051526004601cfd5b508891508a6122a7565b60019561224f94939261233b926001600160a01b03908116908c160360ff81901d908101189088906001600160801b03166123cb838261355e565b928260601b91091515160190613336565b6123e7858988613c05565b612282565b6121b861240f62ffffff6124058882608051168661362a565b1660020b846136c5565b6121af565b836136c5565b8060e0526120b4565b60209061242e6132e3565b82828601015201611c0b565b61026051612447916111cc565b61026051611f9f575f611bcb565b6124769060203d602011612480575b61246e81836111cc565b810190612624565b610200525f611b77565b503d612464565b60648891611b28565b602085611b1a565b6124b1915060203d6020116124805761246e81836111cc565b5f611b0c565b9093929060ff1660040361261557610180516124ff907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169085886131c4565b93853b1561083457612543915f91604051938492839263dd0371d560e01b84528989610220519361014051908b6101e0519161024051906101c05160048c0161150d565b038183895af1801561082957612600575b5061255e8361326a565b60405190630505472360e51b82526102605182600481895afa908115611f76577f2de436107c2096e039c98bbcc3c5a2560583738ce15c234557eecb4d3221aa819261026051926125e1575b50611f3160405192839260018060a01b036101405116988a60018060a01b036101c051169933996101e0519161024051908961161d565b6125f99192503d8061026051833e6107f381836111cc565b905f6125aa565b5f61260a916111cc565b5f610260525f612554565b637103df4360e01b5f5260045ffd5b9081602091031261083457516001600160a01b03811681036108345790565b9190826040910312610834576020825192015190565b91905f9234159081158092612a2d575b61267257505050565b60405163e5a6b10f60e01b81529394509091906001600160a01b0316602084600481845afa938415610829575f94612a0c575b50604051633fb80b1560e01b815292602084600481855afa938415610829575f946129eb575b506040516315ab88c960e31b815294602086600481865afa958615610829575f966129ca575b506001600160a01b039081169516851461296e57611956576040516370a0823160e01b8152306004820152602081602481885afa908115610829575f9161293c575b506127815f8060405160208101906323b872dd60e01b82523360248201523060448201528760648201526064815261276c6084826111cc565b5190828a5af161277a613343565b908761371b565b8051908115159182612921575b505061290e576040516370a0823160e01b815230600482015290602082602481895afa918215610829575f926128da575b5081039081116128c65782036128b75760405163095ea7b360e01b81526001600160a01b03821660048201526024810183905293602090859060449082905f905af1928315610829576128579460409461289a575b505f845180968195829463c957180f60e01b8452600484016080905f92949360a082019560018060a01b0316825260208201528260408201528260608201520152565b03925af1908115610829575f9161286c575090565b61288e915060403d604011612893575b61288681836111cc565b810190612643565b905090565b503d61287c565b6128b29060203d6020116119435761193581836111cc565b612814565b63f36aeaa960e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b9091506020813d602011612906575b816128f6602093836111cc565b810103126108345751905f6127bf565b3d91506128e9565b84635274afe760e01b5f5260045260245ffd5b61293492506020809183010191016117e3565b155f8061278e565b90506020813d602011612966575b81612957602093836111cc565b8101031261083457515f612733565b3d915061294a565b506040805163c957180f60e01b81526001600160a01b0394909416600485015260248401929092525f6044840181905260648401819052608484015291925090829060a490829034905af1908115610829575f9161286c575090565b6129e491965060203d6020116124805761246e81836111cc565b945f6126f1565b612a0591945060203d6020116124805761246e81836111cc565b925f6126cb565b612a2691945060203d6020116124805761246e81836111cc565b925f6126a5565b50821515612669565b5f516020613ceb5f395f51905f52546001600160a01b03163303612a5657565b63118cdaa760e01b5f523360045260245ffd5b6e5af43d82803e903d91602b57fd5bf390763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f5260781b17602052603760095ff5906001600160a01b03821615612abd57565b6330be1a3d60e21b5f5260045ffd5b6040519160208301908382106001600160401b038311176111815760ff9160405216825260018060a01b03165f527f9a79df0b86f39d0543c14aee714123562f798115071e932933bcc3e29cc86f0060205260ff60405f2091511660ff19825416179055565b60405190612b3f82611195565b606060e0835f81525f60208201525f60408201525f838201528260808201528260a08201528260c08201520152565b91612b77612b32565b5081519160408160208101948101031261083457612b94836119dd565b90604081016001600160a01b03612baa826132a4565b169460ff86859860018060a01b03161094612bc3612b32565b501660028103612dc0575090612bd7612b32565b5060c08380518101031261083457612bf1612bf7926119dd565b506132a4565b50612c0460608201613372565b90612c1160808201613372565b9161ffff60c0612c2360a085016133e5565b9301519216926001841180612db5575b15612da657670de0b6b3a76400008311612d8757604092835192612c5785856111cc565b60018452601f1985019283366020870137855191612c7587846111cc565b6001835284366020850137865193612c8d88866111cc565b6001855285366020870137875195612ca589886111cc565b60018752366020880137612cb887613301565b5287612cc384613301565b528815612d7957805b612cd585613301565b9060020b9052885f14612d6a57505b612ced84613301565b9060020b9052865f14612d5c576001612d11612d0884613301565b5160020b6138bf565b96019461ffff86116128c6578061ffff612710925197612d3089611195565b6002895216602088015286015260c86060860152608085015260a084015260c083015260e08201529092565b6001612d11612d0885613301565b612d7491506133f4565b612ce4565b612d82826133f4565b612ccc565b8263acd0d9e960e01b5f52600452670de0b6b3a764000060245260445ffd5b63f5a5256f60e01b5f5260045ffd5b5060c8841115612c33565b60040361261557612dcf612b32565b50825183019160c0846020850194031261083457612bf1612def926119dd565b5060608201516001600160401b03811161083457816020612e1292850101613380565b9060808301516001600160401b03811161083457816020612e3592860101613380565b60a08401516001600160401b0381116108345784019382603f8601121561083457602085015194612e65866111ed565b95612e7360405197886111cc565b8087526020808089019260051b840101019185831161083457604001905b8282106131ac5750505060c0810151906001600160401b03821161083457019180603f84011215610834576020830151612eca816111ed565b93612ed860405195866111cc565b8185526020808087019360051b8301010192831161083457604001905b82821061319c5750505082519281518414801590613191575b8015613186575b613177575f5f94612f258861384e565b91612f2f8961388d565b915f905b808210612ffd575050612f4f82848160020b8160020b12613407565b6001871180612ff2575b15612da657670de0b6b3a7640000811015612fd45750612f8091908815612fcd57506138bf565b94600185018095116128c65761ffff60405195612f9c87611195565b60048752166020860152617530604086015260c86060860152608085015260a084015260c083015260e08201529092565b90506138bf565b63acd0d9e960e01b5f52600452670de0b6b3a764000060245260445ffd5b5060c8871115612f59565b909293919761ffff61300f858c613322565b511615613168576130208489613322565b5115613159576130426130549161ffff61303a878e613322565b511690613336565b9861304d858a613322565b5190613336565b9161306c6130628588613322565b5160020b8c6137c6565b613083613079868a613322565b5160020b8d6137c6565b908160020b8160020b121561314a578c1561313c57805b6130a4878a613322565b9060020b90528c5f1461312d57505b6130bd8589613322565b9060020b90526130cd8487613322565b5160020b8160020b125f14613119575b936130e88488613322565b5160020b8160020b135f14613103576001905b930190612f33565b5060016131108488613322565b5160020b6130fb565b506131248386613322565b5160020b6130dd565b61313791506133f4565b6130b3565b613145826133f4565b61309a565b630f5c311f60e41b5f5260045ffd5b63cf178a9d60e01b5f5260045ffd5b63e0961f8960e01b5f5260045ffd5b63512509d360e11b5f5260045ffd5b508251841415612f15565b508451841415612f0e565b8151815260209182019101612ef5565b602080916131b9846133e5565b815201910190612e91565b9291925f60806040516131d6816111b1565b8281528260208201528260408201528260608201520152835f1461325a576001600160a01b038116935b1561324a57506001600160a01b03165b6040519261321d846111b1565b6001600160a01b0390811684529081166020840152617530604084015260c8606084015216608082015290565b6001600160a01b03169050613210565b6001600160a01b03821693613200565b60405161327b6020820180936113b0565b60a081526117dd60c0826111cc565b60ff166002811490811561329c575090565b600191501490565b51906001600160a01b038216820361083457565b60ff5f516020613d4b5f395f51905f525460401c16156132d457565b631afcd79f60e31b5f5260045ffd5b604051906132f082611166565b5f6040838281528260208201520152565b80511561330e5760200190565b634e487b7160e01b5f52603260045260245ffd5b805182101561330e5760209160051b010190565b919082018092116128c657565b3d1561336d573d9061335482611272565b9161336260405193846111cc565b82523d5f602084013e565b606090565b51908160020b820361083457565b9080601f83011215610834578151613397816111ed565b926133a560405194856111cc565b81845260208085019260051b82010192831161083457602001905b8282106133cd5750505090565b602080916133da84613372565b8152019101906133c0565b519061ffff8216820361083457565b60020b627fffff1981146128c6575f0390565b15613410575050565b63352d1ec160e11b5f5260020b60045260020b60245260445ffd5b806b0332e8a789bc7ef49e000000025f19826b0332e8a789bc7ef49e00000009818082109103908082039182670de0b6b3a7640000111561083457146134b757670de0b6b3a76400007faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac10669936b0332e8a789bc7ef49e0000000990828211900360ee1b910360121c170290565b50670de0b6b3a764000091500490565b90670de0b6b3a76400008202905f19670de0b6b3a7640000840992828085109403938085039485841115610834571461355757670de0b6b3a764000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b81810291905f1982820991838084109303928084039384600160601b1115610834571461359e57600160601b910990828211900360a01b910360601c1790565b50505060601c90565b90606082901b905f19600160601b8409928280851094039380850394858411156108345714613557578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b91818302915f198185099383808610950394808603958685111561083457146136a2579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b60020b5f190190627fffff198212627fffff8313176128c657565b600291820b910b0390627fffff198212627fffff8313176128c657565b60020b60010190627fffff8213627fffff198312176128c657565b9060020b9060020b0190627fffff198212627fffff8313176128c657565b9061373f575080511561373057805190602001fd5b630a12f52160e11b5f5260045ffd5b81511580613770575b613750575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15613748565b60020b9060020b90811561379b57627fffff1981145f198314166128c6570590565b634e487b7160e01b5f52601260045260245ffd5b9060020b9060020b02908160020b9182036128c657565b15613806575f8160020b125f146137f75760c8612025816137f26137ed82611344966136c5565b6136e2565b613779565b60c86120258161134493613779565b5f8160020b125f146138215760c86120258161134493613779565b60c8612025816137f261383782611344966136fd565b6136aa565b61134460c861202581620d89e8613779565b5f9015613873571561383c5761134460c8612025816137f26137ed82620d89e86136c5565b5061134460c8612025816137f261383782620d89e86136fd565b156138ac5761134460c8612025816137f26137ed82620d89e7196136c5565b61134460c861202581620d89e719613779565b60020b908160ff1d82810118620d89e88111613bd95763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b189160028116613bbd575b60048116613ba1575b60088116613b85575b60108116613b69575b60208116613b4d575b60408116613b31575b60808116613b15575b6101008116613af9575b6102008116613add575b6104008116613ac1575b6108008116613aa5575b6110008116613a89575b6120008116613a6d575b6140008116613a51575b6180008116613a35575b620100008116613a19575b6202000081166139fe575b6204000081166139e3575b62080000166139ca575b5f126139c2575b0160201c90565b5f19046139bb565b6b048a170391f7dc42444e8fa290910260801c906139b4565b6d2216e584f5fa1ea926041bedfe9890920260801c916139aa565b916e5d6af8dedb81196699c329225ee6040260801c9161399f565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91613994565b916f31be135f97d08fd981231505542fcfa60260801c91613989565b916f70d869a156d2a1b890bb3df62baf32f70260801c9161397f565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91613975565b916fd097f3bdfd2022b8845ad8f792aa58250260801c9161396b565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91613961565b916ff3392b0822b70005940c7a398e4b70f30260801c91613957565b916ff987a7253ac413176f2b074cf7815e540260801c9161394d565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91613943565b916ffe5dee046a99a2a811c461f1969c30530260801c91613939565b916fff2ea16466c96a3843ec78b326b528610260801c91613930565b916fff973b41fa98c081472e6896dfb254c00260801c91613927565b916fffcb9843d60f6159c9db58835c9266440260801c9161391e565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91613915565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c9161390c565b916ffff97272373d413259a46990580e213a0260801c91613903565b826345c3193d60e11b5f5260045260245ffd5b6001600160a01b0391821690821603919082116128c657565b61134492613c3d9290916001600160a01b0380831690821611613c42575b6001600160a01b0391613c369190613bec565b16906135a7565b613c9c565b90613c23565b61134492613c3d929091906001600160a01b0380821690831611613c96575b613c8f613c806001600160a01b0383811690851661355e565b926001600160a01b0392613bec565b169161362a565b90613c67565b906001600160801b038216918203613cb057565b60405162461bcd60e51b81526020600482015260126024820152716c6971756964697479206f766572666c6f7760701b6044820152606490fdfe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212201ccbfa630401d976af51e61d1531b27595c0a318bd0a889167cbbddd0a476da964736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0000000000000000000000000045bf86430af7cd071ea23ae52325a78c8d12ad5a000000000000000000000000ca72309aaf706d290e08608b1af47943902f69b200000000000000000000000088cc4e08c7608723f3e44e17ac669fb43b6a83130000000000000000000000009ea932730a7787000042e34390b8e435dd839040000000000000000000000000d61a675f8a0c67a73dc3b54fb7318b4d91409040