From 3ad140053e1457a6e2889def7792e8f905f6c6ec Mon Sep 17 00:00:00 2001 From: James Duncombe Date: Wed, 21 Feb 2024 16:36:23 +0000 Subject: [PATCH] Deploys GG and GLD to Mumbai. --- deployments/mumbai/FastGG.json | 3221 ++++++++++++++++++ deployments/mumbai/FastGG_DiamondProxy.json | 3062 +++++++++++++++++ deployments/mumbai/FastGLD.json | 3221 ++++++++++++++++++ deployments/mumbai/FastGLD_DiamondProxy.json | 3062 +++++++++++++++++ 4 files changed, 12566 insertions(+) create mode 100644 deployments/mumbai/FastGG.json create mode 100644 deployments/mumbai/FastGG_DiamondProxy.json create mode 100644 deployments/mumbai/FastGLD.json create mode 100644 deployments/mumbai/FastGLD_DiamondProxy.json diff --git a/deployments/mumbai/FastGG.json b/deployments/mumbai/FastGG.json new file mode 100644 index 00000000..be6523e5 --- /dev/null +++ b/deployments/mumbai/FastGG.json @@ -0,0 +1,3221 @@ +{ + "address": "0x6a5a6E84708EBE03191046F3ff0B1DF99e4fEa51", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_contractOwner", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum IDiamondCut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct IDiamondCut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "initContract", + "type": "address" + }, + { + "internalType": "bytes", + "name": "initData", + "type": "bytes" + } + ], + "internalType": "struct Diamond.Initialization[]", + "name": "_initializations", + "type": "tuple[]" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + }, + { + "inputs": [], + "name": "InternalMethod", + "type": "error" + }, + { + "inputs": [], + "name": "RequiresIssuerMemberOrIssuerCaller", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresIssuerMembership", + "type": "error" + }, + { + "inputs": [], + "name": "UnsupportedOperation", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "ref", + "type": "string" + }, + { + "indexed": true, + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "Burnt", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "basisPointFee", + "type": "uint32" + } + ], + "name": "CrowdfundDefaultBasisPointFeeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Crowdfund", + "name": "crowdfund", + "type": "address" + } + ], + "name": "CrowdfundDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Crowdfund", + "name": "crowdfund", + "type": "address" + } + ], + "name": "CrowdfundRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "transfersDisabled", + "type": "bool" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "crowdfundsDefaultBasisPointsFee", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "memberCount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "governorCount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reserveBalance", + "type": "uint256" + } + ], + "name": "DetailsChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Disapproval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Distribution", + "name": "distribution", + "type": "address" + } + ], + "name": "DistributionDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Distribution", + "name": "distribution", + "type": "address" + } + ], + "name": "DistributionRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "FastTransfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "ref", + "type": "string" + }, + { + "indexed": true, + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "group", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "hasFixedSupply", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isSemiPublic", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "marketplaceAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "newGroup", + "type": "string" + } + ], + "name": "setGroup", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "flag", + "type": "bool" + } + ], + "name": "setIsSemiPublic", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "flag", + "type": "bool" + } + ], + "name": "setTransfersDisabled", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "transfersDisabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresGovernorsManager", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresMembersManager", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresValidGovernor", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresValidMember", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "governor", + "type": "address" + } + ], + "name": "GovernorAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "governor", + "type": "address" + } + ], + "name": "GovernorRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "MemberAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "MemberRemoved", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "addGovernor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "addMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "a", + "type": "address" + } + ], + "name": "flags", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + } + ], + "internalType": "struct FastAccessFacet.Flags", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governorCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isGovernor", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isMember", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "memberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateGovernors", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateMembers", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "governor", + "type": "address" + } + ], + "name": "removeGovernor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "removeMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresAutomatonsManager", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "automaton", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint32", + "name": "privileges", + "type": "uint32" + } + ], + "name": "AutomatonPrivilegesSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "automaton", + "type": "address" + } + ], + "name": "AutomatonRemoved", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "automaton", + "type": "address" + }, + { + "internalType": "uint32", + "name": "privilege", + "type": "uint32" + } + ], + "name": "automatonCan", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "automatonCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "automaton", + "type": "address" + } + ], + "name": "automatonPrivileges", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "candidate", + "type": "address" + } + ], + "name": "isAutomaton", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateAutomatons", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "candidate", + "type": "address" + } + ], + "name": "removeAutomaton", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "candidate", + "type": "address" + }, + { + "internalType": "uint32", + "name": "privileges", + "type": "uint32" + } + ], + "name": "setAutomatonPrivileges", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "RequiresContinuousSupply", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "a", + "type": "address" + } + ], + "name": "RequiresDifferentSenderAndRecipient", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresFastMembership", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresMarketplaceActiveMembership", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "holder", + "type": "address" + } + ], + "name": "RequiresPositiveBalance", + "type": "error" + }, + { + "inputs": [], + "name": "RequiresTransfersEnabled", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresValidTokenHolder", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "beforeRemovingMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "disapprove", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "givenAllowanceCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "holders", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateAllowancesByOwner", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateAllowancesBySpender", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "performApproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "performDisapproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct FastTokenFacet.TransferArgs", + "name": "p", + "type": "tuple" + } + ], + "name": "performTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "receivedAllowanceCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "holder", + "type": "address" + } + ], + "name": "retrieveDeadTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "transferFromWithRef", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "transferWithRef", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "burnt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "minted", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateSupplyProofs", + "outputs": [ + { + "components": [ + { + "internalType": "enum LibFastHistory.SupplyOp", + "name": "op", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct LibFastHistory.SupplyProof[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "involvee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateTransferProofIndicesByInvolvee", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateTransferProofs", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct LibFastHistory.TransferProof[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "involvee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateTransferProofsByInvolvee", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct LibFastHistory.TransferProof[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "supplyProofCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "involvee", + "type": "address" + } + ], + "name": "transferProofByInvolveeCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "transferProofCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "transfered", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "detailedPrivileges", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ethBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "automatonPrivileges", + "type": "uint32" + } + ], + "internalType": "struct FastFrontendFacet.PrivilegesDetails", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "details", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isSemiPublic", + "type": "bool" + }, + { + "internalType": "bool", + "name": "hasFixedSupply", + "type": "bool" + }, + { + "internalType": "bool", + "name": "transfersDisabled", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "crowdfundsDefaultBasisPointsFee", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "reserveBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "memberCount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "governorCount", + "type": "uint256" + } + ], + "internalType": "struct FastFrontendFacet.Details", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "emitDetailsChanged", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedCrowdfunds", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint16", + "name": "VERSION", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "issuer", + "type": "address" + }, + { + "internalType": "address", + "name": "fast", + "type": "address" + }, + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "internalType": "uint32", + "name": "basisPointsFee", + "type": "uint32" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct Crowdfund.Params", + "name": "params", + "type": "tuple" + }, + { + "internalType": "enum Crowdfund.Phase", + "name": "phase", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "creationBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pledgerCount", + "type": "uint256" + } + ], + "internalType": "struct Crowdfund.Details[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedDistributions", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint16", + "name": "VERSION", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "distributor", + "type": "address" + }, + { + "internalType": "address", + "name": "issuer", + "type": "address" + }, + { + "internalType": "address", + "name": "fast", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockLatch", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "total", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct Distribution.Params", + "name": "params", + "type": "tuple" + }, + { + "internalType": "enum Distribution.Phase", + "name": "phase", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "creationBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "available", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "beneficiaryCount", + "type": "uint256" + } + ], + "internalType": "struct Distribution.Details[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedGovernors", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ethBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "automatonPrivileges", + "type": "uint32" + } + ], + "internalType": "struct FastFrontendFacet.PrivilegesDetails[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedMembers", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ethBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "automatonPrivileges", + "type": "uint32" + } + ], + "internalType": "struct FastFrontendFacet.PrivilegesDetails[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "InsufficientFunds", + "type": "error" + }, + { + "inputs": [], + "name": "TokenContractError", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "total", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockLatch", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "createDistribution", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "distributionCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDistributions", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Distribution", + "name": "distribution", + "type": "address" + } + ], + "name": "removeDistribution", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "fee", + "type": "uint32" + } + ], + "name": "InvalidCrowdfundBasisPointsFee", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresFastGovernorship", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "uint32", + "name": "privilege", + "type": "uint32" + } + ], + "name": "RequiresPrivilege", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "createCrowdfund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "crowdfundCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "crowdfundsDefaultBasisPointFee", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateCrowdfunds", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Crowdfund", + "name": "crowdfund", + "type": "address" + } + ], + "name": "removeCrowdfund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "newBasisPointFee", + "type": "uint32" + } + ], + "name": "setCrowdfundsDefaultBasisPointFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum IDiamondCut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "indexed": false, + "internalType": "struct IDiamondCut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "address", + "name": "_init", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "DiamondCut", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum IDiamondCut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct IDiamondCut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "_init", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "diamondCut", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "owner_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_functionSelector", + "type": "bytes4" + } + ], + "name": "facetAddress", + "outputs": [ + { + "internalType": "address", + "name": "facetAddress_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facetAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "facetAddresses_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_facet", + "type": "address" + } + ], + "name": "facetFunctionSelectors", + "outputs": [ + { + "internalType": "bytes4[]", + "name": "facetFunctionSelectors_", + "type": "bytes4[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facets", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct IDiamondLoupe.Facet[]", + "name": "facets_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0xa672c52840426e81ab9be5dabd99601b594a1c9d83254c5316c2bd1b5843ce00", + "receipt": { + "to": "0x6DF2D25d8C6FD680730ee658b530A05a99BB769a", + "from": "0x717634cfe06FFAB2CEAA7fcf1b9019813f4B25FE", + "contractAddress": null, + "transactionIndex": 7, + "gasUsed": "5298831", + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000020000000000000042000000000000000100000000008000000000000000000000000000000000000000000000000040000000800001000001000000000900000000000000000000020000000000000000000800000000000000000180000000000000400020000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000004000000000000000000001000000000000000000000000000000100000000020000100000000000080000400000000000000000000000000000000000000100000", + "blockHash": "0x27dad9f9044184bf4b231fb4e3847e8699a68d2580eb2b0459d0f27c18c0bd4f", + "transactionHash": "0xa672c52840426e81ab9be5dabd99601b594a1c9d83254c5316c2bd1b5843ce00", + "logs": [ + { + "transactionIndex": 7, + "blockNumber": 46174112, + "transactionHash": "0xa672c52840426e81ab9be5dabd99601b594a1c9d83254c5316c2bd1b5843ce00", + "address": "0x6a5a6E84708EBE03191046F3ff0B1DF99e4fEa51", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000717634cfe06ffab2ceaa7fcf1b9019813f4b25fe" + ], + "data": "0x", + "logIndex": 16, + "blockHash": "0x27dad9f9044184bf4b231fb4e3847e8699a68d2580eb2b0459d0f27c18c0bd4f" + }, + { + "transactionIndex": 7, + "blockNumber": 46174112, + "transactionHash": "0xa672c52840426e81ab9be5dabd99601b594a1c9d83254c5316c2bd1b5843ce00", + "address": "0x6a5a6E84708EBE03191046F3ff0B1DF99e4fEa51", + "topics": [ + "0x8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001220000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004e0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000009c00000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000ce00000000000000000000000000000000000000000000000000000000000000de00000000000000000000000000000000000000000000000000000000000000f200000000000000000000000000000000000000000000000000000000000000fc000000000000000000000000000000000000000000000000000000000000010800000000000000000000000006c5742bfa6c3ac6c149466579123cb04d8db4a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000929e7ef2d00000000000000000000000000000000000000000000000000000000ddb2d22b0000000000000000000000000000000000000000000000000000000011e5493300000000000000000000000000000000000000000000000000000000a63234e000000000000000000000000000000000000000000000000000000000daa17f4900000000000000000000000000000000000000000000000000000000c97b973000000000000000000000000000000000000000000000000000000000d65cd010000000000000000000000000000000000000000000000000000000008762d38e00000000000000000000000000000000000000000000000000000000034cd72500000000000000000000000000000000000000000000000000000000000000000000000000000000de7c5f5377a5c5e521e530bbac55a59ab8cd337000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b3c4a25d000000000000000000000000000000000000000000000000000000000ca6d56dc000000000000000000000000000000000000000000000000000000009fef0c0100000000000000000000000000000000000000000000000000000000e8c9fd4500000000000000000000000000000000000000000000000000000000e43581b800000000000000000000000000000000000000000000000000000000a230c5240000000000000000000000000000000000000000000000000000000011aee380000000000000000000000000000000000000000000000000000000005a4c75d500000000000000000000000000000000000000000000000000000000c6549ba400000000000000000000000000000000000000000000000000000000eecdac88000000000000000000000000000000000000000000000000000000000b1ca49a00000000000000000000000000000000000000000000000000000000000000000000000000000000305c0e7e3bdd77db1b7d9adf3c8144644948d459000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000007617b0b9d00000000000000000000000000000000000000000000000000000000ccf90c7400000000000000000000000000000000000000000000000000000000b87c747500000000000000000000000000000000000000000000000000000000b70cc72a0000000000000000000000000000000000000000000000000000000076a7383d00000000000000000000000000000000000000000000000000000000911a56cc000000000000000000000000000000000000000000000000000000003e39e4cf00000000000000000000000000000000000000000000000000000000000000000000000000000000eb0e5abfe38e825264be2abeec5d6148dd563439000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000018dd62ed3e00000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000070a08231000000000000000000000000000000000000000000000000000000005d7b590f000000000000000000000000000000000000000000000000000000007641e6f300000000000000000000000000000000000000000000000000000000313ce56700000000000000000000000000000000000000000000000000000000fbabdb060000000000000000000000000000000000000000000000000000000006675ba7000000000000000000000000000000000000000000000000000000008188f71c0000000000000000000000000000000000000000000000000000000077097fc80000000000000000000000000000000000000000000000000000000006fdde03000000000000000000000000000000000000000000000000000000001fe02e53000000000000000000000000000000000000000000000000000000009c999d90000000000000000000000000000000000000000000000000000000005480699a000000000000000000000000000000000000000000000000000000006bd7bd250000000000000000000000000000000000000000000000000000000044890ae00000000000000000000000000000000000000000000000000000000081a8f243000000000000000000000000000000000000000000000000000000003a8682240000000000000000000000000000000000000000000000000000000095d89b410000000000000000000000000000000000000000000000000000000018160ddd00000000000000000000000000000000000000000000000000000000a9059cbb0000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000c485bb9600000000000000000000000000000000000000000000000000000000e8edd0e300000000000000000000000000000000000000000000000000000000000000000000000000000000f1094c3cd6659d373366aa0945bad33acb47e87800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000af4c1210c00000000000000000000000000000000000000000000000000000000af2e757b00000000000000000000000000000000000000000000000000000000b74977bb00000000000000000000000000000000000000000000000000000000538be4ac00000000000000000000000000000000000000000000000000000000f4b54f3300000000000000000000000000000000000000000000000000000000f30014d900000000000000000000000000000000000000000000000000000000a2d14f7000000000000000000000000000000000000000000000000000000000663f898e000000000000000000000000000000000000000000000000000000005537a67a00000000000000000000000000000000000000000000000000000000eee2dcc300000000000000000000000000000000000000000000000000000000000000000000000000000000dcf76df2753f17e9a2318d394767ae9b71ede25e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000711eff85b00000000000000000000000000000000000000000000000000000000565974d3000000000000000000000000000000000000000000000000000000004f2274c000000000000000000000000000000000000000000000000000000000f962a52a00000000000000000000000000000000000000000000000000000000a75572fb0000000000000000000000000000000000000000000000000000000098d55d68000000000000000000000000000000000000000000000000000000009f4c440b000000000000000000000000000000000000000000000000000000000000000000000000000000004199cb48c13884431f2e21f294ff6692dfc4dec4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000004bd470cf900000000000000000000000000000000000000000000000000000000c65c3d9500000000000000000000000000000000000000000000000000000000525d5ebf0000000000000000000000000000000000000000000000000000000008ff3efd000000000000000000000000000000000000000000000000000000000000000000000000000000005ed51129a8e0504d40039e622a223a27271922fd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000066551544a00000000000000000000000000000000000000000000000000000000fb29eac800000000000000000000000000000000000000000000000000000000e26ceccf000000000000000000000000000000000000000000000000000000000d981625000000000000000000000000000000000000000000000000000000006951c9f400000000000000000000000000000000000000000000000000000000befb4fbc00000000000000000000000000000000000000000000000000000000000000000000000000000000b9f06ee587b27aa54a56cae506fee069e0cbdfae0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c0000000000000000000000000000000000000000000000000000000000000000000000000000000006c4a2f994d4f40b9aeaa9f3d725ab6953068f8d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b0000000000000000000000000000000000000000000000000000000000000000000000000000000079d01a15f4552b2992ac337356023388e823175e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "logIndex": 17, + "blockHash": "0x27dad9f9044184bf4b231fb4e3847e8699a68d2580eb2b0459d0f27c18c0bd4f" + }, + { + "transactionIndex": 7, + "blockNumber": 46174112, + "transactionHash": "0xa672c52840426e81ab9be5dabd99601b594a1c9d83254c5316c2bd1b5843ce00", + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000717634cfe06ffab2ceaa7fcf1b9019813f4b25fe", + "0x0000000000000000000000005082f249cdb2f2c1ee035e4f423c46ea2dab3ab1" + ], + "data": "0x000000000000000000000000000000000000000000000000016d359e7cdaf51000000000000000000000000000000000000000000000000011dace2b8ce16b13000000000000000000000000000000000000000000000681b141de7d905f4ed5000000000000000000000000000000000000000000000000106d988d10067603000000000000000000000000000000000000000000000681b2af141c0d3a43e5", + "logIndex": 18, + "blockHash": "0x27dad9f9044184bf4b231fb4e3847e8699a68d2580eb2b0459d0f27c18c0bd4f" + } + ], + "blockNumber": 46174112, + "cumulativeGasUsed": "6236596", + "status": 1, + "byzantium": true + }, + "args": [ + "0x717634cfe06FFAB2CEAA7fcf1b9019813f4B25FE", + [ + { + "facetAddress": "0x6C5742bfa6C3AC6C149466579123cB04D8Db4a01", + "functionSelectors": [ + "0x29e7ef2d", + "0xddb2d22b", + "0x11e54933", + "0xa63234e0", + "0xdaa17f49", + "0xc97b9730", + "0xd65cd010", + "0x8762d38e", + "0x034cd725" + ], + "action": 0 + }, + { + "facetAddress": "0xDe7C5f5377A5C5E521e530bbac55a59AB8cd3370", + "functionSelectors": [ + "0x3c4a25d0", + "0xca6d56dc", + "0x9fef0c01", + "0xe8c9fd45", + "0xe43581b8", + "0xa230c524", + "0x11aee380", + "0x5a4c75d5", + "0xc6549ba4", + "0xeecdac88", + "0x0b1ca49a" + ], + "action": 0 + }, + { + "facetAddress": "0x305C0e7E3BDD77Db1B7d9AdF3C8144644948D459", + "functionSelectors": [ + "0x617b0b9d", + "0xccf90c74", + "0xb87c7475", + "0xb70cc72a", + "0x76a7383d", + "0x911a56cc", + "0x3e39e4cf" + ], + "action": 0 + }, + { + "facetAddress": "0xeB0e5aBfe38e825264be2ABeeC5D6148DD563439", + "functionSelectors": [ + "0xdd62ed3e", + "0x095ea7b3", + "0x70a08231", + "0x5d7b590f", + "0x7641e6f3", + "0x313ce567", + "0xfbabdb06", + "0x06675ba7", + "0x8188f71c", + "0x77097fc8", + "0x06fdde03", + "0x1fe02e53", + "0x9c999d90", + "0x5480699a", + "0x6bd7bd25", + "0x44890ae0", + "0x81a8f243", + "0x3a868224", + "0x95d89b41", + "0x18160ddd", + "0xa9059cbb", + "0x23b872dd", + "0xc485bb96", + "0xe8edd0e3" + ], + "action": 0 + }, + { + "facetAddress": "0xf1094c3CD6659d373366AA0945bAd33ACb47e878", + "functionSelectors": [ + "0xf4c1210c", + "0xaf2e757b", + "0xb74977bb", + "0x538be4ac", + "0xf4b54f33", + "0xf30014d9", + "0xa2d14f70", + "0x663f898e", + "0x5537a67a", + "0xeee2dcc3" + ], + "action": 0 + }, + { + "facetAddress": "0xdcF76dF2753f17E9a2318D394767Ae9B71ede25E", + "functionSelectors": [ + "0x11eff85b", + "0x565974d3", + "0x4f2274c0", + "0xf962a52a", + "0xa75572fb", + "0x98d55d68", + "0x9f4c440b" + ], + "action": 0 + }, + { + "facetAddress": "0x4199cb48c13884431f2e21f294ff6692Dfc4DEc4", + "functionSelectors": [ + "0xbd470cf9", + "0xc65c3d95", + "0x525d5ebf", + "0x08ff3efd" + ], + "action": 0 + }, + { + "facetAddress": "0x5eD51129A8E0504d40039e622a223A27271922Fd", + "functionSelectors": [ + "0x6551544a", + "0xfb29eac8", + "0xe26ceccf", + "0x0d981625", + "0x6951c9f4", + "0xbefb4fbc" + ], + "action": 0 + }, + { + "facetAddress": "0xb9F06Ee587B27aa54a56CAE506fee069E0cbdfAE", + "functionSelectors": [ + "0x1f931c1c" + ], + "action": 0 + }, + { + "facetAddress": "0x06C4a2f994D4f40b9aEaa9F3D725aB6953068F8D", + "functionSelectors": [ + "0x8da5cb5b", + "0xf2fde38b" + ], + "action": 0 + }, + { + "facetAddress": "0x79D01A15F4552b2992aC337356023388e823175E", + "functionSelectors": [ + "0xcdffacc6", + "0x52ef6b2c", + "0xadfca15e", + "0x7a0ed627", + "0x01ffc9a7" + ], + "action": 0 + } + ], + [ + { + "initContract": "0x7D381445C00af2cEEF45Ed46859439d58c73ac61", + "initData": "0x2a84809100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000148e2b093000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "initContract": "0x59788D17fc4532D0f5E1b14979AE881CaBD3af73", + "initData": "0x3cf22baa00000000000000000000000000000000000000000000000000000000000000200000000000000000000000002f03add7aaba219405ea7dc94e4345d99d469fba0000000000000000000000001b0c84a86cc6730b583166c93e410ddd4f8763280000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000000000000a477265656e20476f6c640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024747000000000000000000000000000000000000000000000000000000000000" + } + ] + ], + "numDeployments": 1, + "solcInputHash": "3fe12e823553336a8d0f950a5a792ac9", + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractOwner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum IDiamondCut.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct IDiamondCut.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"initContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"internalType\":\"struct Diamond.Initialization[]\",\"name\":\"_initializations\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_contractOwner\":\"the owner of the contract. With default DiamondCutFacet, this is the sole address allowed to make further cuts.\",\"_diamondCut\":\"the list of facet to add\",\"_initializations\":\"the list of initialization pair to execute. This allow to setup a contract with multiple level of independent initialization.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"This construct a diamond contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solc_0.8/diamond/Diamond.sol\":\"Diamond\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solc_0.8/diamond/Diamond.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/******************************************************************************\\\\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\\n*\\n* Implementation of a diamond.\\n/******************************************************************************/\\n\\nimport {LibDiamond} from \\\"./libraries/LibDiamond.sol\\\";\\nimport {IDiamondCut} from \\\"./interfaces/IDiamondCut.sol\\\";\\n\\ncontract Diamond {\\n struct Initialization {\\n address initContract;\\n bytes initData;\\n }\\n\\n /// @notice This construct a diamond contract\\n /// @param _contractOwner the owner of the contract. With default DiamondCutFacet, this is the sole address allowed to make further cuts.\\n /// @param _diamondCut the list of facet to add\\n /// @param _initializations the list of initialization pair to execute. This allow to setup a contract with multiple level of independent initialization.\\n constructor(\\n address _contractOwner,\\n IDiamondCut.FacetCut[] memory _diamondCut,\\n Initialization[] memory _initializations\\n ) payable {\\n if (_contractOwner != address(0)) {\\n LibDiamond.setContractOwner(_contractOwner);\\n }\\n\\n LibDiamond.diamondCut(_diamondCut, address(0), \\\"\\\");\\n\\n for (uint256 i = 0; i < _initializations.length; i++) {\\n LibDiamond.initializeDiamondCut(_initializations[i].initContract, _initializations[i].initData);\\n }\\n }\\n\\n // Find facet for function that is called and execute the\\n // function if a facet is found and return any value.\\n fallback() external payable {\\n LibDiamond.DiamondStorage storage ds;\\n bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;\\n // get diamond storage\\n assembly {\\n ds.slot := position\\n }\\n // get facet from function selector\\n address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;\\n require(facet != address(0), \\\"Diamond: Function does not exist\\\");\\n // Execute external function from facet using delegatecall and return any value.\\n assembly {\\n // copy function selector and any arguments\\n calldatacopy(0, 0, calldatasize())\\n // execute function call using the facet\\n let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)\\n // get any return value\\n returndatacopy(0, 0, returndatasize())\\n // return any return value or error back to the caller\\n switch result\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n receive() external payable {}\\n}\\n\",\"keccak256\":\"0x9f459a9f18d5429b0dd40e60b4a67a27d2b94693c4d190ed9dd7034a894c1eb6\",\"license\":\"MIT\"},\"solc_0.8/diamond/interfaces/IDiamondCut.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/******************************************************************************\\\\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\\n/******************************************************************************/\\n\\ninterface IDiamondCut {\\n enum FacetCutAction {Add, Replace, Remove}\\n // Add=0, Replace=1, Remove=2\\n\\n struct FacetCut {\\n address facetAddress;\\n FacetCutAction action;\\n bytes4[] functionSelectors;\\n }\\n\\n /// @notice Add/replace/remove any number of functions and optionally execute\\n /// a function with delegatecall\\n /// @param _diamondCut Contains the facet addresses and function selectors\\n /// @param _init The address of the contract or facet to execute _calldata\\n /// @param _calldata A function call, including function selector and arguments\\n /// _calldata is executed with delegatecall on _init\\n function diamondCut(\\n FacetCut[] calldata _diamondCut,\\n address _init,\\n bytes calldata _calldata\\n ) external;\\n\\n event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);\\n}\\n\",\"keccak256\":\"0xc00c16bfa30a3fa5f3dc684f7f8ba62c259962b25f647d9588739458989717fc\",\"license\":\"MIT\"},\"solc_0.8/diamond/libraries/LibDiamond.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/******************************************************************************\\\\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\\n/******************************************************************************/\\nimport { IDiamondCut } from \\\"../interfaces/IDiamondCut.sol\\\";\\n\\nlibrary LibDiamond {\\n bytes32 constant DIAMOND_STORAGE_POSITION = keccak256(\\\"diamond.standard.diamond.storage\\\");\\n\\n struct FacetAddressAndPosition {\\n address facetAddress;\\n uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array\\n }\\n\\n struct FacetFunctionSelectors {\\n bytes4[] functionSelectors;\\n uint256 facetAddressPosition; // position of facetAddress in facetAddresses array\\n }\\n\\n struct DiamondStorage {\\n // maps function selector to the facet address and\\n // the position of the selector in the facetFunctionSelectors.selectors array\\n mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;\\n // maps facet addresses to function selectors\\n mapping(address => FacetFunctionSelectors) facetFunctionSelectors;\\n // facet addresses\\n address[] facetAddresses;\\n // Used to query if a contract implements an interface.\\n // Used to implement ERC-165.\\n mapping(bytes4 => bool) supportedInterfaces;\\n // owner of the contract\\n address contractOwner;\\n }\\n\\n function diamondStorage() internal pure returns (DiamondStorage storage ds) {\\n bytes32 position = DIAMOND_STORAGE_POSITION;\\n assembly {\\n ds.slot := position\\n }\\n }\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n function setContractOwner(address _newOwner) internal {\\n DiamondStorage storage ds = diamondStorage();\\n address previousOwner = ds.contractOwner;\\n ds.contractOwner = _newOwner;\\n emit OwnershipTransferred(previousOwner, _newOwner);\\n }\\n\\n function contractOwner() internal view returns (address contractOwner_) {\\n contractOwner_ = diamondStorage().contractOwner;\\n }\\n\\n function enforceIsContractOwner() internal view {\\n require(msg.sender == diamondStorage().contractOwner, \\\"LibDiamond: Must be contract owner\\\");\\n }\\n\\n event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata);\\n\\n // Internal function version of diamondCut\\n function diamondCut(\\n IDiamondCut.FacetCut[] memory _diamondCut,\\n address _init,\\n bytes memory _calldata\\n ) internal {\\n for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) {\\n IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;\\n if (action == IDiamondCut.FacetCutAction.Add) {\\n addFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\\n } else if (action == IDiamondCut.FacetCutAction.Replace) {\\n replaceFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\\n } else if (action == IDiamondCut.FacetCutAction.Remove) {\\n removeFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\\n } else {\\n revert(\\\"LibDiamondCut: Incorrect FacetCutAction\\\");\\n }\\n }\\n emit DiamondCut(_diamondCut, _init, _calldata);\\n initializeDiamondCut(_init, _calldata);\\n }\\n\\n function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\\n require(_functionSelectors.length > 0, \\\"LibDiamondCut: No selectors in facet to cut\\\");\\n DiamondStorage storage ds = diamondStorage(); \\n require(_facetAddress != address(0), \\\"LibDiamondCut: Add facet can't be address(0)\\\");\\n uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);\\n // add new facet address if it does not exist\\n if (selectorPosition == 0) {\\n addFacet(ds, _facetAddress); \\n }\\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\\n bytes4 selector = _functionSelectors[selectorIndex];\\n address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;\\n require(oldFacetAddress == address(0), \\\"LibDiamondCut: Can't add function that already exists\\\");\\n addFunction(ds, selector, selectorPosition, _facetAddress);\\n selectorPosition++;\\n }\\n }\\n\\n function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\\n require(_functionSelectors.length > 0, \\\"LibDiamondCut: No selectors in facet to cut\\\");\\n DiamondStorage storage ds = diamondStorage();\\n require(_facetAddress != address(0), \\\"LibDiamondCut: Add facet can't be address(0)\\\");\\n uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);\\n // add new facet address if it does not exist\\n if (selectorPosition == 0) {\\n addFacet(ds, _facetAddress);\\n }\\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\\n bytes4 selector = _functionSelectors[selectorIndex];\\n address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;\\n require(oldFacetAddress != _facetAddress, \\\"LibDiamondCut: Can't replace function with same function\\\");\\n removeFunction(ds, oldFacetAddress, selector);\\n addFunction(ds, selector, selectorPosition, _facetAddress);\\n selectorPosition++;\\n }\\n }\\n\\n function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\\n require(_functionSelectors.length > 0, \\\"LibDiamondCut: No selectors in facet to cut\\\");\\n DiamondStorage storage ds = diamondStorage();\\n // if function does not exist then do nothing and return\\n require(_facetAddress == address(0), \\\"LibDiamondCut: Remove facet address must be address(0)\\\");\\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\\n bytes4 selector = _functionSelectors[selectorIndex];\\n address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;\\n removeFunction(ds, oldFacetAddress, selector);\\n }\\n }\\n\\n function addFacet(DiamondStorage storage ds, address _facetAddress) internal {\\n enforceHasContractCode(_facetAddress, \\\"LibDiamondCut: New facet has no code\\\");\\n ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = ds.facetAddresses.length;\\n ds.facetAddresses.push(_facetAddress);\\n } \\n\\n\\n function addFunction(DiamondStorage storage ds, bytes4 _selector, uint96 _selectorPosition, address _facetAddress) internal {\\n ds.selectorToFacetAndPosition[_selector].functionSelectorPosition = _selectorPosition;\\n ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(_selector);\\n ds.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress;\\n }\\n\\n function removeFunction(DiamondStorage storage ds, address _facetAddress, bytes4 _selector) internal { \\n require(_facetAddress != address(0), \\\"LibDiamondCut: Can't remove function that doesn't exist\\\");\\n // an immutable function is a function defined directly in a diamond\\n require(_facetAddress != address(this), \\\"LibDiamondCut: Can't remove immutable function\\\");\\n // replace selector with last selector, then delete last selector\\n uint256 selectorPosition = ds.selectorToFacetAndPosition[_selector].functionSelectorPosition;\\n uint256 lastSelectorPosition = ds.facetFunctionSelectors[_facetAddress].functionSelectors.length - 1;\\n // if not the same then replace _selector with lastSelector\\n if (selectorPosition != lastSelectorPosition) {\\n bytes4 lastSelector = ds.facetFunctionSelectors[_facetAddress].functionSelectors[lastSelectorPosition];\\n ds.facetFunctionSelectors[_facetAddress].functionSelectors[selectorPosition] = lastSelector;\\n ds.selectorToFacetAndPosition[lastSelector].functionSelectorPosition = uint96(selectorPosition);\\n }\\n // delete the last selector\\n ds.facetFunctionSelectors[_facetAddress].functionSelectors.pop();\\n delete ds.selectorToFacetAndPosition[_selector];\\n\\n // if no more selectors for facet address then delete the facet address\\n if (lastSelectorPosition == 0) {\\n // replace facet address with last facet address and delete last facet address\\n uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1;\\n uint256 facetAddressPosition = ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;\\n if (facetAddressPosition != lastFacetAddressPosition) {\\n address lastFacetAddress = ds.facetAddresses[lastFacetAddressPosition];\\n ds.facetAddresses[facetAddressPosition] = lastFacetAddress;\\n ds.facetFunctionSelectors[lastFacetAddress].facetAddressPosition = facetAddressPosition;\\n }\\n ds.facetAddresses.pop();\\n delete ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;\\n }\\n }\\n\\n function initializeDiamondCut(address _init, bytes memory _calldata) internal {\\n if (_init == address(0)) {\\n require(_calldata.length == 0, \\\"LibDiamondCut: _init is address(0) but_calldata is not empty\\\");\\n } else {\\n require(_calldata.length > 0, \\\"LibDiamondCut: _calldata is empty but _init is not address(0)\\\");\\n if (_init != address(this)) {\\n enforceHasContractCode(_init, \\\"LibDiamondCut: _init address has no code\\\");\\n }\\n (bool success, bytes memory error) = _init.delegatecall(_calldata);\\n if (!success) {\\n if (error.length > 0) {\\n // bubble up the error\\n revert(string(error));\\n } else {\\n revert(\\\"LibDiamondCut: _init function reverted\\\");\\n }\\n }\\n }\\n }\\n\\n function enforceHasContractCode(address _contract, string memory _errorMessage) internal view {\\n uint256 contractSize;\\n assembly {\\n contractSize := extcodesize(_contract)\\n }\\n require(contractSize > 0, _errorMessage);\\n }\\n}\\n\",\"keccak256\":\"0x2205345e83eb86f5281f159a9215a096cb6d404782619f9b8e9d7a4a46c32a37\",\"license\":\"MIT\"}},\"version\":1}", + "bytecode": "0x60806040526040516200321e3803806200321e833981016040819052620000269162001340565b6001600160a01b038316156200004c576200004c83620000f760201b620001071760201c565b62000074826000604051806020016040528060008152506200017b60201b620001c11760201c565b60005b8151811015620000ed57620000d88282815181106200009a576200009a62001514565b602002602001015160000151838381518110620000bb57620000bb62001514565b602002602001015160200151620003d960201b620004051760201c565b80620000e48162001540565b91505062000077565b505050506200173d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080546001600160a01b031981166001600160a01b0384811691821790935560405160008051602062003172833981519152939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156200038a5760008482815181106200019f576200019f62001514565b602002602001015160200151905060006002811115620001c357620001c36200155e565b816002811115620001d857620001d86200155e565b1415620002375762000231858381518110620001f857620001f862001514565b60200260200101516000015186848151811062000219576200021962001514565b602002602001015160400151620005fe60201b60201c565b62000374565b60018160028111156200024e576200024e6200155e565b1415620002a757620002318583815181106200026e576200026e62001514565b6020026020010151600001518684815181106200028f576200028f62001514565b6020026020010151604001516200088860201b60201c565b6002816002811115620002be57620002be6200155e565b1415620003175762000231858381518110620002de57620002de62001514565b602002602001015160000151868481518110620002ff57620002ff62001514565b60200260200101516040015162000b1e60201b60201c565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b60648201526084015b60405180910390fd5b5080620003818162001540565b9150506200017e565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051620003c093929190620015a2565b60405180910390a1620003d48282620003d9565b505050565b6001600160a01b03821662000463578051156200045f5760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016200036b565b5050565b6000815111620004dc5760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016200036b565b6001600160a01b038216301462000512576200051282604051806060016040528060288152602001620031926028913962000c7e565b600080836001600160a01b0316836040516200052f9190620016a9565b600060405180830381855af49150503d80600081146200056c576040519150601f19603f3d011682016040523d82523d6000602084013e62000571565b606091505b509150915081620005f857805115620005a0578060405162461bcd60e51b81526004016200036b9190620016c7565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b60648201526084016200036b565b50505050565b6000815111620006545760405162461bcd60e51b815260206004820152602b6024820152600080516020620031fe83398151915260448201526a1858d95d081d1bc818dd5d60aa1b60648201526084016200036b565b600080516020620031728339815191526001600160a01b038316620006c05760405162461bcd60e51b815260206004820152602c6024820152600080516020620031ba83398151915260448201526b65206164647265737328302960a01b60648201526084016200036b565b6001600160a01b03831660009081526001820160205260409020546001600160601b038116620006f657620006f6828562000ca2565b60005b8351811015620008815760008482815181106200071a576200071a62001514565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620007c25760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c726561647920657869737473000000000000000000000060648201526084016200036b565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836200086681620016e3565b94505050508080620008789062001540565b915050620006f9565b5050505050565b6000815111620008de5760405162461bcd60e51b815260206004820152602b6024820152600080516020620031fe83398151915260448201526a1858d95d081d1bc818dd5d60aa1b60648201526084016200036b565b600080516020620031728339815191526001600160a01b0383166200094a5760405162461bcd60e51b815260206004820152602c6024820152600080516020620031ba83398151915260448201526b65206164647265737328302960a01b60648201526084016200036b565b6001600160a01b03831660009081526001820160205260409020546001600160601b038116620009805762000980828562000ca2565b60005b835181101562000881576000848281518110620009a457620009a462001514565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0390811690871681141562000a525760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016200036b565b62000a5f85828462000d0f565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558362000b0381620016e3565b9450505050808062000b159062001540565b91505062000983565b600081511162000b745760405162461bcd60e51b815260206004820152602b6024820152600080516020620031fe83398151915260448201526a1858d95d081d1bc818dd5d60aa1b60648201526084016200036b565b600080516020620031728339815191526001600160a01b0383161562000c035760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d75737420626520616464726573732830290000000000000000000060648201526084016200036b565b60005b8251811015620005f857600083828151811062000c275762000c2762001514565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031662000c6684828462000d0f565b5050808062000c759062001540565b91505062000c06565b813b8181620005f85760405162461bcd60e51b81526004016200036b9190620016c7565b62000cc781604051806060016040528060248152602001620031da6024913962000c7e565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160a01b03821662000d8d5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016200036b565b6001600160a01b03821630141562000dff5760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b60648201526084016200036b565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b0316929162000e50916200170d565b905080821462000f49576001600160a01b0384166000908152600186016020526040812080548390811062000e895762000e8962001514565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811062000edd5762000edd62001514565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384166000908152600186016020526040902080548062000f755762000f7562001727565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319851682528690526040812055806200088157600285015460009062000fd7906001906200170d565b6001600160a01b03861660009081526001808901602052604090912001549091508082146200108d5760008760020183815481106200101a576200101a62001514565b6000918252602090912001546002890180546001600160a01b0390921692508291849081106200104e576200104e62001514565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480620010a357620010a362001727565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b80516001600160a01b03811681146200110457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171562001144576200114462001109565b60405290565b604051606081016001600160401b038111828210171562001144576200114462001109565b604051601f8201601f191681016001600160401b03811182821017156200119a576200119a62001109565b604052919050565b60006001600160401b03821115620011be57620011be62001109565b5060051b60200190565b60005b83811015620011e5578181015183820152602001620011cb565b83811115620005f85750506000910152565b6000601f83818401126200120a57600080fd5b82516020620012236200121d83620011a2565b6200116f565b82815260059290921b850181019181810190878411156200124357600080fd5b8287015b84811015620013345780516001600160401b0380821115620012695760008081fd5b908901906040601f19838d038101821315620012855760008081fd5b6200128f6200111f565b6200129c898601620010ec565b81528285015184811115620012b15760008081fd5b8086019550508d603f860112620012c85760008081fd5b8885015184811115620012df57620012df62001109565b620012f08a848e840116016200116f565b94508085528e848288010111156200130a57600092508283fd5b6200131b818b8701868901620011c8565b5080890193909352505084525091830191830162001247565b50979650505050505050565b6000806000606084860312156200135657600080fd5b6200136184620010ec565b60208501519093506001600160401b03808211156200137f57600080fd5b818601915086601f8301126200139457600080fd5b8151620013a56200121d82620011a2565b8082825260208201915060208360051b860101925089831115620013c857600080fd5b602085015b83811015620014e057805185811115620013e657600080fd5b86016060818d03601f19011215620013fd57600080fd5b620014076200114a565b6200141560208301620010ec565b81526040820151600381106200142a57600080fd5b60208201526060820151878111156200144257600080fd5b8083019250508c603f8301126200145857600080fd5b60208201516200146c6200121d82620011a2565b81815260059190911b83016040019060208101908f8311156200148e57600080fd5b6040850194505b82851015620014c95784516001600160e01b031981168114620014b757600080fd5b82526020948501949091019062001495565b6040840152505084525060209283019201620013cd565b5060408901519096509350505080821115620014fb57600080fd5b506200150a86828701620011f7565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156200155757620015576200152a565b5060010190565b634e487b7160e01b600052602160045260246000fd5b600081518084526200158e816020860160208601620011c8565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156200167757898403607f19018652815180516001600160a01b031685528381015189860190600381106200161357634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015620016615783516001600160e01b031916825292860192600192909201919086019062001635565b50978501979550505090820190600101620015cb565b50506001600160a01b038a169088015286810360408801526200169b818962001574565b9a9950505050505050505050565b60008251620016bd818460208701620011c8565b9190910192915050565b602081526000620016dc602083018462001574565b9392505050565b60006001600160601b03828116808214156200170357620017036200152a565b6001019392505050565b6000828210156200172257620017226200152a565b500390565b634e487b7160e01b600052603160045260246000fd5b611a25806200174d6000396000f3fe60806040523661000b57005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020819052604090912054819073ffffffffffffffffffffffffffffffffffffffff16806100e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610102573d6000f35b3d6000fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156103ba5760008482815181106101e1576101e1611657565b60200260200101516020015190506000600281111561020257610202611686565b81600281111561021457610214611686565b14156102635761025e85838151811061022f5761022f611657565b60200260200101516000015186848151811061024d5761024d611657565b6020026020010151604001516106be565b6103a7565b600181600281111561027757610277611686565b14156102c15761025e85838151811061029257610292611657565b6020026020010151600001518684815181106102b0576102b0611657565b602002602001015160400151610a71565b60028160028111156102d5576102d5611686565b141561031f5761025e8583815181106102f0576102f0611657565b60200260200101516000015186848151811061030e5761030e611657565b602002602001015160400151610e2e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e0000000000000000000000000000000000000000000000000060648201526084016100da565b50806103b2816116e4565b9150506101c4565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516103ee93929190611793565b60405180910390a16104008282610405565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166104b3578051156104af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100da565b5050565b6000815111610544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff8216301461058357610583826040518060600160405280602881526020016119a46028913961101b565b6000808373ffffffffffffffffffffffffffffffffffffffff16836040516105ab91906118fb565b600060405180830381855af49150503d80600081146105e6576040519150601f19603f3d011682016040523d82523d6000602084013e6105eb565b606091505b5091509150816106b85780511561063057806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100da565b50505050565b600081511161074f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610858576108588285611056565b60005b8351811015610a6a57600084828151811061087857610878611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16801561095d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c726561647920657869737473000000000000000000000060648201526084016100da565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610a5281611931565b94505050508080610a62906116e4565b91505061085b565b5050505050565b6000815111610b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610c0b57610c0b8285611056565b60005b8351811015610a6a576000848281518110610c2b57610c2b611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff908116908716811415610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016100da565b610d218582846110e5565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610e1681611931565b94505050508080610e26906116e4565b915050610c0e565b6000815111610ebf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff831615610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d75737420626520616464726573732830290000000000000000000060648201526084016100da565b60005b82518110156106b8576000838281518110610fa457610fa4611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529185905260409091205490915073ffffffffffffffffffffffffffffffffffffffff166110068482846110e5565b50508080611013906116e4565b915050610f87565b813b81816106b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b611078816040518060600160405280602481526020016119cc6024913961101b565b60028201805473ffffffffffffffffffffffffffffffffffffffff90921660008181526001948501602090815260408220860185905594840183559182529290200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff821630141561122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201527f7461626c652066756e6374696f6e00000000000000000000000000000000000060648201526084016100da565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152602084815260408083205473ffffffffffffffffffffffffffffffffffffffff86168452600180880190935290832054740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff1692916112b89161195d565b90508082146113ff5773ffffffffffffffffffffffffffffffffffffffff8416600090815260018601602052604081208054839081106112fa576112fa611657565b6000918252602080832060088304015473ffffffffffffffffffffffffffffffffffffffff8916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811061135857611358611657565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790557fffffffff0000000000000000000000000000000000000000000000000000000092909216825286905260409020805473ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006bffffffffffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff84166000908152600186016020526040902080548061143557611435611974565b6000828152602080822060087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193840401805463ffffffff600460078716026101000a0219169055919092557fffffffff0000000000000000000000000000000000000000000000000000000085168252869052604081205580610a6a5760028501546000906114ca9060019061195d565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001808901602052604090912001549091508082146115b857600087600201838154811061151657611516611657565b60009182526020909120015460028901805473ffffffffffffffffffffffffffffffffffffffff909216925082918490811061155457611554611657565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152600189810190925260409020018190555b866002018054806115cb576115cb611974565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff88168252600189810190915260408220015550505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611716576117166116b5565b5060010190565b60005b83811015611738578181015183820152602001611720565b838111156106b85750506000910152565b6000815180845261176181602086016020860161171d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156118be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8503018652815188850173ffffffffffffffffffffffffffffffffffffffff82511686528482015160038110611845577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156118a95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928601926001929092019190860190611867565b509785019795505050908201906001016117bc565b505073ffffffffffffffffffffffffffffffffffffffff8a169088015286810360408801526118ed8189611749565b9a9950505050505050505050565b6000825161190d81846020870161171d565b9190910192915050565b60208152600061192a6020830184611749565b9392505050565b60006bffffffffffffffffffffffff80831681811415611953576119536116b5565b6001019392505050565b60008282101561196f5761196f6116b5565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212202b18a533b03703e1326000cf2f36b1c6ec631cff163a752d939e5ee79ad2cde364736f6c634300080a0033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204164642066616365742063616e277420624c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f64654c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e2066", + "deployedBytecode": "0x60806040523661000b57005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020819052604090912054819073ffffffffffffffffffffffffffffffffffffffff16806100e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610102573d6000f35b3d6000fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156103ba5760008482815181106101e1576101e1611657565b60200260200101516020015190506000600281111561020257610202611686565b81600281111561021457610214611686565b14156102635761025e85838151811061022f5761022f611657565b60200260200101516000015186848151811061024d5761024d611657565b6020026020010151604001516106be565b6103a7565b600181600281111561027757610277611686565b14156102c15761025e85838151811061029257610292611657565b6020026020010151600001518684815181106102b0576102b0611657565b602002602001015160400151610a71565b60028160028111156102d5576102d5611686565b141561031f5761025e8583815181106102f0576102f0611657565b60200260200101516000015186848151811061030e5761030e611657565b602002602001015160400151610e2e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e0000000000000000000000000000000000000000000000000060648201526084016100da565b50806103b2816116e4565b9150506101c4565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516103ee93929190611793565b60405180910390a16104008282610405565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166104b3578051156104af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100da565b5050565b6000815111610544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff8216301461058357610583826040518060600160405280602881526020016119a46028913961101b565b6000808373ffffffffffffffffffffffffffffffffffffffff16836040516105ab91906118fb565b600060405180830381855af49150503d80600081146105e6576040519150601f19603f3d011682016040523d82523d6000602084013e6105eb565b606091505b5091509150816106b85780511561063057806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100da565b50505050565b600081511161074f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610858576108588285611056565b60005b8351811015610a6a57600084828151811061087857610878611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16801561095d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c726561647920657869737473000000000000000000000060648201526084016100da565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610a5281611931565b94505050508080610a62906116e4565b91505061085b565b5050505050565b6000815111610b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610c0b57610c0b8285611056565b60005b8351811015610a6a576000848281518110610c2b57610c2b611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff908116908716811415610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016100da565b610d218582846110e5565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610e1681611931565b94505050508080610e26906116e4565b915050610c0e565b6000815111610ebf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff831615610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d75737420626520616464726573732830290000000000000000000060648201526084016100da565b60005b82518110156106b8576000838281518110610fa457610fa4611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529185905260409091205490915073ffffffffffffffffffffffffffffffffffffffff166110068482846110e5565b50508080611013906116e4565b915050610f87565b813b81816106b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b611078816040518060600160405280602481526020016119cc6024913961101b565b60028201805473ffffffffffffffffffffffffffffffffffffffff90921660008181526001948501602090815260408220860185905594840183559182529290200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff821630141561122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201527f7461626c652066756e6374696f6e00000000000000000000000000000000000060648201526084016100da565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152602084815260408083205473ffffffffffffffffffffffffffffffffffffffff86168452600180880190935290832054740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff1692916112b89161195d565b90508082146113ff5773ffffffffffffffffffffffffffffffffffffffff8416600090815260018601602052604081208054839081106112fa576112fa611657565b6000918252602080832060088304015473ffffffffffffffffffffffffffffffffffffffff8916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811061135857611358611657565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790557fffffffff0000000000000000000000000000000000000000000000000000000092909216825286905260409020805473ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006bffffffffffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff84166000908152600186016020526040902080548061143557611435611974565b6000828152602080822060087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193840401805463ffffffff600460078716026101000a0219169055919092557fffffffff0000000000000000000000000000000000000000000000000000000085168252869052604081205580610a6a5760028501546000906114ca9060019061195d565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001808901602052604090912001549091508082146115b857600087600201838154811061151657611516611657565b60009182526020909120015460028901805473ffffffffffffffffffffffffffffffffffffffff909216925082918490811061155457611554611657565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152600189810190925260409020018190555b866002018054806115cb576115cb611974565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff88168252600189810190915260408220015550505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611716576117166116b5565b5060010190565b60005b83811015611738578181015183820152602001611720565b838111156106b85750506000910152565b6000815180845261176181602086016020860161171d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156118be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8503018652815188850173ffffffffffffffffffffffffffffffffffffffff82511686528482015160038110611845577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156118a95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928601926001929092019190860190611867565b509785019795505050908201906001016117bc565b505073ffffffffffffffffffffffffffffffffffffffff8a169088015286810360408801526118ed8189611749565b9a9950505050505050505050565b6000825161190d81846020870161171d565b9190910192915050565b60208152600061192a6020830184611749565b9392505050565b60006bffffffffffffffffffffffff80831681811415611953576119536116b5565b6001019392505050565b60008282101561196f5761196f6116b5565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212202b18a533b03703e1326000cf2f36b1c6ec631cff163a752d939e5ee79ad2cde364736f6c634300080a0033", + "facets": [ + { + "facetAddress": "0x6C5742bfa6C3AC6C149466579123cB04D8Db4a01", + "functionSelectors": [ + "0x29e7ef2d", + "0xddb2d22b", + "0x11e54933", + "0xa63234e0", + "0xdaa17f49", + "0xc97b9730", + "0xd65cd010", + "0x8762d38e", + "0x034cd725" + ] + }, + { + "facetAddress": "0xDe7C5f5377A5C5E521e530bbac55a59AB8cd3370", + "functionSelectors": [ + "0x3c4a25d0", + "0xca6d56dc", + "0x9fef0c01", + "0xe8c9fd45", + "0xe43581b8", + "0xa230c524", + "0x11aee380", + "0x5a4c75d5", + "0xc6549ba4", + "0xeecdac88", + "0x0b1ca49a" + ] + }, + { + "facetAddress": "0x305C0e7E3BDD77Db1B7d9AdF3C8144644948D459", + "functionSelectors": [ + "0x617b0b9d", + "0xccf90c74", + "0xb87c7475", + "0xb70cc72a", + "0x76a7383d", + "0x911a56cc", + "0x3e39e4cf" + ] + }, + { + "facetAddress": "0xeB0e5aBfe38e825264be2ABeeC5D6148DD563439", + "functionSelectors": [ + "0xdd62ed3e", + "0x095ea7b3", + "0x70a08231", + "0x5d7b590f", + "0x7641e6f3", + "0x313ce567", + "0xfbabdb06", + "0x06675ba7", + "0x8188f71c", + "0x77097fc8", + "0x06fdde03", + "0x1fe02e53", + "0x9c999d90", + "0x5480699a", + "0x6bd7bd25", + "0x44890ae0", + "0x81a8f243", + "0x3a868224", + "0x95d89b41", + "0x18160ddd", + "0xa9059cbb", + "0x23b872dd", + "0xc485bb96", + "0xe8edd0e3" + ] + }, + { + "facetAddress": "0xf1094c3CD6659d373366AA0945bAd33ACb47e878", + "functionSelectors": [ + "0xf4c1210c", + "0xaf2e757b", + "0xb74977bb", + "0x538be4ac", + "0xf4b54f33", + "0xf30014d9", + "0xa2d14f70", + "0x663f898e", + "0x5537a67a", + "0xeee2dcc3" + ] + }, + { + "facetAddress": "0xdcF76dF2753f17E9a2318D394767Ae9B71ede25E", + "functionSelectors": [ + "0x11eff85b", + "0x565974d3", + "0x4f2274c0", + "0xf962a52a", + "0xa75572fb", + "0x98d55d68", + "0x9f4c440b" + ] + }, + { + "facetAddress": "0x4199cb48c13884431f2e21f294ff6692Dfc4DEc4", + "functionSelectors": [ + "0xbd470cf9", + "0xc65c3d95", + "0x525d5ebf", + "0x08ff3efd" + ] + }, + { + "facetAddress": "0x5eD51129A8E0504d40039e622a223A27271922Fd", + "functionSelectors": [ + "0x6551544a", + "0xfb29eac8", + "0xe26ceccf", + "0x0d981625", + "0x6951c9f4", + "0xbefb4fbc" + ] + }, + { + "facetAddress": "0xb9F06Ee587B27aa54a56CAE506fee069E0cbdfAE", + "functionSelectors": [ + "0x1f931c1c" + ] + }, + { + "facetAddress": "0x06C4a2f994D4f40b9aEaa9F3D725aB6953068F8D", + "functionSelectors": [ + "0x8da5cb5b", + "0xf2fde38b" + ] + }, + { + "facetAddress": "0x79D01A15F4552b2992aC337356023388e823175E", + "functionSelectors": [ + "0xcdffacc6", + "0x52ef6b2c", + "0xadfca15e", + "0x7a0ed627", + "0x01ffc9a7" + ] + } + ], + "execute": { + "contract": "FastInitFacet", + "methodName": "initialize", + "args": [ + { + "issuer": "0x2F03add7AAbA219405ea7Dc94e4345D99D469FbA", + "marketplace": "0x1B0C84a86cC6730B583166C93e410ddd4F876328", + "name": "Green Gold", + "symbol": "GG", + "decimals": 18, + "hasFixedSupply": false, + "isSemiPublic": true, + "crowdfundsDefaultBasisPointsFee": 200 + } + ] + }, + "devdoc": { + "kind": "dev", + "methods": { + "constructor": { + "params": { + "_contractOwner": "the owner of the contract. With default DiamondCutFacet, this is the sole address allowed to make further cuts.", + "_diamondCut": "the list of facet to add", + "_initializations": "the list of initialization pair to execute. This allow to setup a contract with multiple level of independent initialization." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "constructor": { + "notice": "This construct a diamond contract" + } + }, + "version": 1 + }, + "storageLayout": { + "storage": [], + "types": null + } +} \ No newline at end of file diff --git a/deployments/mumbai/FastGG_DiamondProxy.json b/deployments/mumbai/FastGG_DiamondProxy.json new file mode 100644 index 00000000..d542c9d1 --- /dev/null +++ b/deployments/mumbai/FastGG_DiamondProxy.json @@ -0,0 +1,3062 @@ +{ + "address": "0x6a5a6E84708EBE03191046F3ff0B1DF99e4fEa51", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_contractOwner", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum IDiamondCut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct IDiamondCut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "initContract", + "type": "address" + }, + { + "internalType": "bytes", + "name": "initData", + "type": "bytes" + } + ], + "internalType": "struct Diamond.Initialization[]", + "name": "_initializations", + "type": "tuple[]" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + }, + { + "inputs": [], + "name": "InternalMethod", + "type": "error" + }, + { + "inputs": [], + "name": "RequiresIssuerMemberOrIssuerCaller", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresIssuerMembership", + "type": "error" + }, + { + "inputs": [], + "name": "UnsupportedOperation", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "ref", + "type": "string" + }, + { + "indexed": true, + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "Burnt", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "basisPointFee", + "type": "uint32" + } + ], + "name": "CrowdfundDefaultBasisPointFeeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Crowdfund", + "name": "crowdfund", + "type": "address" + } + ], + "name": "CrowdfundDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Crowdfund", + "name": "crowdfund", + "type": "address" + } + ], + "name": "CrowdfundRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "transfersDisabled", + "type": "bool" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "crowdfundsDefaultBasisPointsFee", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "memberCount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "governorCount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reserveBalance", + "type": "uint256" + } + ], + "name": "DetailsChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Disapproval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Distribution", + "name": "distribution", + "type": "address" + } + ], + "name": "DistributionDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Distribution", + "name": "distribution", + "type": "address" + } + ], + "name": "DistributionRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "FastTransfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "ref", + "type": "string" + }, + { + "indexed": true, + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "group", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "hasFixedSupply", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isSemiPublic", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "marketplaceAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "newGroup", + "type": "string" + } + ], + "name": "setGroup", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "flag", + "type": "bool" + } + ], + "name": "setIsSemiPublic", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "flag", + "type": "bool" + } + ], + "name": "setTransfersDisabled", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "transfersDisabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresGovernorsManager", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresMembersManager", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresValidGovernor", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresValidMember", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "governor", + "type": "address" + } + ], + "name": "GovernorAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "governor", + "type": "address" + } + ], + "name": "GovernorRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "MemberAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "MemberRemoved", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "addGovernor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "addMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "a", + "type": "address" + } + ], + "name": "flags", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + } + ], + "internalType": "struct FastAccessFacet.Flags", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governorCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isGovernor", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isMember", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "memberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateGovernors", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateMembers", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "governor", + "type": "address" + } + ], + "name": "removeGovernor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "removeMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresAutomatonsManager", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "automaton", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint32", + "name": "privileges", + "type": "uint32" + } + ], + "name": "AutomatonPrivilegesSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "automaton", + "type": "address" + } + ], + "name": "AutomatonRemoved", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "automaton", + "type": "address" + }, + { + "internalType": "uint32", + "name": "privilege", + "type": "uint32" + } + ], + "name": "automatonCan", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "automatonCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "automaton", + "type": "address" + } + ], + "name": "automatonPrivileges", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "candidate", + "type": "address" + } + ], + "name": "isAutomaton", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateAutomatons", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "candidate", + "type": "address" + } + ], + "name": "removeAutomaton", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "candidate", + "type": "address" + }, + { + "internalType": "uint32", + "name": "privileges", + "type": "uint32" + } + ], + "name": "setAutomatonPrivileges", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "RequiresContinuousSupply", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "a", + "type": "address" + } + ], + "name": "RequiresDifferentSenderAndRecipient", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresFastMembership", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresMarketplaceActiveMembership", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "holder", + "type": "address" + } + ], + "name": "RequiresPositiveBalance", + "type": "error" + }, + { + "inputs": [], + "name": "RequiresTransfersEnabled", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresValidTokenHolder", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "beforeRemovingMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "disapprove", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "givenAllowanceCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "holders", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateAllowancesByOwner", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateAllowancesBySpender", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "performApproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "performDisapproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct FastTokenFacet.TransferArgs", + "name": "p", + "type": "tuple" + } + ], + "name": "performTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "receivedAllowanceCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "holder", + "type": "address" + } + ], + "name": "retrieveDeadTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "transferFromWithRef", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "transferWithRef", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "burnt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "minted", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateSupplyProofs", + "outputs": [ + { + "components": [ + { + "internalType": "enum LibFastHistory.SupplyOp", + "name": "op", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct LibFastHistory.SupplyProof[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "involvee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateTransferProofIndicesByInvolvee", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateTransferProofs", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct LibFastHistory.TransferProof[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "involvee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateTransferProofsByInvolvee", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct LibFastHistory.TransferProof[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "supplyProofCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "involvee", + "type": "address" + } + ], + "name": "transferProofByInvolveeCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "transferProofCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "transfered", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "detailedPrivileges", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ethBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "automatonPrivileges", + "type": "uint32" + } + ], + "internalType": "struct FastFrontendFacet.PrivilegesDetails", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "details", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isSemiPublic", + "type": "bool" + }, + { + "internalType": "bool", + "name": "hasFixedSupply", + "type": "bool" + }, + { + "internalType": "bool", + "name": "transfersDisabled", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "crowdfundsDefaultBasisPointsFee", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "reserveBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "memberCount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "governorCount", + "type": "uint256" + } + ], + "internalType": "struct FastFrontendFacet.Details", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "emitDetailsChanged", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedCrowdfunds", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint16", + "name": "VERSION", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "issuer", + "type": "address" + }, + { + "internalType": "address", + "name": "fast", + "type": "address" + }, + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "internalType": "uint32", + "name": "basisPointsFee", + "type": "uint32" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct Crowdfund.Params", + "name": "params", + "type": "tuple" + }, + { + "internalType": "enum Crowdfund.Phase", + "name": "phase", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "creationBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pledgerCount", + "type": "uint256" + } + ], + "internalType": "struct Crowdfund.Details[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedDistributions", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint16", + "name": "VERSION", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "distributor", + "type": "address" + }, + { + "internalType": "address", + "name": "issuer", + "type": "address" + }, + { + "internalType": "address", + "name": "fast", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockLatch", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "total", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct Distribution.Params", + "name": "params", + "type": "tuple" + }, + { + "internalType": "enum Distribution.Phase", + "name": "phase", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "creationBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "available", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "beneficiaryCount", + "type": "uint256" + } + ], + "internalType": "struct Distribution.Details[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedGovernors", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ethBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "automatonPrivileges", + "type": "uint32" + } + ], + "internalType": "struct FastFrontendFacet.PrivilegesDetails[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedMembers", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ethBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "automatonPrivileges", + "type": "uint32" + } + ], + "internalType": "struct FastFrontendFacet.PrivilegesDetails[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "InsufficientFunds", + "type": "error" + }, + { + "inputs": [], + "name": "TokenContractError", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "total", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockLatch", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "createDistribution", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "distributionCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDistributions", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Distribution", + "name": "distribution", + "type": "address" + } + ], + "name": "removeDistribution", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "fee", + "type": "uint32" + } + ], + "name": "InvalidCrowdfundBasisPointsFee", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresFastGovernorship", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "uint32", + "name": "privilege", + "type": "uint32" + } + ], + "name": "RequiresPrivilege", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "createCrowdfund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "crowdfundCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "crowdfundsDefaultBasisPointFee", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateCrowdfunds", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Crowdfund", + "name": "crowdfund", + "type": "address" + } + ], + "name": "removeCrowdfund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "newBasisPointFee", + "type": "uint32" + } + ], + "name": "setCrowdfundsDefaultBasisPointFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum IDiamondCut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "indexed": false, + "internalType": "struct IDiamondCut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "address", + "name": "_init", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "DiamondCut", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum IDiamondCut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct IDiamondCut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "_init", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "diamondCut", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "owner_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_functionSelector", + "type": "bytes4" + } + ], + "name": "facetAddress", + "outputs": [ + { + "internalType": "address", + "name": "facetAddress_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facetAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "facetAddresses_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_facet", + "type": "address" + } + ], + "name": "facetFunctionSelectors", + "outputs": [ + { + "internalType": "bytes4[]", + "name": "facetFunctionSelectors_", + "type": "bytes4[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facets", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct IDiamondLoupe.Facet[]", + "name": "facets_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0xa672c52840426e81ab9be5dabd99601b594a1c9d83254c5316c2bd1b5843ce00", + "receipt": { + "to": "0x6DF2D25d8C6FD680730ee658b530A05a99BB769a", + "from": "0x717634cfe06FFAB2CEAA7fcf1b9019813f4B25FE", + "contractAddress": null, + "transactionIndex": 7, + "gasUsed": "5298831", + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000020000000000000042000000000000000100000000008000000000000000000000000000000000000000000000000040000000800001000001000000000900000000000000000000020000000000000000000800000000000000000180000000000000400020000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000004000000000000000000001000000000000000000000000000000100000000020000100000000000080000400000000000000000000000000000000000000100000", + "blockHash": "0x27dad9f9044184bf4b231fb4e3847e8699a68d2580eb2b0459d0f27c18c0bd4f", + "transactionHash": "0xa672c52840426e81ab9be5dabd99601b594a1c9d83254c5316c2bd1b5843ce00", + "logs": [ + { + "transactionIndex": 7, + "blockNumber": 46174112, + "transactionHash": "0xa672c52840426e81ab9be5dabd99601b594a1c9d83254c5316c2bd1b5843ce00", + "address": "0x6a5a6E84708EBE03191046F3ff0B1DF99e4fEa51", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000717634cfe06ffab2ceaa7fcf1b9019813f4b25fe" + ], + "data": "0x", + "logIndex": 16, + "blockHash": "0x27dad9f9044184bf4b231fb4e3847e8699a68d2580eb2b0459d0f27c18c0bd4f" + }, + { + "transactionIndex": 7, + "blockNumber": 46174112, + "transactionHash": "0xa672c52840426e81ab9be5dabd99601b594a1c9d83254c5316c2bd1b5843ce00", + "address": "0x6a5a6E84708EBE03191046F3ff0B1DF99e4fEa51", + "topics": [ + "0x8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001220000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004e0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000009c00000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000ce00000000000000000000000000000000000000000000000000000000000000de00000000000000000000000000000000000000000000000000000000000000f200000000000000000000000000000000000000000000000000000000000000fc000000000000000000000000000000000000000000000000000000000000010800000000000000000000000006c5742bfa6c3ac6c149466579123cb04d8db4a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000929e7ef2d00000000000000000000000000000000000000000000000000000000ddb2d22b0000000000000000000000000000000000000000000000000000000011e5493300000000000000000000000000000000000000000000000000000000a63234e000000000000000000000000000000000000000000000000000000000daa17f4900000000000000000000000000000000000000000000000000000000c97b973000000000000000000000000000000000000000000000000000000000d65cd010000000000000000000000000000000000000000000000000000000008762d38e00000000000000000000000000000000000000000000000000000000034cd72500000000000000000000000000000000000000000000000000000000000000000000000000000000de7c5f5377a5c5e521e530bbac55a59ab8cd337000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b3c4a25d000000000000000000000000000000000000000000000000000000000ca6d56dc000000000000000000000000000000000000000000000000000000009fef0c0100000000000000000000000000000000000000000000000000000000e8c9fd4500000000000000000000000000000000000000000000000000000000e43581b800000000000000000000000000000000000000000000000000000000a230c5240000000000000000000000000000000000000000000000000000000011aee380000000000000000000000000000000000000000000000000000000005a4c75d500000000000000000000000000000000000000000000000000000000c6549ba400000000000000000000000000000000000000000000000000000000eecdac88000000000000000000000000000000000000000000000000000000000b1ca49a00000000000000000000000000000000000000000000000000000000000000000000000000000000305c0e7e3bdd77db1b7d9adf3c8144644948d459000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000007617b0b9d00000000000000000000000000000000000000000000000000000000ccf90c7400000000000000000000000000000000000000000000000000000000b87c747500000000000000000000000000000000000000000000000000000000b70cc72a0000000000000000000000000000000000000000000000000000000076a7383d00000000000000000000000000000000000000000000000000000000911a56cc000000000000000000000000000000000000000000000000000000003e39e4cf00000000000000000000000000000000000000000000000000000000000000000000000000000000eb0e5abfe38e825264be2abeec5d6148dd563439000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000018dd62ed3e00000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000070a08231000000000000000000000000000000000000000000000000000000005d7b590f000000000000000000000000000000000000000000000000000000007641e6f300000000000000000000000000000000000000000000000000000000313ce56700000000000000000000000000000000000000000000000000000000fbabdb060000000000000000000000000000000000000000000000000000000006675ba7000000000000000000000000000000000000000000000000000000008188f71c0000000000000000000000000000000000000000000000000000000077097fc80000000000000000000000000000000000000000000000000000000006fdde03000000000000000000000000000000000000000000000000000000001fe02e53000000000000000000000000000000000000000000000000000000009c999d90000000000000000000000000000000000000000000000000000000005480699a000000000000000000000000000000000000000000000000000000006bd7bd250000000000000000000000000000000000000000000000000000000044890ae00000000000000000000000000000000000000000000000000000000081a8f243000000000000000000000000000000000000000000000000000000003a8682240000000000000000000000000000000000000000000000000000000095d89b410000000000000000000000000000000000000000000000000000000018160ddd00000000000000000000000000000000000000000000000000000000a9059cbb0000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000c485bb9600000000000000000000000000000000000000000000000000000000e8edd0e300000000000000000000000000000000000000000000000000000000000000000000000000000000f1094c3cd6659d373366aa0945bad33acb47e87800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000af4c1210c00000000000000000000000000000000000000000000000000000000af2e757b00000000000000000000000000000000000000000000000000000000b74977bb00000000000000000000000000000000000000000000000000000000538be4ac00000000000000000000000000000000000000000000000000000000f4b54f3300000000000000000000000000000000000000000000000000000000f30014d900000000000000000000000000000000000000000000000000000000a2d14f7000000000000000000000000000000000000000000000000000000000663f898e000000000000000000000000000000000000000000000000000000005537a67a00000000000000000000000000000000000000000000000000000000eee2dcc300000000000000000000000000000000000000000000000000000000000000000000000000000000dcf76df2753f17e9a2318d394767ae9b71ede25e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000711eff85b00000000000000000000000000000000000000000000000000000000565974d3000000000000000000000000000000000000000000000000000000004f2274c000000000000000000000000000000000000000000000000000000000f962a52a00000000000000000000000000000000000000000000000000000000a75572fb0000000000000000000000000000000000000000000000000000000098d55d68000000000000000000000000000000000000000000000000000000009f4c440b000000000000000000000000000000000000000000000000000000000000000000000000000000004199cb48c13884431f2e21f294ff6692dfc4dec4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000004bd470cf900000000000000000000000000000000000000000000000000000000c65c3d9500000000000000000000000000000000000000000000000000000000525d5ebf0000000000000000000000000000000000000000000000000000000008ff3efd000000000000000000000000000000000000000000000000000000000000000000000000000000005ed51129a8e0504d40039e622a223a27271922fd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000066551544a00000000000000000000000000000000000000000000000000000000fb29eac800000000000000000000000000000000000000000000000000000000e26ceccf000000000000000000000000000000000000000000000000000000000d981625000000000000000000000000000000000000000000000000000000006951c9f400000000000000000000000000000000000000000000000000000000befb4fbc00000000000000000000000000000000000000000000000000000000000000000000000000000000b9f06ee587b27aa54a56cae506fee069e0cbdfae0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c0000000000000000000000000000000000000000000000000000000000000000000000000000000006c4a2f994d4f40b9aeaa9f3d725ab6953068f8d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b0000000000000000000000000000000000000000000000000000000000000000000000000000000079d01a15f4552b2992ac337356023388e823175e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "logIndex": 17, + "blockHash": "0x27dad9f9044184bf4b231fb4e3847e8699a68d2580eb2b0459d0f27c18c0bd4f" + }, + { + "transactionIndex": 7, + "blockNumber": 46174112, + "transactionHash": "0xa672c52840426e81ab9be5dabd99601b594a1c9d83254c5316c2bd1b5843ce00", + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000717634cfe06ffab2ceaa7fcf1b9019813f4b25fe", + "0x0000000000000000000000005082f249cdb2f2c1ee035e4f423c46ea2dab3ab1" + ], + "data": "0x000000000000000000000000000000000000000000000000016d359e7cdaf51000000000000000000000000000000000000000000000000011dace2b8ce16b13000000000000000000000000000000000000000000000681b141de7d905f4ed5000000000000000000000000000000000000000000000000106d988d10067603000000000000000000000000000000000000000000000681b2af141c0d3a43e5", + "logIndex": 18, + "blockHash": "0x27dad9f9044184bf4b231fb4e3847e8699a68d2580eb2b0459d0f27c18c0bd4f" + } + ], + "blockNumber": 46174112, + "cumulativeGasUsed": "6236596", + "status": 1, + "byzantium": true + }, + "args": [ + "0x717634cfe06FFAB2CEAA7fcf1b9019813f4B25FE", + [ + { + "facetAddress": "0x6C5742bfa6C3AC6C149466579123cB04D8Db4a01", + "functionSelectors": [ + "0x29e7ef2d", + "0xddb2d22b", + "0x11e54933", + "0xa63234e0", + "0xdaa17f49", + "0xc97b9730", + "0xd65cd010", + "0x8762d38e", + "0x034cd725" + ], + "action": 0 + }, + { + "facetAddress": "0xDe7C5f5377A5C5E521e530bbac55a59AB8cd3370", + "functionSelectors": [ + "0x3c4a25d0", + "0xca6d56dc", + "0x9fef0c01", + "0xe8c9fd45", + "0xe43581b8", + "0xa230c524", + "0x11aee380", + "0x5a4c75d5", + "0xc6549ba4", + "0xeecdac88", + "0x0b1ca49a" + ], + "action": 0 + }, + { + "facetAddress": "0x305C0e7E3BDD77Db1B7d9AdF3C8144644948D459", + "functionSelectors": [ + "0x617b0b9d", + "0xccf90c74", + "0xb87c7475", + "0xb70cc72a", + "0x76a7383d", + "0x911a56cc", + "0x3e39e4cf" + ], + "action": 0 + }, + { + "facetAddress": "0xeB0e5aBfe38e825264be2ABeeC5D6148DD563439", + "functionSelectors": [ + "0xdd62ed3e", + "0x095ea7b3", + "0x70a08231", + "0x5d7b590f", + "0x7641e6f3", + "0x313ce567", + "0xfbabdb06", + "0x06675ba7", + "0x8188f71c", + "0x77097fc8", + "0x06fdde03", + "0x1fe02e53", + "0x9c999d90", + "0x5480699a", + "0x6bd7bd25", + "0x44890ae0", + "0x81a8f243", + "0x3a868224", + "0x95d89b41", + "0x18160ddd", + "0xa9059cbb", + "0x23b872dd", + "0xc485bb96", + "0xe8edd0e3" + ], + "action": 0 + }, + { + "facetAddress": "0xf1094c3CD6659d373366AA0945bAd33ACb47e878", + "functionSelectors": [ + "0xf4c1210c", + "0xaf2e757b", + "0xb74977bb", + "0x538be4ac", + "0xf4b54f33", + "0xf30014d9", + "0xa2d14f70", + "0x663f898e", + "0x5537a67a", + "0xeee2dcc3" + ], + "action": 0 + }, + { + "facetAddress": "0xdcF76dF2753f17E9a2318D394767Ae9B71ede25E", + "functionSelectors": [ + "0x11eff85b", + "0x565974d3", + "0x4f2274c0", + "0xf962a52a", + "0xa75572fb", + "0x98d55d68", + "0x9f4c440b" + ], + "action": 0 + }, + { + "facetAddress": "0x4199cb48c13884431f2e21f294ff6692Dfc4DEc4", + "functionSelectors": [ + "0xbd470cf9", + "0xc65c3d95", + "0x525d5ebf", + "0x08ff3efd" + ], + "action": 0 + }, + { + "facetAddress": "0x5eD51129A8E0504d40039e622a223A27271922Fd", + "functionSelectors": [ + "0x6551544a", + "0xfb29eac8", + "0xe26ceccf", + "0x0d981625", + "0x6951c9f4", + "0xbefb4fbc" + ], + "action": 0 + }, + { + "facetAddress": "0xb9F06Ee587B27aa54a56CAE506fee069E0cbdfAE", + "functionSelectors": [ + "0x1f931c1c" + ], + "action": 0 + }, + { + "facetAddress": "0x06C4a2f994D4f40b9aEaa9F3D725aB6953068F8D", + "functionSelectors": [ + "0x8da5cb5b", + "0xf2fde38b" + ], + "action": 0 + }, + { + "facetAddress": "0x79D01A15F4552b2992aC337356023388e823175E", + "functionSelectors": [ + "0xcdffacc6", + "0x52ef6b2c", + "0xadfca15e", + "0x7a0ed627", + "0x01ffc9a7" + ], + "action": 0 + } + ], + [ + { + "initContract": "0x7D381445C00af2cEEF45Ed46859439d58c73ac61", + "initData": "0x2a84809100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000148e2b093000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "initContract": "0x59788D17fc4532D0f5E1b14979AE881CaBD3af73", + "initData": "0x3cf22baa00000000000000000000000000000000000000000000000000000000000000200000000000000000000000002f03add7aaba219405ea7dc94e4345d99d469fba0000000000000000000000001b0c84a86cc6730b583166c93e410ddd4f8763280000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000000000000a477265656e20476f6c640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024747000000000000000000000000000000000000000000000000000000000000" + } + ] + ], + "numDeployments": 2, + "solcInputHash": "3fe12e823553336a8d0f950a5a792ac9", + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractOwner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum IDiamondCut.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct IDiamondCut.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"initContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"internalType\":\"struct Diamond.Initialization[]\",\"name\":\"_initializations\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_contractOwner\":\"the owner of the contract. With default DiamondCutFacet, this is the sole address allowed to make further cuts.\",\"_diamondCut\":\"the list of facet to add\",\"_initializations\":\"the list of initialization pair to execute. This allow to setup a contract with multiple level of independent initialization.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"This construct a diamond contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solc_0.8/diamond/Diamond.sol\":\"Diamond\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solc_0.8/diamond/Diamond.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/******************************************************************************\\\\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\\n*\\n* Implementation of a diamond.\\n/******************************************************************************/\\n\\nimport {LibDiamond} from \\\"./libraries/LibDiamond.sol\\\";\\nimport {IDiamondCut} from \\\"./interfaces/IDiamondCut.sol\\\";\\n\\ncontract Diamond {\\n struct Initialization {\\n address initContract;\\n bytes initData;\\n }\\n\\n /// @notice This construct a diamond contract\\n /// @param _contractOwner the owner of the contract. With default DiamondCutFacet, this is the sole address allowed to make further cuts.\\n /// @param _diamondCut the list of facet to add\\n /// @param _initializations the list of initialization pair to execute. This allow to setup a contract with multiple level of independent initialization.\\n constructor(\\n address _contractOwner,\\n IDiamondCut.FacetCut[] memory _diamondCut,\\n Initialization[] memory _initializations\\n ) payable {\\n if (_contractOwner != address(0)) {\\n LibDiamond.setContractOwner(_contractOwner);\\n }\\n\\n LibDiamond.diamondCut(_diamondCut, address(0), \\\"\\\");\\n\\n for (uint256 i = 0; i < _initializations.length; i++) {\\n LibDiamond.initializeDiamondCut(_initializations[i].initContract, _initializations[i].initData);\\n }\\n }\\n\\n // Find facet for function that is called and execute the\\n // function if a facet is found and return any value.\\n fallback() external payable {\\n LibDiamond.DiamondStorage storage ds;\\n bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;\\n // get diamond storage\\n assembly {\\n ds.slot := position\\n }\\n // get facet from function selector\\n address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;\\n require(facet != address(0), \\\"Diamond: Function does not exist\\\");\\n // Execute external function from facet using delegatecall and return any value.\\n assembly {\\n // copy function selector and any arguments\\n calldatacopy(0, 0, calldatasize())\\n // execute function call using the facet\\n let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)\\n // get any return value\\n returndatacopy(0, 0, returndatasize())\\n // return any return value or error back to the caller\\n switch result\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n receive() external payable {}\\n}\\n\",\"keccak256\":\"0x9f459a9f18d5429b0dd40e60b4a67a27d2b94693c4d190ed9dd7034a894c1eb6\",\"license\":\"MIT\"},\"solc_0.8/diamond/interfaces/IDiamondCut.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/******************************************************************************\\\\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\\n/******************************************************************************/\\n\\ninterface IDiamondCut {\\n enum FacetCutAction {Add, Replace, Remove}\\n // Add=0, Replace=1, Remove=2\\n\\n struct FacetCut {\\n address facetAddress;\\n FacetCutAction action;\\n bytes4[] functionSelectors;\\n }\\n\\n /// @notice Add/replace/remove any number of functions and optionally execute\\n /// a function with delegatecall\\n /// @param _diamondCut Contains the facet addresses and function selectors\\n /// @param _init The address of the contract or facet to execute _calldata\\n /// @param _calldata A function call, including function selector and arguments\\n /// _calldata is executed with delegatecall on _init\\n function diamondCut(\\n FacetCut[] calldata _diamondCut,\\n address _init,\\n bytes calldata _calldata\\n ) external;\\n\\n event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);\\n}\\n\",\"keccak256\":\"0xc00c16bfa30a3fa5f3dc684f7f8ba62c259962b25f647d9588739458989717fc\",\"license\":\"MIT\"},\"solc_0.8/diamond/libraries/LibDiamond.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/******************************************************************************\\\\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\\n/******************************************************************************/\\nimport { IDiamondCut } from \\\"../interfaces/IDiamondCut.sol\\\";\\n\\nlibrary LibDiamond {\\n bytes32 constant DIAMOND_STORAGE_POSITION = keccak256(\\\"diamond.standard.diamond.storage\\\");\\n\\n struct FacetAddressAndPosition {\\n address facetAddress;\\n uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array\\n }\\n\\n struct FacetFunctionSelectors {\\n bytes4[] functionSelectors;\\n uint256 facetAddressPosition; // position of facetAddress in facetAddresses array\\n }\\n\\n struct DiamondStorage {\\n // maps function selector to the facet address and\\n // the position of the selector in the facetFunctionSelectors.selectors array\\n mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;\\n // maps facet addresses to function selectors\\n mapping(address => FacetFunctionSelectors) facetFunctionSelectors;\\n // facet addresses\\n address[] facetAddresses;\\n // Used to query if a contract implements an interface.\\n // Used to implement ERC-165.\\n mapping(bytes4 => bool) supportedInterfaces;\\n // owner of the contract\\n address contractOwner;\\n }\\n\\n function diamondStorage() internal pure returns (DiamondStorage storage ds) {\\n bytes32 position = DIAMOND_STORAGE_POSITION;\\n assembly {\\n ds.slot := position\\n }\\n }\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n function setContractOwner(address _newOwner) internal {\\n DiamondStorage storage ds = diamondStorage();\\n address previousOwner = ds.contractOwner;\\n ds.contractOwner = _newOwner;\\n emit OwnershipTransferred(previousOwner, _newOwner);\\n }\\n\\n function contractOwner() internal view returns (address contractOwner_) {\\n contractOwner_ = diamondStorage().contractOwner;\\n }\\n\\n function enforceIsContractOwner() internal view {\\n require(msg.sender == diamondStorage().contractOwner, \\\"LibDiamond: Must be contract owner\\\");\\n }\\n\\n event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata);\\n\\n // Internal function version of diamondCut\\n function diamondCut(\\n IDiamondCut.FacetCut[] memory _diamondCut,\\n address _init,\\n bytes memory _calldata\\n ) internal {\\n for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) {\\n IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;\\n if (action == IDiamondCut.FacetCutAction.Add) {\\n addFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\\n } else if (action == IDiamondCut.FacetCutAction.Replace) {\\n replaceFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\\n } else if (action == IDiamondCut.FacetCutAction.Remove) {\\n removeFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\\n } else {\\n revert(\\\"LibDiamondCut: Incorrect FacetCutAction\\\");\\n }\\n }\\n emit DiamondCut(_diamondCut, _init, _calldata);\\n initializeDiamondCut(_init, _calldata);\\n }\\n\\n function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\\n require(_functionSelectors.length > 0, \\\"LibDiamondCut: No selectors in facet to cut\\\");\\n DiamondStorage storage ds = diamondStorage(); \\n require(_facetAddress != address(0), \\\"LibDiamondCut: Add facet can't be address(0)\\\");\\n uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);\\n // add new facet address if it does not exist\\n if (selectorPosition == 0) {\\n addFacet(ds, _facetAddress); \\n }\\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\\n bytes4 selector = _functionSelectors[selectorIndex];\\n address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;\\n require(oldFacetAddress == address(0), \\\"LibDiamondCut: Can't add function that already exists\\\");\\n addFunction(ds, selector, selectorPosition, _facetAddress);\\n selectorPosition++;\\n }\\n }\\n\\n function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\\n require(_functionSelectors.length > 0, \\\"LibDiamondCut: No selectors in facet to cut\\\");\\n DiamondStorage storage ds = diamondStorage();\\n require(_facetAddress != address(0), \\\"LibDiamondCut: Add facet can't be address(0)\\\");\\n uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);\\n // add new facet address if it does not exist\\n if (selectorPosition == 0) {\\n addFacet(ds, _facetAddress);\\n }\\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\\n bytes4 selector = _functionSelectors[selectorIndex];\\n address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;\\n require(oldFacetAddress != _facetAddress, \\\"LibDiamondCut: Can't replace function with same function\\\");\\n removeFunction(ds, oldFacetAddress, selector);\\n addFunction(ds, selector, selectorPosition, _facetAddress);\\n selectorPosition++;\\n }\\n }\\n\\n function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\\n require(_functionSelectors.length > 0, \\\"LibDiamondCut: No selectors in facet to cut\\\");\\n DiamondStorage storage ds = diamondStorage();\\n // if function does not exist then do nothing and return\\n require(_facetAddress == address(0), \\\"LibDiamondCut: Remove facet address must be address(0)\\\");\\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\\n bytes4 selector = _functionSelectors[selectorIndex];\\n address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;\\n removeFunction(ds, oldFacetAddress, selector);\\n }\\n }\\n\\n function addFacet(DiamondStorage storage ds, address _facetAddress) internal {\\n enforceHasContractCode(_facetAddress, \\\"LibDiamondCut: New facet has no code\\\");\\n ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = ds.facetAddresses.length;\\n ds.facetAddresses.push(_facetAddress);\\n } \\n\\n\\n function addFunction(DiamondStorage storage ds, bytes4 _selector, uint96 _selectorPosition, address _facetAddress) internal {\\n ds.selectorToFacetAndPosition[_selector].functionSelectorPosition = _selectorPosition;\\n ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(_selector);\\n ds.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress;\\n }\\n\\n function removeFunction(DiamondStorage storage ds, address _facetAddress, bytes4 _selector) internal { \\n require(_facetAddress != address(0), \\\"LibDiamondCut: Can't remove function that doesn't exist\\\");\\n // an immutable function is a function defined directly in a diamond\\n require(_facetAddress != address(this), \\\"LibDiamondCut: Can't remove immutable function\\\");\\n // replace selector with last selector, then delete last selector\\n uint256 selectorPosition = ds.selectorToFacetAndPosition[_selector].functionSelectorPosition;\\n uint256 lastSelectorPosition = ds.facetFunctionSelectors[_facetAddress].functionSelectors.length - 1;\\n // if not the same then replace _selector with lastSelector\\n if (selectorPosition != lastSelectorPosition) {\\n bytes4 lastSelector = ds.facetFunctionSelectors[_facetAddress].functionSelectors[lastSelectorPosition];\\n ds.facetFunctionSelectors[_facetAddress].functionSelectors[selectorPosition] = lastSelector;\\n ds.selectorToFacetAndPosition[lastSelector].functionSelectorPosition = uint96(selectorPosition);\\n }\\n // delete the last selector\\n ds.facetFunctionSelectors[_facetAddress].functionSelectors.pop();\\n delete ds.selectorToFacetAndPosition[_selector];\\n\\n // if no more selectors for facet address then delete the facet address\\n if (lastSelectorPosition == 0) {\\n // replace facet address with last facet address and delete last facet address\\n uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1;\\n uint256 facetAddressPosition = ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;\\n if (facetAddressPosition != lastFacetAddressPosition) {\\n address lastFacetAddress = ds.facetAddresses[lastFacetAddressPosition];\\n ds.facetAddresses[facetAddressPosition] = lastFacetAddress;\\n ds.facetFunctionSelectors[lastFacetAddress].facetAddressPosition = facetAddressPosition;\\n }\\n ds.facetAddresses.pop();\\n delete ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;\\n }\\n }\\n\\n function initializeDiamondCut(address _init, bytes memory _calldata) internal {\\n if (_init == address(0)) {\\n require(_calldata.length == 0, \\\"LibDiamondCut: _init is address(0) but_calldata is not empty\\\");\\n } else {\\n require(_calldata.length > 0, \\\"LibDiamondCut: _calldata is empty but _init is not address(0)\\\");\\n if (_init != address(this)) {\\n enforceHasContractCode(_init, \\\"LibDiamondCut: _init address has no code\\\");\\n }\\n (bool success, bytes memory error) = _init.delegatecall(_calldata);\\n if (!success) {\\n if (error.length > 0) {\\n // bubble up the error\\n revert(string(error));\\n } else {\\n revert(\\\"LibDiamondCut: _init function reverted\\\");\\n }\\n }\\n }\\n }\\n\\n function enforceHasContractCode(address _contract, string memory _errorMessage) internal view {\\n uint256 contractSize;\\n assembly {\\n contractSize := extcodesize(_contract)\\n }\\n require(contractSize > 0, _errorMessage);\\n }\\n}\\n\",\"keccak256\":\"0x2205345e83eb86f5281f159a9215a096cb6d404782619f9b8e9d7a4a46c32a37\",\"license\":\"MIT\"}},\"version\":1}", + "bytecode": "0x60806040526040516200321e3803806200321e833981016040819052620000269162001340565b6001600160a01b038316156200004c576200004c83620000f760201b620001071760201c565b62000074826000604051806020016040528060008152506200017b60201b620001c11760201c565b60005b8151811015620000ed57620000d88282815181106200009a576200009a62001514565b602002602001015160000151838381518110620000bb57620000bb62001514565b602002602001015160200151620003d960201b620004051760201c565b80620000e48162001540565b91505062000077565b505050506200173d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080546001600160a01b031981166001600160a01b0384811691821790935560405160008051602062003172833981519152939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156200038a5760008482815181106200019f576200019f62001514565b602002602001015160200151905060006002811115620001c357620001c36200155e565b816002811115620001d857620001d86200155e565b1415620002375762000231858381518110620001f857620001f862001514565b60200260200101516000015186848151811062000219576200021962001514565b602002602001015160400151620005fe60201b60201c565b62000374565b60018160028111156200024e576200024e6200155e565b1415620002a757620002318583815181106200026e576200026e62001514565b6020026020010151600001518684815181106200028f576200028f62001514565b6020026020010151604001516200088860201b60201c565b6002816002811115620002be57620002be6200155e565b1415620003175762000231858381518110620002de57620002de62001514565b602002602001015160000151868481518110620002ff57620002ff62001514565b60200260200101516040015162000b1e60201b60201c565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b60648201526084015b60405180910390fd5b5080620003818162001540565b9150506200017e565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051620003c093929190620015a2565b60405180910390a1620003d48282620003d9565b505050565b6001600160a01b03821662000463578051156200045f5760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016200036b565b5050565b6000815111620004dc5760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016200036b565b6001600160a01b038216301462000512576200051282604051806060016040528060288152602001620031926028913962000c7e565b600080836001600160a01b0316836040516200052f9190620016a9565b600060405180830381855af49150503d80600081146200056c576040519150601f19603f3d011682016040523d82523d6000602084013e62000571565b606091505b509150915081620005f857805115620005a0578060405162461bcd60e51b81526004016200036b9190620016c7565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b60648201526084016200036b565b50505050565b6000815111620006545760405162461bcd60e51b815260206004820152602b6024820152600080516020620031fe83398151915260448201526a1858d95d081d1bc818dd5d60aa1b60648201526084016200036b565b600080516020620031728339815191526001600160a01b038316620006c05760405162461bcd60e51b815260206004820152602c6024820152600080516020620031ba83398151915260448201526b65206164647265737328302960a01b60648201526084016200036b565b6001600160a01b03831660009081526001820160205260409020546001600160601b038116620006f657620006f6828562000ca2565b60005b8351811015620008815760008482815181106200071a576200071a62001514565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620007c25760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c726561647920657869737473000000000000000000000060648201526084016200036b565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836200086681620016e3565b94505050508080620008789062001540565b915050620006f9565b5050505050565b6000815111620008de5760405162461bcd60e51b815260206004820152602b6024820152600080516020620031fe83398151915260448201526a1858d95d081d1bc818dd5d60aa1b60648201526084016200036b565b600080516020620031728339815191526001600160a01b0383166200094a5760405162461bcd60e51b815260206004820152602c6024820152600080516020620031ba83398151915260448201526b65206164647265737328302960a01b60648201526084016200036b565b6001600160a01b03831660009081526001820160205260409020546001600160601b038116620009805762000980828562000ca2565b60005b835181101562000881576000848281518110620009a457620009a462001514565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0390811690871681141562000a525760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016200036b565b62000a5f85828462000d0f565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558362000b0381620016e3565b9450505050808062000b159062001540565b91505062000983565b600081511162000b745760405162461bcd60e51b815260206004820152602b6024820152600080516020620031fe83398151915260448201526a1858d95d081d1bc818dd5d60aa1b60648201526084016200036b565b600080516020620031728339815191526001600160a01b0383161562000c035760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d75737420626520616464726573732830290000000000000000000060648201526084016200036b565b60005b8251811015620005f857600083828151811062000c275762000c2762001514565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031662000c6684828462000d0f565b5050808062000c759062001540565b91505062000c06565b813b8181620005f85760405162461bcd60e51b81526004016200036b9190620016c7565b62000cc781604051806060016040528060248152602001620031da6024913962000c7e565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160a01b03821662000d8d5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016200036b565b6001600160a01b03821630141562000dff5760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b60648201526084016200036b565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b0316929162000e50916200170d565b905080821462000f49576001600160a01b0384166000908152600186016020526040812080548390811062000e895762000e8962001514565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811062000edd5762000edd62001514565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384166000908152600186016020526040902080548062000f755762000f7562001727565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319851682528690526040812055806200088157600285015460009062000fd7906001906200170d565b6001600160a01b03861660009081526001808901602052604090912001549091508082146200108d5760008760020183815481106200101a576200101a62001514565b6000918252602090912001546002890180546001600160a01b0390921692508291849081106200104e576200104e62001514565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480620010a357620010a362001727565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b80516001600160a01b03811681146200110457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171562001144576200114462001109565b60405290565b604051606081016001600160401b038111828210171562001144576200114462001109565b604051601f8201601f191681016001600160401b03811182821017156200119a576200119a62001109565b604052919050565b60006001600160401b03821115620011be57620011be62001109565b5060051b60200190565b60005b83811015620011e5578181015183820152602001620011cb565b83811115620005f85750506000910152565b6000601f83818401126200120a57600080fd5b82516020620012236200121d83620011a2565b6200116f565b82815260059290921b850181019181810190878411156200124357600080fd5b8287015b84811015620013345780516001600160401b0380821115620012695760008081fd5b908901906040601f19838d038101821315620012855760008081fd5b6200128f6200111f565b6200129c898601620010ec565b81528285015184811115620012b15760008081fd5b8086019550508d603f860112620012c85760008081fd5b8885015184811115620012df57620012df62001109565b620012f08a848e840116016200116f565b94508085528e848288010111156200130a57600092508283fd5b6200131b818b8701868901620011c8565b5080890193909352505084525091830191830162001247565b50979650505050505050565b6000806000606084860312156200135657600080fd5b6200136184620010ec565b60208501519093506001600160401b03808211156200137f57600080fd5b818601915086601f8301126200139457600080fd5b8151620013a56200121d82620011a2565b8082825260208201915060208360051b860101925089831115620013c857600080fd5b602085015b83811015620014e057805185811115620013e657600080fd5b86016060818d03601f19011215620013fd57600080fd5b620014076200114a565b6200141560208301620010ec565b81526040820151600381106200142a57600080fd5b60208201526060820151878111156200144257600080fd5b8083019250508c603f8301126200145857600080fd5b60208201516200146c6200121d82620011a2565b81815260059190911b83016040019060208101908f8311156200148e57600080fd5b6040850194505b82851015620014c95784516001600160e01b031981168114620014b757600080fd5b82526020948501949091019062001495565b6040840152505084525060209283019201620013cd565b5060408901519096509350505080821115620014fb57600080fd5b506200150a86828701620011f7565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156200155757620015576200152a565b5060010190565b634e487b7160e01b600052602160045260246000fd5b600081518084526200158e816020860160208601620011c8565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156200167757898403607f19018652815180516001600160a01b031685528381015189860190600381106200161357634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015620016615783516001600160e01b031916825292860192600192909201919086019062001635565b50978501979550505090820190600101620015cb565b50506001600160a01b038a169088015286810360408801526200169b818962001574565b9a9950505050505050505050565b60008251620016bd818460208701620011c8565b9190910192915050565b602081526000620016dc602083018462001574565b9392505050565b60006001600160601b03828116808214156200170357620017036200152a565b6001019392505050565b6000828210156200172257620017226200152a565b500390565b634e487b7160e01b600052603160045260246000fd5b611a25806200174d6000396000f3fe60806040523661000b57005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020819052604090912054819073ffffffffffffffffffffffffffffffffffffffff16806100e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610102573d6000f35b3d6000fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156103ba5760008482815181106101e1576101e1611657565b60200260200101516020015190506000600281111561020257610202611686565b81600281111561021457610214611686565b14156102635761025e85838151811061022f5761022f611657565b60200260200101516000015186848151811061024d5761024d611657565b6020026020010151604001516106be565b6103a7565b600181600281111561027757610277611686565b14156102c15761025e85838151811061029257610292611657565b6020026020010151600001518684815181106102b0576102b0611657565b602002602001015160400151610a71565b60028160028111156102d5576102d5611686565b141561031f5761025e8583815181106102f0576102f0611657565b60200260200101516000015186848151811061030e5761030e611657565b602002602001015160400151610e2e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e0000000000000000000000000000000000000000000000000060648201526084016100da565b50806103b2816116e4565b9150506101c4565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516103ee93929190611793565b60405180910390a16104008282610405565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166104b3578051156104af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100da565b5050565b6000815111610544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff8216301461058357610583826040518060600160405280602881526020016119a46028913961101b565b6000808373ffffffffffffffffffffffffffffffffffffffff16836040516105ab91906118fb565b600060405180830381855af49150503d80600081146105e6576040519150601f19603f3d011682016040523d82523d6000602084013e6105eb565b606091505b5091509150816106b85780511561063057806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100da565b50505050565b600081511161074f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610858576108588285611056565b60005b8351811015610a6a57600084828151811061087857610878611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16801561095d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c726561647920657869737473000000000000000000000060648201526084016100da565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610a5281611931565b94505050508080610a62906116e4565b91505061085b565b5050505050565b6000815111610b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610c0b57610c0b8285611056565b60005b8351811015610a6a576000848281518110610c2b57610c2b611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff908116908716811415610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016100da565b610d218582846110e5565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610e1681611931565b94505050508080610e26906116e4565b915050610c0e565b6000815111610ebf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff831615610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d75737420626520616464726573732830290000000000000000000060648201526084016100da565b60005b82518110156106b8576000838281518110610fa457610fa4611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529185905260409091205490915073ffffffffffffffffffffffffffffffffffffffff166110068482846110e5565b50508080611013906116e4565b915050610f87565b813b81816106b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b611078816040518060600160405280602481526020016119cc6024913961101b565b60028201805473ffffffffffffffffffffffffffffffffffffffff90921660008181526001948501602090815260408220860185905594840183559182529290200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff821630141561122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201527f7461626c652066756e6374696f6e00000000000000000000000000000000000060648201526084016100da565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152602084815260408083205473ffffffffffffffffffffffffffffffffffffffff86168452600180880190935290832054740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff1692916112b89161195d565b90508082146113ff5773ffffffffffffffffffffffffffffffffffffffff8416600090815260018601602052604081208054839081106112fa576112fa611657565b6000918252602080832060088304015473ffffffffffffffffffffffffffffffffffffffff8916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811061135857611358611657565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790557fffffffff0000000000000000000000000000000000000000000000000000000092909216825286905260409020805473ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006bffffffffffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff84166000908152600186016020526040902080548061143557611435611974565b6000828152602080822060087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193840401805463ffffffff600460078716026101000a0219169055919092557fffffffff0000000000000000000000000000000000000000000000000000000085168252869052604081205580610a6a5760028501546000906114ca9060019061195d565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001808901602052604090912001549091508082146115b857600087600201838154811061151657611516611657565b60009182526020909120015460028901805473ffffffffffffffffffffffffffffffffffffffff909216925082918490811061155457611554611657565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152600189810190925260409020018190555b866002018054806115cb576115cb611974565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff88168252600189810190915260408220015550505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611716576117166116b5565b5060010190565b60005b83811015611738578181015183820152602001611720565b838111156106b85750506000910152565b6000815180845261176181602086016020860161171d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156118be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8503018652815188850173ffffffffffffffffffffffffffffffffffffffff82511686528482015160038110611845577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156118a95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928601926001929092019190860190611867565b509785019795505050908201906001016117bc565b505073ffffffffffffffffffffffffffffffffffffffff8a169088015286810360408801526118ed8189611749565b9a9950505050505050505050565b6000825161190d81846020870161171d565b9190910192915050565b60208152600061192a6020830184611749565b9392505050565b60006bffffffffffffffffffffffff80831681811415611953576119536116b5565b6001019392505050565b60008282101561196f5761196f6116b5565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212202b18a533b03703e1326000cf2f36b1c6ec631cff163a752d939e5ee79ad2cde364736f6c634300080a0033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204164642066616365742063616e277420624c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f64654c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e2066", + "deployedBytecode": "0x60806040523661000b57005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020819052604090912054819073ffffffffffffffffffffffffffffffffffffffff16806100e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610102573d6000f35b3d6000fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156103ba5760008482815181106101e1576101e1611657565b60200260200101516020015190506000600281111561020257610202611686565b81600281111561021457610214611686565b14156102635761025e85838151811061022f5761022f611657565b60200260200101516000015186848151811061024d5761024d611657565b6020026020010151604001516106be565b6103a7565b600181600281111561027757610277611686565b14156102c15761025e85838151811061029257610292611657565b6020026020010151600001518684815181106102b0576102b0611657565b602002602001015160400151610a71565b60028160028111156102d5576102d5611686565b141561031f5761025e8583815181106102f0576102f0611657565b60200260200101516000015186848151811061030e5761030e611657565b602002602001015160400151610e2e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e0000000000000000000000000000000000000000000000000060648201526084016100da565b50806103b2816116e4565b9150506101c4565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516103ee93929190611793565b60405180910390a16104008282610405565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166104b3578051156104af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100da565b5050565b6000815111610544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff8216301461058357610583826040518060600160405280602881526020016119a46028913961101b565b6000808373ffffffffffffffffffffffffffffffffffffffff16836040516105ab91906118fb565b600060405180830381855af49150503d80600081146105e6576040519150601f19603f3d011682016040523d82523d6000602084013e6105eb565b606091505b5091509150816106b85780511561063057806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100da565b50505050565b600081511161074f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610858576108588285611056565b60005b8351811015610a6a57600084828151811061087857610878611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16801561095d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c726561647920657869737473000000000000000000000060648201526084016100da565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610a5281611931565b94505050508080610a62906116e4565b91505061085b565b5050505050565b6000815111610b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610c0b57610c0b8285611056565b60005b8351811015610a6a576000848281518110610c2b57610c2b611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff908116908716811415610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016100da565b610d218582846110e5565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610e1681611931565b94505050508080610e26906116e4565b915050610c0e565b6000815111610ebf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff831615610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d75737420626520616464726573732830290000000000000000000060648201526084016100da565b60005b82518110156106b8576000838281518110610fa457610fa4611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529185905260409091205490915073ffffffffffffffffffffffffffffffffffffffff166110068482846110e5565b50508080611013906116e4565b915050610f87565b813b81816106b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b611078816040518060600160405280602481526020016119cc6024913961101b565b60028201805473ffffffffffffffffffffffffffffffffffffffff90921660008181526001948501602090815260408220860185905594840183559182529290200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff821630141561122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201527f7461626c652066756e6374696f6e00000000000000000000000000000000000060648201526084016100da565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152602084815260408083205473ffffffffffffffffffffffffffffffffffffffff86168452600180880190935290832054740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff1692916112b89161195d565b90508082146113ff5773ffffffffffffffffffffffffffffffffffffffff8416600090815260018601602052604081208054839081106112fa576112fa611657565b6000918252602080832060088304015473ffffffffffffffffffffffffffffffffffffffff8916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811061135857611358611657565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790557fffffffff0000000000000000000000000000000000000000000000000000000092909216825286905260409020805473ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006bffffffffffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff84166000908152600186016020526040902080548061143557611435611974565b6000828152602080822060087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193840401805463ffffffff600460078716026101000a0219169055919092557fffffffff0000000000000000000000000000000000000000000000000000000085168252869052604081205580610a6a5760028501546000906114ca9060019061195d565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001808901602052604090912001549091508082146115b857600087600201838154811061151657611516611657565b60009182526020909120015460028901805473ffffffffffffffffffffffffffffffffffffffff909216925082918490811061155457611554611657565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152600189810190925260409020018190555b866002018054806115cb576115cb611974565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff88168252600189810190915260408220015550505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611716576117166116b5565b5060010190565b60005b83811015611738578181015183820152602001611720565b838111156106b85750506000910152565b6000815180845261176181602086016020860161171d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156118be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8503018652815188850173ffffffffffffffffffffffffffffffffffffffff82511686528482015160038110611845577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156118a95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928601926001929092019190860190611867565b509785019795505050908201906001016117bc565b505073ffffffffffffffffffffffffffffffffffffffff8a169088015286810360408801526118ed8189611749565b9a9950505050505050505050565b6000825161190d81846020870161171d565b9190910192915050565b60208152600061192a6020830184611749565b9392505050565b60006bffffffffffffffffffffffff80831681811415611953576119536116b5565b6001019392505050565b60008282101561196f5761196f6116b5565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212202b18a533b03703e1326000cf2f36b1c6ec631cff163a752d939e5ee79ad2cde364736f6c634300080a0033", + "devdoc": { + "kind": "dev", + "methods": { + "constructor": { + "params": { + "_contractOwner": "the owner of the contract. With default DiamondCutFacet, this is the sole address allowed to make further cuts.", + "_diamondCut": "the list of facet to add", + "_initializations": "the list of initialization pair to execute. This allow to setup a contract with multiple level of independent initialization." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "constructor": { + "notice": "This construct a diamond contract" + } + }, + "version": 1 + }, + "storageLayout": { + "storage": [], + "types": null + } +} \ No newline at end of file diff --git a/deployments/mumbai/FastGLD.json b/deployments/mumbai/FastGLD.json new file mode 100644 index 00000000..7cbccf0e --- /dev/null +++ b/deployments/mumbai/FastGLD.json @@ -0,0 +1,3221 @@ +{ + "address": "0x2a5D24a501388CF8d9805C4d8D8c1d341C6b1784", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_contractOwner", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum IDiamondCut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct IDiamondCut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "initContract", + "type": "address" + }, + { + "internalType": "bytes", + "name": "initData", + "type": "bytes" + } + ], + "internalType": "struct Diamond.Initialization[]", + "name": "_initializations", + "type": "tuple[]" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + }, + { + "inputs": [], + "name": "InternalMethod", + "type": "error" + }, + { + "inputs": [], + "name": "RequiresIssuerMemberOrIssuerCaller", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresIssuerMembership", + "type": "error" + }, + { + "inputs": [], + "name": "UnsupportedOperation", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "ref", + "type": "string" + }, + { + "indexed": true, + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "Burnt", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "basisPointFee", + "type": "uint32" + } + ], + "name": "CrowdfundDefaultBasisPointFeeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Crowdfund", + "name": "crowdfund", + "type": "address" + } + ], + "name": "CrowdfundDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Crowdfund", + "name": "crowdfund", + "type": "address" + } + ], + "name": "CrowdfundRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "transfersDisabled", + "type": "bool" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "crowdfundsDefaultBasisPointsFee", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "memberCount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "governorCount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reserveBalance", + "type": "uint256" + } + ], + "name": "DetailsChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Disapproval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Distribution", + "name": "distribution", + "type": "address" + } + ], + "name": "DistributionDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Distribution", + "name": "distribution", + "type": "address" + } + ], + "name": "DistributionRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "FastTransfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "ref", + "type": "string" + }, + { + "indexed": true, + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "group", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "hasFixedSupply", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isSemiPublic", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "marketplaceAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "newGroup", + "type": "string" + } + ], + "name": "setGroup", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "flag", + "type": "bool" + } + ], + "name": "setIsSemiPublic", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "flag", + "type": "bool" + } + ], + "name": "setTransfersDisabled", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "transfersDisabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresGovernorsManager", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresMembersManager", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresValidGovernor", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresValidMember", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "governor", + "type": "address" + } + ], + "name": "GovernorAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "governor", + "type": "address" + } + ], + "name": "GovernorRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "MemberAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "MemberRemoved", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "addGovernor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "addMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "a", + "type": "address" + } + ], + "name": "flags", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + } + ], + "internalType": "struct FastAccessFacet.Flags", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governorCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isGovernor", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isMember", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "memberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateGovernors", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateMembers", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "governor", + "type": "address" + } + ], + "name": "removeGovernor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "removeMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresAutomatonsManager", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "automaton", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint32", + "name": "privileges", + "type": "uint32" + } + ], + "name": "AutomatonPrivilegesSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "automaton", + "type": "address" + } + ], + "name": "AutomatonRemoved", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "automaton", + "type": "address" + }, + { + "internalType": "uint32", + "name": "privilege", + "type": "uint32" + } + ], + "name": "automatonCan", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "automatonCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "automaton", + "type": "address" + } + ], + "name": "automatonPrivileges", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "candidate", + "type": "address" + } + ], + "name": "isAutomaton", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateAutomatons", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "candidate", + "type": "address" + } + ], + "name": "removeAutomaton", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "candidate", + "type": "address" + }, + { + "internalType": "uint32", + "name": "privileges", + "type": "uint32" + } + ], + "name": "setAutomatonPrivileges", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "RequiresContinuousSupply", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "a", + "type": "address" + } + ], + "name": "RequiresDifferentSenderAndRecipient", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresFastMembership", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresMarketplaceActiveMembership", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "holder", + "type": "address" + } + ], + "name": "RequiresPositiveBalance", + "type": "error" + }, + { + "inputs": [], + "name": "RequiresTransfersEnabled", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresValidTokenHolder", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "beforeRemovingMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "disapprove", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "givenAllowanceCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "holders", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateAllowancesByOwner", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateAllowancesBySpender", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "performApproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "performDisapproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct FastTokenFacet.TransferArgs", + "name": "p", + "type": "tuple" + } + ], + "name": "performTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "receivedAllowanceCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "holder", + "type": "address" + } + ], + "name": "retrieveDeadTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "transferFromWithRef", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "transferWithRef", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "burnt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "minted", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateSupplyProofs", + "outputs": [ + { + "components": [ + { + "internalType": "enum LibFastHistory.SupplyOp", + "name": "op", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct LibFastHistory.SupplyProof[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "involvee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateTransferProofIndicesByInvolvee", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateTransferProofs", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct LibFastHistory.TransferProof[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "involvee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateTransferProofsByInvolvee", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct LibFastHistory.TransferProof[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "supplyProofCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "involvee", + "type": "address" + } + ], + "name": "transferProofByInvolveeCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "transferProofCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "transfered", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "detailedPrivileges", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ethBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "automatonPrivileges", + "type": "uint32" + } + ], + "internalType": "struct FastFrontendFacet.PrivilegesDetails", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "details", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isSemiPublic", + "type": "bool" + }, + { + "internalType": "bool", + "name": "hasFixedSupply", + "type": "bool" + }, + { + "internalType": "bool", + "name": "transfersDisabled", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "crowdfundsDefaultBasisPointsFee", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "reserveBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "memberCount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "governorCount", + "type": "uint256" + } + ], + "internalType": "struct FastFrontendFacet.Details", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "emitDetailsChanged", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedCrowdfunds", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint16", + "name": "VERSION", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "issuer", + "type": "address" + }, + { + "internalType": "address", + "name": "fast", + "type": "address" + }, + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "internalType": "uint32", + "name": "basisPointsFee", + "type": "uint32" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct Crowdfund.Params", + "name": "params", + "type": "tuple" + }, + { + "internalType": "enum Crowdfund.Phase", + "name": "phase", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "creationBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pledgerCount", + "type": "uint256" + } + ], + "internalType": "struct Crowdfund.Details[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedDistributions", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint16", + "name": "VERSION", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "distributor", + "type": "address" + }, + { + "internalType": "address", + "name": "issuer", + "type": "address" + }, + { + "internalType": "address", + "name": "fast", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockLatch", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "total", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct Distribution.Params", + "name": "params", + "type": "tuple" + }, + { + "internalType": "enum Distribution.Phase", + "name": "phase", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "creationBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "available", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "beneficiaryCount", + "type": "uint256" + } + ], + "internalType": "struct Distribution.Details[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedGovernors", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ethBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "automatonPrivileges", + "type": "uint32" + } + ], + "internalType": "struct FastFrontendFacet.PrivilegesDetails[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedMembers", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ethBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "automatonPrivileges", + "type": "uint32" + } + ], + "internalType": "struct FastFrontendFacet.PrivilegesDetails[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "InsufficientFunds", + "type": "error" + }, + { + "inputs": [], + "name": "TokenContractError", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "total", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockLatch", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "createDistribution", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "distributionCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDistributions", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Distribution", + "name": "distribution", + "type": "address" + } + ], + "name": "removeDistribution", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "fee", + "type": "uint32" + } + ], + "name": "InvalidCrowdfundBasisPointsFee", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresFastGovernorship", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "uint32", + "name": "privilege", + "type": "uint32" + } + ], + "name": "RequiresPrivilege", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "createCrowdfund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "crowdfundCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "crowdfundsDefaultBasisPointFee", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateCrowdfunds", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Crowdfund", + "name": "crowdfund", + "type": "address" + } + ], + "name": "removeCrowdfund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "newBasisPointFee", + "type": "uint32" + } + ], + "name": "setCrowdfundsDefaultBasisPointFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum IDiamondCut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "indexed": false, + "internalType": "struct IDiamondCut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "address", + "name": "_init", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "DiamondCut", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum IDiamondCut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct IDiamondCut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "_init", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "diamondCut", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "owner_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_functionSelector", + "type": "bytes4" + } + ], + "name": "facetAddress", + "outputs": [ + { + "internalType": "address", + "name": "facetAddress_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facetAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "facetAddresses_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_facet", + "type": "address" + } + ], + "name": "facetFunctionSelectors", + "outputs": [ + { + "internalType": "bytes4[]", + "name": "facetFunctionSelectors_", + "type": "bytes4[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facets", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct IDiamondLoupe.Facet[]", + "name": "facets_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0x3219d8505141bc4c8344d657ab9870d65c33226bf88691c0a571273fde56c64e", + "receipt": { + "to": "0x6DF2D25d8C6FD680730ee658b530A05a99BB769a", + "from": "0x717634cfe06FFAB2CEAA7fcf1b9019813f4B25FE", + "contractAddress": null, + "transactionIndex": 8, + "gasUsed": "5298843", + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000100000000008000000000000000000000000000000000000000000000000040000000800001000001000000000900000000004000000000020000004000000000000800000000000000000080000000000000402020000000000000000000000000000000000000000080000000000000000000200000000000000000000000000000000000000000000000000001000000004000000000000000000001000000000000000000000000000000100040000020000000000000000000000400000000000000000000000000000000000000100000", + "blockHash": "0x9902ced065c1b85531b093824effcc336f95c1a594fc98b52f0e5829822a02de", + "transactionHash": "0x3219d8505141bc4c8344d657ab9870d65c33226bf88691c0a571273fde56c64e", + "logs": [ + { + "transactionIndex": 8, + "blockNumber": 46175791, + "transactionHash": "0x3219d8505141bc4c8344d657ab9870d65c33226bf88691c0a571273fde56c64e", + "address": "0x2a5D24a501388CF8d9805C4d8D8c1d341C6b1784", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000717634cfe06ffab2ceaa7fcf1b9019813f4b25fe" + ], + "data": "0x", + "logIndex": 30, + "blockHash": "0x9902ced065c1b85531b093824effcc336f95c1a594fc98b52f0e5829822a02de" + }, + { + "transactionIndex": 8, + "blockNumber": 46175791, + "transactionHash": "0x3219d8505141bc4c8344d657ab9870d65c33226bf88691c0a571273fde56c64e", + "address": "0x2a5D24a501388CF8d9805C4d8D8c1d341C6b1784", + "topics": [ + "0x8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001220000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004e0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000009c00000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000ce00000000000000000000000000000000000000000000000000000000000000de00000000000000000000000000000000000000000000000000000000000000f200000000000000000000000000000000000000000000000000000000000000fc000000000000000000000000000000000000000000000000000000000000010800000000000000000000000006c5742bfa6c3ac6c149466579123cb04d8db4a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000929e7ef2d00000000000000000000000000000000000000000000000000000000ddb2d22b0000000000000000000000000000000000000000000000000000000011e5493300000000000000000000000000000000000000000000000000000000a63234e000000000000000000000000000000000000000000000000000000000daa17f4900000000000000000000000000000000000000000000000000000000c97b973000000000000000000000000000000000000000000000000000000000d65cd010000000000000000000000000000000000000000000000000000000008762d38e00000000000000000000000000000000000000000000000000000000034cd72500000000000000000000000000000000000000000000000000000000000000000000000000000000de7c5f5377a5c5e521e530bbac55a59ab8cd337000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b3c4a25d000000000000000000000000000000000000000000000000000000000ca6d56dc000000000000000000000000000000000000000000000000000000009fef0c0100000000000000000000000000000000000000000000000000000000e8c9fd4500000000000000000000000000000000000000000000000000000000e43581b800000000000000000000000000000000000000000000000000000000a230c5240000000000000000000000000000000000000000000000000000000011aee380000000000000000000000000000000000000000000000000000000005a4c75d500000000000000000000000000000000000000000000000000000000c6549ba400000000000000000000000000000000000000000000000000000000eecdac88000000000000000000000000000000000000000000000000000000000b1ca49a00000000000000000000000000000000000000000000000000000000000000000000000000000000305c0e7e3bdd77db1b7d9adf3c8144644948d459000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000007617b0b9d00000000000000000000000000000000000000000000000000000000ccf90c7400000000000000000000000000000000000000000000000000000000b87c747500000000000000000000000000000000000000000000000000000000b70cc72a0000000000000000000000000000000000000000000000000000000076a7383d00000000000000000000000000000000000000000000000000000000911a56cc000000000000000000000000000000000000000000000000000000003e39e4cf00000000000000000000000000000000000000000000000000000000000000000000000000000000eb0e5abfe38e825264be2abeec5d6148dd563439000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000018dd62ed3e00000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000070a08231000000000000000000000000000000000000000000000000000000005d7b590f000000000000000000000000000000000000000000000000000000007641e6f300000000000000000000000000000000000000000000000000000000313ce56700000000000000000000000000000000000000000000000000000000fbabdb060000000000000000000000000000000000000000000000000000000006675ba7000000000000000000000000000000000000000000000000000000008188f71c0000000000000000000000000000000000000000000000000000000077097fc80000000000000000000000000000000000000000000000000000000006fdde03000000000000000000000000000000000000000000000000000000001fe02e53000000000000000000000000000000000000000000000000000000009c999d90000000000000000000000000000000000000000000000000000000005480699a000000000000000000000000000000000000000000000000000000006bd7bd250000000000000000000000000000000000000000000000000000000044890ae00000000000000000000000000000000000000000000000000000000081a8f243000000000000000000000000000000000000000000000000000000003a8682240000000000000000000000000000000000000000000000000000000095d89b410000000000000000000000000000000000000000000000000000000018160ddd00000000000000000000000000000000000000000000000000000000a9059cbb0000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000c485bb9600000000000000000000000000000000000000000000000000000000e8edd0e300000000000000000000000000000000000000000000000000000000000000000000000000000000f1094c3cd6659d373366aa0945bad33acb47e87800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000af4c1210c00000000000000000000000000000000000000000000000000000000af2e757b00000000000000000000000000000000000000000000000000000000b74977bb00000000000000000000000000000000000000000000000000000000538be4ac00000000000000000000000000000000000000000000000000000000f4b54f3300000000000000000000000000000000000000000000000000000000f30014d900000000000000000000000000000000000000000000000000000000a2d14f7000000000000000000000000000000000000000000000000000000000663f898e000000000000000000000000000000000000000000000000000000005537a67a00000000000000000000000000000000000000000000000000000000eee2dcc300000000000000000000000000000000000000000000000000000000000000000000000000000000dcf76df2753f17e9a2318d394767ae9b71ede25e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000711eff85b00000000000000000000000000000000000000000000000000000000565974d3000000000000000000000000000000000000000000000000000000004f2274c000000000000000000000000000000000000000000000000000000000f962a52a00000000000000000000000000000000000000000000000000000000a75572fb0000000000000000000000000000000000000000000000000000000098d55d68000000000000000000000000000000000000000000000000000000009f4c440b000000000000000000000000000000000000000000000000000000000000000000000000000000004199cb48c13884431f2e21f294ff6692dfc4dec4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000004bd470cf900000000000000000000000000000000000000000000000000000000c65c3d9500000000000000000000000000000000000000000000000000000000525d5ebf0000000000000000000000000000000000000000000000000000000008ff3efd000000000000000000000000000000000000000000000000000000000000000000000000000000005ed51129a8e0504d40039e622a223a27271922fd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000066551544a00000000000000000000000000000000000000000000000000000000fb29eac800000000000000000000000000000000000000000000000000000000e26ceccf000000000000000000000000000000000000000000000000000000000d981625000000000000000000000000000000000000000000000000000000006951c9f400000000000000000000000000000000000000000000000000000000befb4fbc00000000000000000000000000000000000000000000000000000000000000000000000000000000b9f06ee587b27aa54a56cae506fee069e0cbdfae0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c0000000000000000000000000000000000000000000000000000000000000000000000000000000006c4a2f994d4f40b9aeaa9f3d725ab6953068f8d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b0000000000000000000000000000000000000000000000000000000000000000000000000000000079d01a15f4552b2992ac337356023388e823175e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "logIndex": 31, + "blockHash": "0x9902ced065c1b85531b093824effcc336f95c1a594fc98b52f0e5829822a02de" + }, + { + "transactionIndex": 8, + "blockNumber": 46175791, + "transactionHash": "0x3219d8505141bc4c8344d657ab9870d65c33226bf88691c0a571273fde56c64e", + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000717634cfe06ffab2ceaa7fcf1b9019813f4b25fe", + "0x000000000000000000000000be188d6641e8b680743a4815dfa0f6208038960f" + ], + "data": "0x000000000000000000000000000000000000000000000000001c3ce78a1a7500000000000000000000000000000000000000000000000000106d988d0af8cd13000000000000000000000000000000000000000000003668e460e34f7c727fdf00000000000000000000000000000000000000000000000010515ba580de5813000000000000000000000000000000000000000000003668e47d2037068cf4df", + "logIndex": 32, + "blockHash": "0x9902ced065c1b85531b093824effcc336f95c1a594fc98b52f0e5829822a02de" + } + ], + "blockNumber": 46175791, + "cumulativeGasUsed": "6159450", + "status": 1, + "byzantium": true + }, + "args": [ + "0x717634cfe06FFAB2CEAA7fcf1b9019813f4B25FE", + [ + { + "facetAddress": "0x6C5742bfa6C3AC6C149466579123cB04D8Db4a01", + "functionSelectors": [ + "0x29e7ef2d", + "0xddb2d22b", + "0x11e54933", + "0xa63234e0", + "0xdaa17f49", + "0xc97b9730", + "0xd65cd010", + "0x8762d38e", + "0x034cd725" + ], + "action": 0 + }, + { + "facetAddress": "0xDe7C5f5377A5C5E521e530bbac55a59AB8cd3370", + "functionSelectors": [ + "0x3c4a25d0", + "0xca6d56dc", + "0x9fef0c01", + "0xe8c9fd45", + "0xe43581b8", + "0xa230c524", + "0x11aee380", + "0x5a4c75d5", + "0xc6549ba4", + "0xeecdac88", + "0x0b1ca49a" + ], + "action": 0 + }, + { + "facetAddress": "0x305C0e7E3BDD77Db1B7d9AdF3C8144644948D459", + "functionSelectors": [ + "0x617b0b9d", + "0xccf90c74", + "0xb87c7475", + "0xb70cc72a", + "0x76a7383d", + "0x911a56cc", + "0x3e39e4cf" + ], + "action": 0 + }, + { + "facetAddress": "0xeB0e5aBfe38e825264be2ABeeC5D6148DD563439", + "functionSelectors": [ + "0xdd62ed3e", + "0x095ea7b3", + "0x70a08231", + "0x5d7b590f", + "0x7641e6f3", + "0x313ce567", + "0xfbabdb06", + "0x06675ba7", + "0x8188f71c", + "0x77097fc8", + "0x06fdde03", + "0x1fe02e53", + "0x9c999d90", + "0x5480699a", + "0x6bd7bd25", + "0x44890ae0", + "0x81a8f243", + "0x3a868224", + "0x95d89b41", + "0x18160ddd", + "0xa9059cbb", + "0x23b872dd", + "0xc485bb96", + "0xe8edd0e3" + ], + "action": 0 + }, + { + "facetAddress": "0xf1094c3CD6659d373366AA0945bAd33ACb47e878", + "functionSelectors": [ + "0xf4c1210c", + "0xaf2e757b", + "0xb74977bb", + "0x538be4ac", + "0xf4b54f33", + "0xf30014d9", + "0xa2d14f70", + "0x663f898e", + "0x5537a67a", + "0xeee2dcc3" + ], + "action": 0 + }, + { + "facetAddress": "0xdcF76dF2753f17E9a2318D394767Ae9B71ede25E", + "functionSelectors": [ + "0x11eff85b", + "0x565974d3", + "0x4f2274c0", + "0xf962a52a", + "0xa75572fb", + "0x98d55d68", + "0x9f4c440b" + ], + "action": 0 + }, + { + "facetAddress": "0x4199cb48c13884431f2e21f294ff6692Dfc4DEc4", + "functionSelectors": [ + "0xbd470cf9", + "0xc65c3d95", + "0x525d5ebf", + "0x08ff3efd" + ], + "action": 0 + }, + { + "facetAddress": "0x5eD51129A8E0504d40039e622a223A27271922Fd", + "functionSelectors": [ + "0x6551544a", + "0xfb29eac8", + "0xe26ceccf", + "0x0d981625", + "0x6951c9f4", + "0xbefb4fbc" + ], + "action": 0 + }, + { + "facetAddress": "0xb9F06Ee587B27aa54a56CAE506fee069E0cbdfAE", + "functionSelectors": [ + "0x1f931c1c" + ], + "action": 0 + }, + { + "facetAddress": "0x06C4a2f994D4f40b9aEaa9F3D725aB6953068F8D", + "functionSelectors": [ + "0x8da5cb5b", + "0xf2fde38b" + ], + "action": 0 + }, + { + "facetAddress": "0x79D01A15F4552b2992aC337356023388e823175E", + "functionSelectors": [ + "0xcdffacc6", + "0x52ef6b2c", + "0xadfca15e", + "0x7a0ed627", + "0x01ffc9a7" + ], + "action": 0 + } + ], + [ + { + "initContract": "0x7D381445C00af2cEEF45Ed46859439d58c73ac61", + "initData": "0x2a84809100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000148e2b093000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "initContract": "0x59788D17fc4532D0f5E1b14979AE881CaBD3af73", + "initData": "0x3cf22baa00000000000000000000000000000000000000000000000000000000000000200000000000000000000000002f03add7aaba219405ea7dc94e4345d99d469fba0000000000000000000000001b0c84a86cc6730b583166c93e410ddd4f8763280000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000000000000a477265656e20476f6c64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003474c440000000000000000000000000000000000000000000000000000000000" + } + ] + ], + "numDeployments": 1, + "solcInputHash": "3fe12e823553336a8d0f950a5a792ac9", + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractOwner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum IDiamondCut.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct IDiamondCut.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"initContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"internalType\":\"struct Diamond.Initialization[]\",\"name\":\"_initializations\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_contractOwner\":\"the owner of the contract. With default DiamondCutFacet, this is the sole address allowed to make further cuts.\",\"_diamondCut\":\"the list of facet to add\",\"_initializations\":\"the list of initialization pair to execute. This allow to setup a contract with multiple level of independent initialization.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"This construct a diamond contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solc_0.8/diamond/Diamond.sol\":\"Diamond\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solc_0.8/diamond/Diamond.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/******************************************************************************\\\\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\\n*\\n* Implementation of a diamond.\\n/******************************************************************************/\\n\\nimport {LibDiamond} from \\\"./libraries/LibDiamond.sol\\\";\\nimport {IDiamondCut} from \\\"./interfaces/IDiamondCut.sol\\\";\\n\\ncontract Diamond {\\n struct Initialization {\\n address initContract;\\n bytes initData;\\n }\\n\\n /// @notice This construct a diamond contract\\n /// @param _contractOwner the owner of the contract. With default DiamondCutFacet, this is the sole address allowed to make further cuts.\\n /// @param _diamondCut the list of facet to add\\n /// @param _initializations the list of initialization pair to execute. This allow to setup a contract with multiple level of independent initialization.\\n constructor(\\n address _contractOwner,\\n IDiamondCut.FacetCut[] memory _diamondCut,\\n Initialization[] memory _initializations\\n ) payable {\\n if (_contractOwner != address(0)) {\\n LibDiamond.setContractOwner(_contractOwner);\\n }\\n\\n LibDiamond.diamondCut(_diamondCut, address(0), \\\"\\\");\\n\\n for (uint256 i = 0; i < _initializations.length; i++) {\\n LibDiamond.initializeDiamondCut(_initializations[i].initContract, _initializations[i].initData);\\n }\\n }\\n\\n // Find facet for function that is called and execute the\\n // function if a facet is found and return any value.\\n fallback() external payable {\\n LibDiamond.DiamondStorage storage ds;\\n bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;\\n // get diamond storage\\n assembly {\\n ds.slot := position\\n }\\n // get facet from function selector\\n address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;\\n require(facet != address(0), \\\"Diamond: Function does not exist\\\");\\n // Execute external function from facet using delegatecall and return any value.\\n assembly {\\n // copy function selector and any arguments\\n calldatacopy(0, 0, calldatasize())\\n // execute function call using the facet\\n let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)\\n // get any return value\\n returndatacopy(0, 0, returndatasize())\\n // return any return value or error back to the caller\\n switch result\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n receive() external payable {}\\n}\\n\",\"keccak256\":\"0x9f459a9f18d5429b0dd40e60b4a67a27d2b94693c4d190ed9dd7034a894c1eb6\",\"license\":\"MIT\"},\"solc_0.8/diamond/interfaces/IDiamondCut.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/******************************************************************************\\\\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\\n/******************************************************************************/\\n\\ninterface IDiamondCut {\\n enum FacetCutAction {Add, Replace, Remove}\\n // Add=0, Replace=1, Remove=2\\n\\n struct FacetCut {\\n address facetAddress;\\n FacetCutAction action;\\n bytes4[] functionSelectors;\\n }\\n\\n /// @notice Add/replace/remove any number of functions and optionally execute\\n /// a function with delegatecall\\n /// @param _diamondCut Contains the facet addresses and function selectors\\n /// @param _init The address of the contract or facet to execute _calldata\\n /// @param _calldata A function call, including function selector and arguments\\n /// _calldata is executed with delegatecall on _init\\n function diamondCut(\\n FacetCut[] calldata _diamondCut,\\n address _init,\\n bytes calldata _calldata\\n ) external;\\n\\n event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);\\n}\\n\",\"keccak256\":\"0xc00c16bfa30a3fa5f3dc684f7f8ba62c259962b25f647d9588739458989717fc\",\"license\":\"MIT\"},\"solc_0.8/diamond/libraries/LibDiamond.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/******************************************************************************\\\\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\\n/******************************************************************************/\\nimport { IDiamondCut } from \\\"../interfaces/IDiamondCut.sol\\\";\\n\\nlibrary LibDiamond {\\n bytes32 constant DIAMOND_STORAGE_POSITION = keccak256(\\\"diamond.standard.diamond.storage\\\");\\n\\n struct FacetAddressAndPosition {\\n address facetAddress;\\n uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array\\n }\\n\\n struct FacetFunctionSelectors {\\n bytes4[] functionSelectors;\\n uint256 facetAddressPosition; // position of facetAddress in facetAddresses array\\n }\\n\\n struct DiamondStorage {\\n // maps function selector to the facet address and\\n // the position of the selector in the facetFunctionSelectors.selectors array\\n mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;\\n // maps facet addresses to function selectors\\n mapping(address => FacetFunctionSelectors) facetFunctionSelectors;\\n // facet addresses\\n address[] facetAddresses;\\n // Used to query if a contract implements an interface.\\n // Used to implement ERC-165.\\n mapping(bytes4 => bool) supportedInterfaces;\\n // owner of the contract\\n address contractOwner;\\n }\\n\\n function diamondStorage() internal pure returns (DiamondStorage storage ds) {\\n bytes32 position = DIAMOND_STORAGE_POSITION;\\n assembly {\\n ds.slot := position\\n }\\n }\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n function setContractOwner(address _newOwner) internal {\\n DiamondStorage storage ds = diamondStorage();\\n address previousOwner = ds.contractOwner;\\n ds.contractOwner = _newOwner;\\n emit OwnershipTransferred(previousOwner, _newOwner);\\n }\\n\\n function contractOwner() internal view returns (address contractOwner_) {\\n contractOwner_ = diamondStorage().contractOwner;\\n }\\n\\n function enforceIsContractOwner() internal view {\\n require(msg.sender == diamondStorage().contractOwner, \\\"LibDiamond: Must be contract owner\\\");\\n }\\n\\n event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata);\\n\\n // Internal function version of diamondCut\\n function diamondCut(\\n IDiamondCut.FacetCut[] memory _diamondCut,\\n address _init,\\n bytes memory _calldata\\n ) internal {\\n for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) {\\n IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;\\n if (action == IDiamondCut.FacetCutAction.Add) {\\n addFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\\n } else if (action == IDiamondCut.FacetCutAction.Replace) {\\n replaceFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\\n } else if (action == IDiamondCut.FacetCutAction.Remove) {\\n removeFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\\n } else {\\n revert(\\\"LibDiamondCut: Incorrect FacetCutAction\\\");\\n }\\n }\\n emit DiamondCut(_diamondCut, _init, _calldata);\\n initializeDiamondCut(_init, _calldata);\\n }\\n\\n function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\\n require(_functionSelectors.length > 0, \\\"LibDiamondCut: No selectors in facet to cut\\\");\\n DiamondStorage storage ds = diamondStorage(); \\n require(_facetAddress != address(0), \\\"LibDiamondCut: Add facet can't be address(0)\\\");\\n uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);\\n // add new facet address if it does not exist\\n if (selectorPosition == 0) {\\n addFacet(ds, _facetAddress); \\n }\\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\\n bytes4 selector = _functionSelectors[selectorIndex];\\n address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;\\n require(oldFacetAddress == address(0), \\\"LibDiamondCut: Can't add function that already exists\\\");\\n addFunction(ds, selector, selectorPosition, _facetAddress);\\n selectorPosition++;\\n }\\n }\\n\\n function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\\n require(_functionSelectors.length > 0, \\\"LibDiamondCut: No selectors in facet to cut\\\");\\n DiamondStorage storage ds = diamondStorage();\\n require(_facetAddress != address(0), \\\"LibDiamondCut: Add facet can't be address(0)\\\");\\n uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);\\n // add new facet address if it does not exist\\n if (selectorPosition == 0) {\\n addFacet(ds, _facetAddress);\\n }\\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\\n bytes4 selector = _functionSelectors[selectorIndex];\\n address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;\\n require(oldFacetAddress != _facetAddress, \\\"LibDiamondCut: Can't replace function with same function\\\");\\n removeFunction(ds, oldFacetAddress, selector);\\n addFunction(ds, selector, selectorPosition, _facetAddress);\\n selectorPosition++;\\n }\\n }\\n\\n function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\\n require(_functionSelectors.length > 0, \\\"LibDiamondCut: No selectors in facet to cut\\\");\\n DiamondStorage storage ds = diamondStorage();\\n // if function does not exist then do nothing and return\\n require(_facetAddress == address(0), \\\"LibDiamondCut: Remove facet address must be address(0)\\\");\\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\\n bytes4 selector = _functionSelectors[selectorIndex];\\n address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;\\n removeFunction(ds, oldFacetAddress, selector);\\n }\\n }\\n\\n function addFacet(DiamondStorage storage ds, address _facetAddress) internal {\\n enforceHasContractCode(_facetAddress, \\\"LibDiamondCut: New facet has no code\\\");\\n ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = ds.facetAddresses.length;\\n ds.facetAddresses.push(_facetAddress);\\n } \\n\\n\\n function addFunction(DiamondStorage storage ds, bytes4 _selector, uint96 _selectorPosition, address _facetAddress) internal {\\n ds.selectorToFacetAndPosition[_selector].functionSelectorPosition = _selectorPosition;\\n ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(_selector);\\n ds.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress;\\n }\\n\\n function removeFunction(DiamondStorage storage ds, address _facetAddress, bytes4 _selector) internal { \\n require(_facetAddress != address(0), \\\"LibDiamondCut: Can't remove function that doesn't exist\\\");\\n // an immutable function is a function defined directly in a diamond\\n require(_facetAddress != address(this), \\\"LibDiamondCut: Can't remove immutable function\\\");\\n // replace selector with last selector, then delete last selector\\n uint256 selectorPosition = ds.selectorToFacetAndPosition[_selector].functionSelectorPosition;\\n uint256 lastSelectorPosition = ds.facetFunctionSelectors[_facetAddress].functionSelectors.length - 1;\\n // if not the same then replace _selector with lastSelector\\n if (selectorPosition != lastSelectorPosition) {\\n bytes4 lastSelector = ds.facetFunctionSelectors[_facetAddress].functionSelectors[lastSelectorPosition];\\n ds.facetFunctionSelectors[_facetAddress].functionSelectors[selectorPosition] = lastSelector;\\n ds.selectorToFacetAndPosition[lastSelector].functionSelectorPosition = uint96(selectorPosition);\\n }\\n // delete the last selector\\n ds.facetFunctionSelectors[_facetAddress].functionSelectors.pop();\\n delete ds.selectorToFacetAndPosition[_selector];\\n\\n // if no more selectors for facet address then delete the facet address\\n if (lastSelectorPosition == 0) {\\n // replace facet address with last facet address and delete last facet address\\n uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1;\\n uint256 facetAddressPosition = ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;\\n if (facetAddressPosition != lastFacetAddressPosition) {\\n address lastFacetAddress = ds.facetAddresses[lastFacetAddressPosition];\\n ds.facetAddresses[facetAddressPosition] = lastFacetAddress;\\n ds.facetFunctionSelectors[lastFacetAddress].facetAddressPosition = facetAddressPosition;\\n }\\n ds.facetAddresses.pop();\\n delete ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;\\n }\\n }\\n\\n function initializeDiamondCut(address _init, bytes memory _calldata) internal {\\n if (_init == address(0)) {\\n require(_calldata.length == 0, \\\"LibDiamondCut: _init is address(0) but_calldata is not empty\\\");\\n } else {\\n require(_calldata.length > 0, \\\"LibDiamondCut: _calldata is empty but _init is not address(0)\\\");\\n if (_init != address(this)) {\\n enforceHasContractCode(_init, \\\"LibDiamondCut: _init address has no code\\\");\\n }\\n (bool success, bytes memory error) = _init.delegatecall(_calldata);\\n if (!success) {\\n if (error.length > 0) {\\n // bubble up the error\\n revert(string(error));\\n } else {\\n revert(\\\"LibDiamondCut: _init function reverted\\\");\\n }\\n }\\n }\\n }\\n\\n function enforceHasContractCode(address _contract, string memory _errorMessage) internal view {\\n uint256 contractSize;\\n assembly {\\n contractSize := extcodesize(_contract)\\n }\\n require(contractSize > 0, _errorMessage);\\n }\\n}\\n\",\"keccak256\":\"0x2205345e83eb86f5281f159a9215a096cb6d404782619f9b8e9d7a4a46c32a37\",\"license\":\"MIT\"}},\"version\":1}", + "bytecode": "0x60806040526040516200321e3803806200321e833981016040819052620000269162001340565b6001600160a01b038316156200004c576200004c83620000f760201b620001071760201c565b62000074826000604051806020016040528060008152506200017b60201b620001c11760201c565b60005b8151811015620000ed57620000d88282815181106200009a576200009a62001514565b602002602001015160000151838381518110620000bb57620000bb62001514565b602002602001015160200151620003d960201b620004051760201c565b80620000e48162001540565b91505062000077565b505050506200173d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080546001600160a01b031981166001600160a01b0384811691821790935560405160008051602062003172833981519152939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156200038a5760008482815181106200019f576200019f62001514565b602002602001015160200151905060006002811115620001c357620001c36200155e565b816002811115620001d857620001d86200155e565b1415620002375762000231858381518110620001f857620001f862001514565b60200260200101516000015186848151811062000219576200021962001514565b602002602001015160400151620005fe60201b60201c565b62000374565b60018160028111156200024e576200024e6200155e565b1415620002a757620002318583815181106200026e576200026e62001514565b6020026020010151600001518684815181106200028f576200028f62001514565b6020026020010151604001516200088860201b60201c565b6002816002811115620002be57620002be6200155e565b1415620003175762000231858381518110620002de57620002de62001514565b602002602001015160000151868481518110620002ff57620002ff62001514565b60200260200101516040015162000b1e60201b60201c565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b60648201526084015b60405180910390fd5b5080620003818162001540565b9150506200017e565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051620003c093929190620015a2565b60405180910390a1620003d48282620003d9565b505050565b6001600160a01b03821662000463578051156200045f5760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016200036b565b5050565b6000815111620004dc5760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016200036b565b6001600160a01b038216301462000512576200051282604051806060016040528060288152602001620031926028913962000c7e565b600080836001600160a01b0316836040516200052f9190620016a9565b600060405180830381855af49150503d80600081146200056c576040519150601f19603f3d011682016040523d82523d6000602084013e62000571565b606091505b509150915081620005f857805115620005a0578060405162461bcd60e51b81526004016200036b9190620016c7565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b60648201526084016200036b565b50505050565b6000815111620006545760405162461bcd60e51b815260206004820152602b6024820152600080516020620031fe83398151915260448201526a1858d95d081d1bc818dd5d60aa1b60648201526084016200036b565b600080516020620031728339815191526001600160a01b038316620006c05760405162461bcd60e51b815260206004820152602c6024820152600080516020620031ba83398151915260448201526b65206164647265737328302960a01b60648201526084016200036b565b6001600160a01b03831660009081526001820160205260409020546001600160601b038116620006f657620006f6828562000ca2565b60005b8351811015620008815760008482815181106200071a576200071a62001514565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620007c25760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c726561647920657869737473000000000000000000000060648201526084016200036b565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836200086681620016e3565b94505050508080620008789062001540565b915050620006f9565b5050505050565b6000815111620008de5760405162461bcd60e51b815260206004820152602b6024820152600080516020620031fe83398151915260448201526a1858d95d081d1bc818dd5d60aa1b60648201526084016200036b565b600080516020620031728339815191526001600160a01b0383166200094a5760405162461bcd60e51b815260206004820152602c6024820152600080516020620031ba83398151915260448201526b65206164647265737328302960a01b60648201526084016200036b565b6001600160a01b03831660009081526001820160205260409020546001600160601b038116620009805762000980828562000ca2565b60005b835181101562000881576000848281518110620009a457620009a462001514565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0390811690871681141562000a525760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016200036b565b62000a5f85828462000d0f565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558362000b0381620016e3565b9450505050808062000b159062001540565b91505062000983565b600081511162000b745760405162461bcd60e51b815260206004820152602b6024820152600080516020620031fe83398151915260448201526a1858d95d081d1bc818dd5d60aa1b60648201526084016200036b565b600080516020620031728339815191526001600160a01b0383161562000c035760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d75737420626520616464726573732830290000000000000000000060648201526084016200036b565b60005b8251811015620005f857600083828151811062000c275762000c2762001514565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031662000c6684828462000d0f565b5050808062000c759062001540565b91505062000c06565b813b8181620005f85760405162461bcd60e51b81526004016200036b9190620016c7565b62000cc781604051806060016040528060248152602001620031da6024913962000c7e565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160a01b03821662000d8d5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016200036b565b6001600160a01b03821630141562000dff5760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b60648201526084016200036b565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b0316929162000e50916200170d565b905080821462000f49576001600160a01b0384166000908152600186016020526040812080548390811062000e895762000e8962001514565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811062000edd5762000edd62001514565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384166000908152600186016020526040902080548062000f755762000f7562001727565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319851682528690526040812055806200088157600285015460009062000fd7906001906200170d565b6001600160a01b03861660009081526001808901602052604090912001549091508082146200108d5760008760020183815481106200101a576200101a62001514565b6000918252602090912001546002890180546001600160a01b0390921692508291849081106200104e576200104e62001514565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480620010a357620010a362001727565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b80516001600160a01b03811681146200110457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171562001144576200114462001109565b60405290565b604051606081016001600160401b038111828210171562001144576200114462001109565b604051601f8201601f191681016001600160401b03811182821017156200119a576200119a62001109565b604052919050565b60006001600160401b03821115620011be57620011be62001109565b5060051b60200190565b60005b83811015620011e5578181015183820152602001620011cb565b83811115620005f85750506000910152565b6000601f83818401126200120a57600080fd5b82516020620012236200121d83620011a2565b6200116f565b82815260059290921b850181019181810190878411156200124357600080fd5b8287015b84811015620013345780516001600160401b0380821115620012695760008081fd5b908901906040601f19838d038101821315620012855760008081fd5b6200128f6200111f565b6200129c898601620010ec565b81528285015184811115620012b15760008081fd5b8086019550508d603f860112620012c85760008081fd5b8885015184811115620012df57620012df62001109565b620012f08a848e840116016200116f565b94508085528e848288010111156200130a57600092508283fd5b6200131b818b8701868901620011c8565b5080890193909352505084525091830191830162001247565b50979650505050505050565b6000806000606084860312156200135657600080fd5b6200136184620010ec565b60208501519093506001600160401b03808211156200137f57600080fd5b818601915086601f8301126200139457600080fd5b8151620013a56200121d82620011a2565b8082825260208201915060208360051b860101925089831115620013c857600080fd5b602085015b83811015620014e057805185811115620013e657600080fd5b86016060818d03601f19011215620013fd57600080fd5b620014076200114a565b6200141560208301620010ec565b81526040820151600381106200142a57600080fd5b60208201526060820151878111156200144257600080fd5b8083019250508c603f8301126200145857600080fd5b60208201516200146c6200121d82620011a2565b81815260059190911b83016040019060208101908f8311156200148e57600080fd5b6040850194505b82851015620014c95784516001600160e01b031981168114620014b757600080fd5b82526020948501949091019062001495565b6040840152505084525060209283019201620013cd565b5060408901519096509350505080821115620014fb57600080fd5b506200150a86828701620011f7565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156200155757620015576200152a565b5060010190565b634e487b7160e01b600052602160045260246000fd5b600081518084526200158e816020860160208601620011c8565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156200167757898403607f19018652815180516001600160a01b031685528381015189860190600381106200161357634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015620016615783516001600160e01b031916825292860192600192909201919086019062001635565b50978501979550505090820190600101620015cb565b50506001600160a01b038a169088015286810360408801526200169b818962001574565b9a9950505050505050505050565b60008251620016bd818460208701620011c8565b9190910192915050565b602081526000620016dc602083018462001574565b9392505050565b60006001600160601b03828116808214156200170357620017036200152a565b6001019392505050565b6000828210156200172257620017226200152a565b500390565b634e487b7160e01b600052603160045260246000fd5b611a25806200174d6000396000f3fe60806040523661000b57005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020819052604090912054819073ffffffffffffffffffffffffffffffffffffffff16806100e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610102573d6000f35b3d6000fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156103ba5760008482815181106101e1576101e1611657565b60200260200101516020015190506000600281111561020257610202611686565b81600281111561021457610214611686565b14156102635761025e85838151811061022f5761022f611657565b60200260200101516000015186848151811061024d5761024d611657565b6020026020010151604001516106be565b6103a7565b600181600281111561027757610277611686565b14156102c15761025e85838151811061029257610292611657565b6020026020010151600001518684815181106102b0576102b0611657565b602002602001015160400151610a71565b60028160028111156102d5576102d5611686565b141561031f5761025e8583815181106102f0576102f0611657565b60200260200101516000015186848151811061030e5761030e611657565b602002602001015160400151610e2e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e0000000000000000000000000000000000000000000000000060648201526084016100da565b50806103b2816116e4565b9150506101c4565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516103ee93929190611793565b60405180910390a16104008282610405565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166104b3578051156104af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100da565b5050565b6000815111610544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff8216301461058357610583826040518060600160405280602881526020016119a46028913961101b565b6000808373ffffffffffffffffffffffffffffffffffffffff16836040516105ab91906118fb565b600060405180830381855af49150503d80600081146105e6576040519150601f19603f3d011682016040523d82523d6000602084013e6105eb565b606091505b5091509150816106b85780511561063057806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100da565b50505050565b600081511161074f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610858576108588285611056565b60005b8351811015610a6a57600084828151811061087857610878611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16801561095d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c726561647920657869737473000000000000000000000060648201526084016100da565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610a5281611931565b94505050508080610a62906116e4565b91505061085b565b5050505050565b6000815111610b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610c0b57610c0b8285611056565b60005b8351811015610a6a576000848281518110610c2b57610c2b611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff908116908716811415610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016100da565b610d218582846110e5565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610e1681611931565b94505050508080610e26906116e4565b915050610c0e565b6000815111610ebf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff831615610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d75737420626520616464726573732830290000000000000000000060648201526084016100da565b60005b82518110156106b8576000838281518110610fa457610fa4611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529185905260409091205490915073ffffffffffffffffffffffffffffffffffffffff166110068482846110e5565b50508080611013906116e4565b915050610f87565b813b81816106b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b611078816040518060600160405280602481526020016119cc6024913961101b565b60028201805473ffffffffffffffffffffffffffffffffffffffff90921660008181526001948501602090815260408220860185905594840183559182529290200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff821630141561122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201527f7461626c652066756e6374696f6e00000000000000000000000000000000000060648201526084016100da565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152602084815260408083205473ffffffffffffffffffffffffffffffffffffffff86168452600180880190935290832054740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff1692916112b89161195d565b90508082146113ff5773ffffffffffffffffffffffffffffffffffffffff8416600090815260018601602052604081208054839081106112fa576112fa611657565b6000918252602080832060088304015473ffffffffffffffffffffffffffffffffffffffff8916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811061135857611358611657565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790557fffffffff0000000000000000000000000000000000000000000000000000000092909216825286905260409020805473ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006bffffffffffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff84166000908152600186016020526040902080548061143557611435611974565b6000828152602080822060087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193840401805463ffffffff600460078716026101000a0219169055919092557fffffffff0000000000000000000000000000000000000000000000000000000085168252869052604081205580610a6a5760028501546000906114ca9060019061195d565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001808901602052604090912001549091508082146115b857600087600201838154811061151657611516611657565b60009182526020909120015460028901805473ffffffffffffffffffffffffffffffffffffffff909216925082918490811061155457611554611657565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152600189810190925260409020018190555b866002018054806115cb576115cb611974565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff88168252600189810190915260408220015550505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611716576117166116b5565b5060010190565b60005b83811015611738578181015183820152602001611720565b838111156106b85750506000910152565b6000815180845261176181602086016020860161171d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156118be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8503018652815188850173ffffffffffffffffffffffffffffffffffffffff82511686528482015160038110611845577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156118a95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928601926001929092019190860190611867565b509785019795505050908201906001016117bc565b505073ffffffffffffffffffffffffffffffffffffffff8a169088015286810360408801526118ed8189611749565b9a9950505050505050505050565b6000825161190d81846020870161171d565b9190910192915050565b60208152600061192a6020830184611749565b9392505050565b60006bffffffffffffffffffffffff80831681811415611953576119536116b5565b6001019392505050565b60008282101561196f5761196f6116b5565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212202b18a533b03703e1326000cf2f36b1c6ec631cff163a752d939e5ee79ad2cde364736f6c634300080a0033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204164642066616365742063616e277420624c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f64654c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e2066", + "deployedBytecode": "0x60806040523661000b57005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020819052604090912054819073ffffffffffffffffffffffffffffffffffffffff16806100e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610102573d6000f35b3d6000fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156103ba5760008482815181106101e1576101e1611657565b60200260200101516020015190506000600281111561020257610202611686565b81600281111561021457610214611686565b14156102635761025e85838151811061022f5761022f611657565b60200260200101516000015186848151811061024d5761024d611657565b6020026020010151604001516106be565b6103a7565b600181600281111561027757610277611686565b14156102c15761025e85838151811061029257610292611657565b6020026020010151600001518684815181106102b0576102b0611657565b602002602001015160400151610a71565b60028160028111156102d5576102d5611686565b141561031f5761025e8583815181106102f0576102f0611657565b60200260200101516000015186848151811061030e5761030e611657565b602002602001015160400151610e2e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e0000000000000000000000000000000000000000000000000060648201526084016100da565b50806103b2816116e4565b9150506101c4565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516103ee93929190611793565b60405180910390a16104008282610405565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166104b3578051156104af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100da565b5050565b6000815111610544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff8216301461058357610583826040518060600160405280602881526020016119a46028913961101b565b6000808373ffffffffffffffffffffffffffffffffffffffff16836040516105ab91906118fb565b600060405180830381855af49150503d80600081146105e6576040519150601f19603f3d011682016040523d82523d6000602084013e6105eb565b606091505b5091509150816106b85780511561063057806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100da565b50505050565b600081511161074f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610858576108588285611056565b60005b8351811015610a6a57600084828151811061087857610878611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16801561095d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c726561647920657869737473000000000000000000000060648201526084016100da565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610a5281611931565b94505050508080610a62906116e4565b91505061085b565b5050505050565b6000815111610b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610c0b57610c0b8285611056565b60005b8351811015610a6a576000848281518110610c2b57610c2b611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff908116908716811415610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016100da565b610d218582846110e5565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610e1681611931565b94505050508080610e26906116e4565b915050610c0e565b6000815111610ebf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff831615610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d75737420626520616464726573732830290000000000000000000060648201526084016100da565b60005b82518110156106b8576000838281518110610fa457610fa4611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529185905260409091205490915073ffffffffffffffffffffffffffffffffffffffff166110068482846110e5565b50508080611013906116e4565b915050610f87565b813b81816106b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b611078816040518060600160405280602481526020016119cc6024913961101b565b60028201805473ffffffffffffffffffffffffffffffffffffffff90921660008181526001948501602090815260408220860185905594840183559182529290200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff821630141561122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201527f7461626c652066756e6374696f6e00000000000000000000000000000000000060648201526084016100da565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152602084815260408083205473ffffffffffffffffffffffffffffffffffffffff86168452600180880190935290832054740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff1692916112b89161195d565b90508082146113ff5773ffffffffffffffffffffffffffffffffffffffff8416600090815260018601602052604081208054839081106112fa576112fa611657565b6000918252602080832060088304015473ffffffffffffffffffffffffffffffffffffffff8916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811061135857611358611657565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790557fffffffff0000000000000000000000000000000000000000000000000000000092909216825286905260409020805473ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006bffffffffffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff84166000908152600186016020526040902080548061143557611435611974565b6000828152602080822060087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193840401805463ffffffff600460078716026101000a0219169055919092557fffffffff0000000000000000000000000000000000000000000000000000000085168252869052604081205580610a6a5760028501546000906114ca9060019061195d565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001808901602052604090912001549091508082146115b857600087600201838154811061151657611516611657565b60009182526020909120015460028901805473ffffffffffffffffffffffffffffffffffffffff909216925082918490811061155457611554611657565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152600189810190925260409020018190555b866002018054806115cb576115cb611974565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff88168252600189810190915260408220015550505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611716576117166116b5565b5060010190565b60005b83811015611738578181015183820152602001611720565b838111156106b85750506000910152565b6000815180845261176181602086016020860161171d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156118be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8503018652815188850173ffffffffffffffffffffffffffffffffffffffff82511686528482015160038110611845577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156118a95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928601926001929092019190860190611867565b509785019795505050908201906001016117bc565b505073ffffffffffffffffffffffffffffffffffffffff8a169088015286810360408801526118ed8189611749565b9a9950505050505050505050565b6000825161190d81846020870161171d565b9190910192915050565b60208152600061192a6020830184611749565b9392505050565b60006bffffffffffffffffffffffff80831681811415611953576119536116b5565b6001019392505050565b60008282101561196f5761196f6116b5565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212202b18a533b03703e1326000cf2f36b1c6ec631cff163a752d939e5ee79ad2cde364736f6c634300080a0033", + "facets": [ + { + "facetAddress": "0x6C5742bfa6C3AC6C149466579123cB04D8Db4a01", + "functionSelectors": [ + "0x29e7ef2d", + "0xddb2d22b", + "0x11e54933", + "0xa63234e0", + "0xdaa17f49", + "0xc97b9730", + "0xd65cd010", + "0x8762d38e", + "0x034cd725" + ] + }, + { + "facetAddress": "0xDe7C5f5377A5C5E521e530bbac55a59AB8cd3370", + "functionSelectors": [ + "0x3c4a25d0", + "0xca6d56dc", + "0x9fef0c01", + "0xe8c9fd45", + "0xe43581b8", + "0xa230c524", + "0x11aee380", + "0x5a4c75d5", + "0xc6549ba4", + "0xeecdac88", + "0x0b1ca49a" + ] + }, + { + "facetAddress": "0x305C0e7E3BDD77Db1B7d9AdF3C8144644948D459", + "functionSelectors": [ + "0x617b0b9d", + "0xccf90c74", + "0xb87c7475", + "0xb70cc72a", + "0x76a7383d", + "0x911a56cc", + "0x3e39e4cf" + ] + }, + { + "facetAddress": "0xeB0e5aBfe38e825264be2ABeeC5D6148DD563439", + "functionSelectors": [ + "0xdd62ed3e", + "0x095ea7b3", + "0x70a08231", + "0x5d7b590f", + "0x7641e6f3", + "0x313ce567", + "0xfbabdb06", + "0x06675ba7", + "0x8188f71c", + "0x77097fc8", + "0x06fdde03", + "0x1fe02e53", + "0x9c999d90", + "0x5480699a", + "0x6bd7bd25", + "0x44890ae0", + "0x81a8f243", + "0x3a868224", + "0x95d89b41", + "0x18160ddd", + "0xa9059cbb", + "0x23b872dd", + "0xc485bb96", + "0xe8edd0e3" + ] + }, + { + "facetAddress": "0xf1094c3CD6659d373366AA0945bAd33ACb47e878", + "functionSelectors": [ + "0xf4c1210c", + "0xaf2e757b", + "0xb74977bb", + "0x538be4ac", + "0xf4b54f33", + "0xf30014d9", + "0xa2d14f70", + "0x663f898e", + "0x5537a67a", + "0xeee2dcc3" + ] + }, + { + "facetAddress": "0xdcF76dF2753f17E9a2318D394767Ae9B71ede25E", + "functionSelectors": [ + "0x11eff85b", + "0x565974d3", + "0x4f2274c0", + "0xf962a52a", + "0xa75572fb", + "0x98d55d68", + "0x9f4c440b" + ] + }, + { + "facetAddress": "0x4199cb48c13884431f2e21f294ff6692Dfc4DEc4", + "functionSelectors": [ + "0xbd470cf9", + "0xc65c3d95", + "0x525d5ebf", + "0x08ff3efd" + ] + }, + { + "facetAddress": "0x5eD51129A8E0504d40039e622a223A27271922Fd", + "functionSelectors": [ + "0x6551544a", + "0xfb29eac8", + "0xe26ceccf", + "0x0d981625", + "0x6951c9f4", + "0xbefb4fbc" + ] + }, + { + "facetAddress": "0xb9F06Ee587B27aa54a56CAE506fee069E0cbdfAE", + "functionSelectors": [ + "0x1f931c1c" + ] + }, + { + "facetAddress": "0x06C4a2f994D4f40b9aEaa9F3D725aB6953068F8D", + "functionSelectors": [ + "0x8da5cb5b", + "0xf2fde38b" + ] + }, + { + "facetAddress": "0x79D01A15F4552b2992aC337356023388e823175E", + "functionSelectors": [ + "0xcdffacc6", + "0x52ef6b2c", + "0xadfca15e", + "0x7a0ed627", + "0x01ffc9a7" + ] + } + ], + "execute": { + "contract": "FastInitFacet", + "methodName": "initialize", + "args": [ + { + "issuer": "0x2F03add7AAbA219405ea7Dc94e4345D99D469FbA", + "marketplace": "0x1B0C84a86cC6730B583166C93e410ddd4F876328", + "name": "Green Gold", + "symbol": "GLD", + "decimals": 18, + "hasFixedSupply": false, + "isSemiPublic": true, + "crowdfundsDefaultBasisPointsFee": 200 + } + ] + }, + "devdoc": { + "kind": "dev", + "methods": { + "constructor": { + "params": { + "_contractOwner": "the owner of the contract. With default DiamondCutFacet, this is the sole address allowed to make further cuts.", + "_diamondCut": "the list of facet to add", + "_initializations": "the list of initialization pair to execute. This allow to setup a contract with multiple level of independent initialization." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "constructor": { + "notice": "This construct a diamond contract" + } + }, + "version": 1 + }, + "storageLayout": { + "storage": [], + "types": null + } +} \ No newline at end of file diff --git a/deployments/mumbai/FastGLD_DiamondProxy.json b/deployments/mumbai/FastGLD_DiamondProxy.json new file mode 100644 index 00000000..6e688459 --- /dev/null +++ b/deployments/mumbai/FastGLD_DiamondProxy.json @@ -0,0 +1,3062 @@ +{ + "address": "0x2a5D24a501388CF8d9805C4d8D8c1d341C6b1784", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_contractOwner", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum IDiamondCut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct IDiamondCut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "initContract", + "type": "address" + }, + { + "internalType": "bytes", + "name": "initData", + "type": "bytes" + } + ], + "internalType": "struct Diamond.Initialization[]", + "name": "_initializations", + "type": "tuple[]" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + }, + { + "inputs": [], + "name": "InternalMethod", + "type": "error" + }, + { + "inputs": [], + "name": "RequiresIssuerMemberOrIssuerCaller", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresIssuerMembership", + "type": "error" + }, + { + "inputs": [], + "name": "UnsupportedOperation", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "ref", + "type": "string" + }, + { + "indexed": true, + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "Burnt", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint32", + "name": "basisPointFee", + "type": "uint32" + } + ], + "name": "CrowdfundDefaultBasisPointFeeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Crowdfund", + "name": "crowdfund", + "type": "address" + } + ], + "name": "CrowdfundDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Crowdfund", + "name": "crowdfund", + "type": "address" + } + ], + "name": "CrowdfundRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "transfersDisabled", + "type": "bool" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "crowdfundsDefaultBasisPointsFee", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "memberCount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "governorCount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reserveBalance", + "type": "uint256" + } + ], + "name": "DetailsChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Disapproval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Distribution", + "name": "distribution", + "type": "address" + } + ], + "name": "DistributionDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Distribution", + "name": "distribution", + "type": "address" + } + ], + "name": "DistributionRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "FastTransfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "ref", + "type": "string" + }, + { + "indexed": true, + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "group", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "hasFixedSupply", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isSemiPublic", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "issuerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "marketplaceAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "newGroup", + "type": "string" + } + ], + "name": "setGroup", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "flag", + "type": "bool" + } + ], + "name": "setIsSemiPublic", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "flag", + "type": "bool" + } + ], + "name": "setTransfersDisabled", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "transfersDisabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresGovernorsManager", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresMembersManager", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresValidGovernor", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresValidMember", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "governor", + "type": "address" + } + ], + "name": "GovernorAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "governor", + "type": "address" + } + ], + "name": "GovernorRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "MemberAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "MemberRemoved", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "addGovernor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "addMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "a", + "type": "address" + } + ], + "name": "flags", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + } + ], + "internalType": "struct FastAccessFacet.Flags", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governorCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isGovernor", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "isMember", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "memberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateGovernors", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateMembers", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "governor", + "type": "address" + } + ], + "name": "removeGovernor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "removeMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresAutomatonsManager", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "automaton", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint32", + "name": "privileges", + "type": "uint32" + } + ], + "name": "AutomatonPrivilegesSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "automaton", + "type": "address" + } + ], + "name": "AutomatonRemoved", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "automaton", + "type": "address" + }, + { + "internalType": "uint32", + "name": "privilege", + "type": "uint32" + } + ], + "name": "automatonCan", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "automatonCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "automaton", + "type": "address" + } + ], + "name": "automatonPrivileges", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "candidate", + "type": "address" + } + ], + "name": "isAutomaton", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateAutomatons", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "candidate", + "type": "address" + } + ], + "name": "removeAutomaton", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "candidate", + "type": "address" + }, + { + "internalType": "uint32", + "name": "privileges", + "type": "uint32" + } + ], + "name": "setAutomatonPrivileges", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "RequiresContinuousSupply", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "a", + "type": "address" + } + ], + "name": "RequiresDifferentSenderAndRecipient", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresFastMembership", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresMarketplaceActiveMembership", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "holder", + "type": "address" + } + ], + "name": "RequiresPositiveBalance", + "type": "error" + }, + { + "inputs": [], + "name": "RequiresTransfersEnabled", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresValidTokenHolder", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "beforeRemovingMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "disapprove", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "givenAllowanceCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "holders", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateAllowancesByOwner", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateAllowancesBySpender", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "performApproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "performDisapproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct FastTokenFacet.TransferArgs", + "name": "p", + "type": "tuple" + } + ], + "name": "performTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "receivedAllowanceCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "holder", + "type": "address" + } + ], + "name": "retrieveDeadTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "transferFromWithRef", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "transferWithRef", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "burnt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "minted", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateSupplyProofs", + "outputs": [ + { + "components": [ + { + "internalType": "enum LibFastHistory.SupplyOp", + "name": "op", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct LibFastHistory.SupplyProof[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "involvee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateTransferProofIndicesByInvolvee", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateTransferProofs", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct LibFastHistory.TransferProof[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "involvee", + "type": "address" + }, + { + "internalType": "uint256", + "name": "cursor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateTransferProofsByInvolvee", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct LibFastHistory.TransferProof[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "supplyProofCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "involvee", + "type": "address" + } + ], + "name": "transferProofByInvolveeCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "transferProofCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "transfered", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "detailedPrivileges", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ethBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "automatonPrivileges", + "type": "uint32" + } + ], + "internalType": "struct FastFrontendFacet.PrivilegesDetails", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "details", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isSemiPublic", + "type": "bool" + }, + { + "internalType": "bool", + "name": "hasFixedSupply", + "type": "bool" + }, + { + "internalType": "bool", + "name": "transfersDisabled", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "crowdfundsDefaultBasisPointsFee", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "reserveBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "memberCount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "governorCount", + "type": "uint256" + } + ], + "internalType": "struct FastFrontendFacet.Details", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "emitDetailsChanged", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedCrowdfunds", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint16", + "name": "VERSION", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "issuer", + "type": "address" + }, + { + "internalType": "address", + "name": "fast", + "type": "address" + }, + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "internalType": "uint32", + "name": "basisPointsFee", + "type": "uint32" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct Crowdfund.Params", + "name": "params", + "type": "tuple" + }, + { + "internalType": "enum Crowdfund.Phase", + "name": "phase", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "creationBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "collected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pledgerCount", + "type": "uint256" + } + ], + "internalType": "struct Crowdfund.Details[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedDistributions", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint16", + "name": "VERSION", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "address", + "name": "distributor", + "type": "address" + }, + { + "internalType": "address", + "name": "issuer", + "type": "address" + }, + { + "internalType": "address", + "name": "fast", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "blockLatch", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "total", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "internalType": "struct Distribution.Params", + "name": "params", + "type": "tuple" + }, + { + "internalType": "enum Distribution.Phase", + "name": "phase", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "creationBlock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "available", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "beneficiaryCount", + "type": "uint256" + } + ], + "internalType": "struct Distribution.Details[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedGovernors", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ethBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "automatonPrivileges", + "type": "uint32" + } + ], + "internalType": "struct FastFrontendFacet.PrivilegesDetails[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDetailedMembers", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ethBalance", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isGovernor", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "automatonPrivileges", + "type": "uint32" + } + ], + "internalType": "struct FastFrontendFacet.PrivilegesDetails[]", + "name": "", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "InsufficientFunds", + "type": "error" + }, + { + "inputs": [], + "name": "TokenContractError", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "total", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockLatch", + "type": "uint256" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "createDistribution", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "distributionCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateDistributions", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Distribution", + "name": "distribution", + "type": "address" + } + ], + "name": "removeDistribution", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "fee", + "type": "uint32" + } + ], + "name": "InvalidCrowdfundBasisPointsFee", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "RequiresFastGovernorship", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "uint32", + "name": "privilege", + "type": "uint32" + } + ], + "name": "RequiresPrivilege", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "internalType": "string", + "name": "ref", + "type": "string" + } + ], + "name": "createCrowdfund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "crowdfundCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "crowdfundsDefaultBasisPointFee", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "perPage", + "type": "uint256" + } + ], + "name": "paginateCrowdfunds", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Crowdfund", + "name": "crowdfund", + "type": "address" + } + ], + "name": "removeCrowdfund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "newBasisPointFee", + "type": "uint32" + } + ], + "name": "setCrowdfundsDefaultBasisPointFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum IDiamondCut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "indexed": false, + "internalType": "struct IDiamondCut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "address", + "name": "_init", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "DiamondCut", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum IDiamondCut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct IDiamondCut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "_init", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "diamondCut", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "owner_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_functionSelector", + "type": "bytes4" + } + ], + "name": "facetAddress", + "outputs": [ + { + "internalType": "address", + "name": "facetAddress_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facetAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "facetAddresses_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_facet", + "type": "address" + } + ], + "name": "facetFunctionSelectors", + "outputs": [ + { + "internalType": "bytes4[]", + "name": "facetFunctionSelectors_", + "type": "bytes4[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facets", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct IDiamondLoupe.Facet[]", + "name": "facets_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0x3219d8505141bc4c8344d657ab9870d65c33226bf88691c0a571273fde56c64e", + "receipt": { + "to": "0x6DF2D25d8C6FD680730ee658b530A05a99BB769a", + "from": "0x717634cfe06FFAB2CEAA7fcf1b9019813f4B25FE", + "contractAddress": null, + "transactionIndex": 8, + "gasUsed": "5298843", + "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000100000000008000000000000000000000000000000000000000000000000040000000800001000001000000000900000000004000000000020000004000000000000800000000000000000080000000000000402020000000000000000000000000000000000000000080000000000000000000200000000000000000000000000000000000000000000000000001000000004000000000000000000001000000000000000000000000000000100040000020000000000000000000000400000000000000000000000000000000000000100000", + "blockHash": "0x9902ced065c1b85531b093824effcc336f95c1a594fc98b52f0e5829822a02de", + "transactionHash": "0x3219d8505141bc4c8344d657ab9870d65c33226bf88691c0a571273fde56c64e", + "logs": [ + { + "transactionIndex": 8, + "blockNumber": 46175791, + "transactionHash": "0x3219d8505141bc4c8344d657ab9870d65c33226bf88691c0a571273fde56c64e", + "address": "0x2a5D24a501388CF8d9805C4d8D8c1d341C6b1784", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000717634cfe06ffab2ceaa7fcf1b9019813f4b25fe" + ], + "data": "0x", + "logIndex": 30, + "blockHash": "0x9902ced065c1b85531b093824effcc336f95c1a594fc98b52f0e5829822a02de" + }, + { + "transactionIndex": 8, + "blockNumber": 46175791, + "transactionHash": "0x3219d8505141bc4c8344d657ab9870d65c33226bf88691c0a571273fde56c64e", + "address": "0x2a5D24a501388CF8d9805C4d8D8c1d341C6b1784", + "topics": [ + "0x8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001220000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004e0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000009c00000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000ce00000000000000000000000000000000000000000000000000000000000000de00000000000000000000000000000000000000000000000000000000000000f200000000000000000000000000000000000000000000000000000000000000fc000000000000000000000000000000000000000000000000000000000000010800000000000000000000000006c5742bfa6c3ac6c149466579123cb04d8db4a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000929e7ef2d00000000000000000000000000000000000000000000000000000000ddb2d22b0000000000000000000000000000000000000000000000000000000011e5493300000000000000000000000000000000000000000000000000000000a63234e000000000000000000000000000000000000000000000000000000000daa17f4900000000000000000000000000000000000000000000000000000000c97b973000000000000000000000000000000000000000000000000000000000d65cd010000000000000000000000000000000000000000000000000000000008762d38e00000000000000000000000000000000000000000000000000000000034cd72500000000000000000000000000000000000000000000000000000000000000000000000000000000de7c5f5377a5c5e521e530bbac55a59ab8cd337000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b3c4a25d000000000000000000000000000000000000000000000000000000000ca6d56dc000000000000000000000000000000000000000000000000000000009fef0c0100000000000000000000000000000000000000000000000000000000e8c9fd4500000000000000000000000000000000000000000000000000000000e43581b800000000000000000000000000000000000000000000000000000000a230c5240000000000000000000000000000000000000000000000000000000011aee380000000000000000000000000000000000000000000000000000000005a4c75d500000000000000000000000000000000000000000000000000000000c6549ba400000000000000000000000000000000000000000000000000000000eecdac88000000000000000000000000000000000000000000000000000000000b1ca49a00000000000000000000000000000000000000000000000000000000000000000000000000000000305c0e7e3bdd77db1b7d9adf3c8144644948d459000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000007617b0b9d00000000000000000000000000000000000000000000000000000000ccf90c7400000000000000000000000000000000000000000000000000000000b87c747500000000000000000000000000000000000000000000000000000000b70cc72a0000000000000000000000000000000000000000000000000000000076a7383d00000000000000000000000000000000000000000000000000000000911a56cc000000000000000000000000000000000000000000000000000000003e39e4cf00000000000000000000000000000000000000000000000000000000000000000000000000000000eb0e5abfe38e825264be2abeec5d6148dd563439000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000018dd62ed3e00000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000070a08231000000000000000000000000000000000000000000000000000000005d7b590f000000000000000000000000000000000000000000000000000000007641e6f300000000000000000000000000000000000000000000000000000000313ce56700000000000000000000000000000000000000000000000000000000fbabdb060000000000000000000000000000000000000000000000000000000006675ba7000000000000000000000000000000000000000000000000000000008188f71c0000000000000000000000000000000000000000000000000000000077097fc80000000000000000000000000000000000000000000000000000000006fdde03000000000000000000000000000000000000000000000000000000001fe02e53000000000000000000000000000000000000000000000000000000009c999d90000000000000000000000000000000000000000000000000000000005480699a000000000000000000000000000000000000000000000000000000006bd7bd250000000000000000000000000000000000000000000000000000000044890ae00000000000000000000000000000000000000000000000000000000081a8f243000000000000000000000000000000000000000000000000000000003a8682240000000000000000000000000000000000000000000000000000000095d89b410000000000000000000000000000000000000000000000000000000018160ddd00000000000000000000000000000000000000000000000000000000a9059cbb0000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000c485bb9600000000000000000000000000000000000000000000000000000000e8edd0e300000000000000000000000000000000000000000000000000000000000000000000000000000000f1094c3cd6659d373366aa0945bad33acb47e87800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000af4c1210c00000000000000000000000000000000000000000000000000000000af2e757b00000000000000000000000000000000000000000000000000000000b74977bb00000000000000000000000000000000000000000000000000000000538be4ac00000000000000000000000000000000000000000000000000000000f4b54f3300000000000000000000000000000000000000000000000000000000f30014d900000000000000000000000000000000000000000000000000000000a2d14f7000000000000000000000000000000000000000000000000000000000663f898e000000000000000000000000000000000000000000000000000000005537a67a00000000000000000000000000000000000000000000000000000000eee2dcc300000000000000000000000000000000000000000000000000000000000000000000000000000000dcf76df2753f17e9a2318d394767ae9b71ede25e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000711eff85b00000000000000000000000000000000000000000000000000000000565974d3000000000000000000000000000000000000000000000000000000004f2274c000000000000000000000000000000000000000000000000000000000f962a52a00000000000000000000000000000000000000000000000000000000a75572fb0000000000000000000000000000000000000000000000000000000098d55d68000000000000000000000000000000000000000000000000000000009f4c440b000000000000000000000000000000000000000000000000000000000000000000000000000000004199cb48c13884431f2e21f294ff6692dfc4dec4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000004bd470cf900000000000000000000000000000000000000000000000000000000c65c3d9500000000000000000000000000000000000000000000000000000000525d5ebf0000000000000000000000000000000000000000000000000000000008ff3efd000000000000000000000000000000000000000000000000000000000000000000000000000000005ed51129a8e0504d40039e622a223a27271922fd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000066551544a00000000000000000000000000000000000000000000000000000000fb29eac800000000000000000000000000000000000000000000000000000000e26ceccf000000000000000000000000000000000000000000000000000000000d981625000000000000000000000000000000000000000000000000000000006951c9f400000000000000000000000000000000000000000000000000000000befb4fbc00000000000000000000000000000000000000000000000000000000000000000000000000000000b9f06ee587b27aa54a56cae506fee069e0cbdfae0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c0000000000000000000000000000000000000000000000000000000000000000000000000000000006c4a2f994d4f40b9aeaa9f3d725ab6953068f8d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b0000000000000000000000000000000000000000000000000000000000000000000000000000000079d01a15f4552b2992ac337356023388e823175e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "logIndex": 31, + "blockHash": "0x9902ced065c1b85531b093824effcc336f95c1a594fc98b52f0e5829822a02de" + }, + { + "transactionIndex": 8, + "blockNumber": 46175791, + "transactionHash": "0x3219d8505141bc4c8344d657ab9870d65c33226bf88691c0a571273fde56c64e", + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000717634cfe06ffab2ceaa7fcf1b9019813f4b25fe", + "0x000000000000000000000000be188d6641e8b680743a4815dfa0f6208038960f" + ], + "data": "0x000000000000000000000000000000000000000000000000001c3ce78a1a7500000000000000000000000000000000000000000000000000106d988d0af8cd13000000000000000000000000000000000000000000003668e460e34f7c727fdf00000000000000000000000000000000000000000000000010515ba580de5813000000000000000000000000000000000000000000003668e47d2037068cf4df", + "logIndex": 32, + "blockHash": "0x9902ced065c1b85531b093824effcc336f95c1a594fc98b52f0e5829822a02de" + } + ], + "blockNumber": 46175791, + "cumulativeGasUsed": "6159450", + "status": 1, + "byzantium": true + }, + "args": [ + "0x717634cfe06FFAB2CEAA7fcf1b9019813f4B25FE", + [ + { + "facetAddress": "0x6C5742bfa6C3AC6C149466579123cB04D8Db4a01", + "functionSelectors": [ + "0x29e7ef2d", + "0xddb2d22b", + "0x11e54933", + "0xa63234e0", + "0xdaa17f49", + "0xc97b9730", + "0xd65cd010", + "0x8762d38e", + "0x034cd725" + ], + "action": 0 + }, + { + "facetAddress": "0xDe7C5f5377A5C5E521e530bbac55a59AB8cd3370", + "functionSelectors": [ + "0x3c4a25d0", + "0xca6d56dc", + "0x9fef0c01", + "0xe8c9fd45", + "0xe43581b8", + "0xa230c524", + "0x11aee380", + "0x5a4c75d5", + "0xc6549ba4", + "0xeecdac88", + "0x0b1ca49a" + ], + "action": 0 + }, + { + "facetAddress": "0x305C0e7E3BDD77Db1B7d9AdF3C8144644948D459", + "functionSelectors": [ + "0x617b0b9d", + "0xccf90c74", + "0xb87c7475", + "0xb70cc72a", + "0x76a7383d", + "0x911a56cc", + "0x3e39e4cf" + ], + "action": 0 + }, + { + "facetAddress": "0xeB0e5aBfe38e825264be2ABeeC5D6148DD563439", + "functionSelectors": [ + "0xdd62ed3e", + "0x095ea7b3", + "0x70a08231", + "0x5d7b590f", + "0x7641e6f3", + "0x313ce567", + "0xfbabdb06", + "0x06675ba7", + "0x8188f71c", + "0x77097fc8", + "0x06fdde03", + "0x1fe02e53", + "0x9c999d90", + "0x5480699a", + "0x6bd7bd25", + "0x44890ae0", + "0x81a8f243", + "0x3a868224", + "0x95d89b41", + "0x18160ddd", + "0xa9059cbb", + "0x23b872dd", + "0xc485bb96", + "0xe8edd0e3" + ], + "action": 0 + }, + { + "facetAddress": "0xf1094c3CD6659d373366AA0945bAd33ACb47e878", + "functionSelectors": [ + "0xf4c1210c", + "0xaf2e757b", + "0xb74977bb", + "0x538be4ac", + "0xf4b54f33", + "0xf30014d9", + "0xa2d14f70", + "0x663f898e", + "0x5537a67a", + "0xeee2dcc3" + ], + "action": 0 + }, + { + "facetAddress": "0xdcF76dF2753f17E9a2318D394767Ae9B71ede25E", + "functionSelectors": [ + "0x11eff85b", + "0x565974d3", + "0x4f2274c0", + "0xf962a52a", + "0xa75572fb", + "0x98d55d68", + "0x9f4c440b" + ], + "action": 0 + }, + { + "facetAddress": "0x4199cb48c13884431f2e21f294ff6692Dfc4DEc4", + "functionSelectors": [ + "0xbd470cf9", + "0xc65c3d95", + "0x525d5ebf", + "0x08ff3efd" + ], + "action": 0 + }, + { + "facetAddress": "0x5eD51129A8E0504d40039e622a223A27271922Fd", + "functionSelectors": [ + "0x6551544a", + "0xfb29eac8", + "0xe26ceccf", + "0x0d981625", + "0x6951c9f4", + "0xbefb4fbc" + ], + "action": 0 + }, + { + "facetAddress": "0xb9F06Ee587B27aa54a56CAE506fee069E0cbdfAE", + "functionSelectors": [ + "0x1f931c1c" + ], + "action": 0 + }, + { + "facetAddress": "0x06C4a2f994D4f40b9aEaa9F3D725aB6953068F8D", + "functionSelectors": [ + "0x8da5cb5b", + "0xf2fde38b" + ], + "action": 0 + }, + { + "facetAddress": "0x79D01A15F4552b2992aC337356023388e823175E", + "functionSelectors": [ + "0xcdffacc6", + "0x52ef6b2c", + "0xadfca15e", + "0x7a0ed627", + "0x01ffc9a7" + ], + "action": 0 + } + ], + [ + { + "initContract": "0x7D381445C00af2cEEF45Ed46859439d58c73ac61", + "initData": "0x2a84809100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000148e2b093000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + { + "initContract": "0x59788D17fc4532D0f5E1b14979AE881CaBD3af73", + "initData": "0x3cf22baa00000000000000000000000000000000000000000000000000000000000000200000000000000000000000002f03add7aaba219405ea7dc94e4345d99d469fba0000000000000000000000001b0c84a86cc6730b583166c93e410ddd4f8763280000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000000000000a477265656e20476f6c64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003474c440000000000000000000000000000000000000000000000000000000000" + } + ] + ], + "numDeployments": 2, + "solcInputHash": "3fe12e823553336a8d0f950a5a792ac9", + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractOwner\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum IDiamondCut.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct IDiamondCut.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"initContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"internalType\":\"struct Diamond.Initialization[]\",\"name\":\"_initializations\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_contractOwner\":\"the owner of the contract. With default DiamondCutFacet, this is the sole address allowed to make further cuts.\",\"_diamondCut\":\"the list of facet to add\",\"_initializations\":\"the list of initialization pair to execute. This allow to setup a contract with multiple level of independent initialization.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"This construct a diamond contract\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solc_0.8/diamond/Diamond.sol\":\"Diamond\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solc_0.8/diamond/Diamond.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/******************************************************************************\\\\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\\n*\\n* Implementation of a diamond.\\n/******************************************************************************/\\n\\nimport {LibDiamond} from \\\"./libraries/LibDiamond.sol\\\";\\nimport {IDiamondCut} from \\\"./interfaces/IDiamondCut.sol\\\";\\n\\ncontract Diamond {\\n struct Initialization {\\n address initContract;\\n bytes initData;\\n }\\n\\n /// @notice This construct a diamond contract\\n /// @param _contractOwner the owner of the contract. With default DiamondCutFacet, this is the sole address allowed to make further cuts.\\n /// @param _diamondCut the list of facet to add\\n /// @param _initializations the list of initialization pair to execute. This allow to setup a contract with multiple level of independent initialization.\\n constructor(\\n address _contractOwner,\\n IDiamondCut.FacetCut[] memory _diamondCut,\\n Initialization[] memory _initializations\\n ) payable {\\n if (_contractOwner != address(0)) {\\n LibDiamond.setContractOwner(_contractOwner);\\n }\\n\\n LibDiamond.diamondCut(_diamondCut, address(0), \\\"\\\");\\n\\n for (uint256 i = 0; i < _initializations.length; i++) {\\n LibDiamond.initializeDiamondCut(_initializations[i].initContract, _initializations[i].initData);\\n }\\n }\\n\\n // Find facet for function that is called and execute the\\n // function if a facet is found and return any value.\\n fallback() external payable {\\n LibDiamond.DiamondStorage storage ds;\\n bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;\\n // get diamond storage\\n assembly {\\n ds.slot := position\\n }\\n // get facet from function selector\\n address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;\\n require(facet != address(0), \\\"Diamond: Function does not exist\\\");\\n // Execute external function from facet using delegatecall and return any value.\\n assembly {\\n // copy function selector and any arguments\\n calldatacopy(0, 0, calldatasize())\\n // execute function call using the facet\\n let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)\\n // get any return value\\n returndatacopy(0, 0, returndatasize())\\n // return any return value or error back to the caller\\n switch result\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n receive() external payable {}\\n}\\n\",\"keccak256\":\"0x9f459a9f18d5429b0dd40e60b4a67a27d2b94693c4d190ed9dd7034a894c1eb6\",\"license\":\"MIT\"},\"solc_0.8/diamond/interfaces/IDiamondCut.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/******************************************************************************\\\\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\\n/******************************************************************************/\\n\\ninterface IDiamondCut {\\n enum FacetCutAction {Add, Replace, Remove}\\n // Add=0, Replace=1, Remove=2\\n\\n struct FacetCut {\\n address facetAddress;\\n FacetCutAction action;\\n bytes4[] functionSelectors;\\n }\\n\\n /// @notice Add/replace/remove any number of functions and optionally execute\\n /// a function with delegatecall\\n /// @param _diamondCut Contains the facet addresses and function selectors\\n /// @param _init The address of the contract or facet to execute _calldata\\n /// @param _calldata A function call, including function selector and arguments\\n /// _calldata is executed with delegatecall on _init\\n function diamondCut(\\n FacetCut[] calldata _diamondCut,\\n address _init,\\n bytes calldata _calldata\\n ) external;\\n\\n event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);\\n}\\n\",\"keccak256\":\"0xc00c16bfa30a3fa5f3dc684f7f8ba62c259962b25f647d9588739458989717fc\",\"license\":\"MIT\"},\"solc_0.8/diamond/libraries/LibDiamond.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/******************************************************************************\\\\\\n* Author: Nick Mudge (https://twitter.com/mudgen)\\n* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535\\n/******************************************************************************/\\nimport { IDiamondCut } from \\\"../interfaces/IDiamondCut.sol\\\";\\n\\nlibrary LibDiamond {\\n bytes32 constant DIAMOND_STORAGE_POSITION = keccak256(\\\"diamond.standard.diamond.storage\\\");\\n\\n struct FacetAddressAndPosition {\\n address facetAddress;\\n uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array\\n }\\n\\n struct FacetFunctionSelectors {\\n bytes4[] functionSelectors;\\n uint256 facetAddressPosition; // position of facetAddress in facetAddresses array\\n }\\n\\n struct DiamondStorage {\\n // maps function selector to the facet address and\\n // the position of the selector in the facetFunctionSelectors.selectors array\\n mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;\\n // maps facet addresses to function selectors\\n mapping(address => FacetFunctionSelectors) facetFunctionSelectors;\\n // facet addresses\\n address[] facetAddresses;\\n // Used to query if a contract implements an interface.\\n // Used to implement ERC-165.\\n mapping(bytes4 => bool) supportedInterfaces;\\n // owner of the contract\\n address contractOwner;\\n }\\n\\n function diamondStorage() internal pure returns (DiamondStorage storage ds) {\\n bytes32 position = DIAMOND_STORAGE_POSITION;\\n assembly {\\n ds.slot := position\\n }\\n }\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n function setContractOwner(address _newOwner) internal {\\n DiamondStorage storage ds = diamondStorage();\\n address previousOwner = ds.contractOwner;\\n ds.contractOwner = _newOwner;\\n emit OwnershipTransferred(previousOwner, _newOwner);\\n }\\n\\n function contractOwner() internal view returns (address contractOwner_) {\\n contractOwner_ = diamondStorage().contractOwner;\\n }\\n\\n function enforceIsContractOwner() internal view {\\n require(msg.sender == diamondStorage().contractOwner, \\\"LibDiamond: Must be contract owner\\\");\\n }\\n\\n event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata);\\n\\n // Internal function version of diamondCut\\n function diamondCut(\\n IDiamondCut.FacetCut[] memory _diamondCut,\\n address _init,\\n bytes memory _calldata\\n ) internal {\\n for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) {\\n IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;\\n if (action == IDiamondCut.FacetCutAction.Add) {\\n addFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\\n } else if (action == IDiamondCut.FacetCutAction.Replace) {\\n replaceFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\\n } else if (action == IDiamondCut.FacetCutAction.Remove) {\\n removeFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);\\n } else {\\n revert(\\\"LibDiamondCut: Incorrect FacetCutAction\\\");\\n }\\n }\\n emit DiamondCut(_diamondCut, _init, _calldata);\\n initializeDiamondCut(_init, _calldata);\\n }\\n\\n function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\\n require(_functionSelectors.length > 0, \\\"LibDiamondCut: No selectors in facet to cut\\\");\\n DiamondStorage storage ds = diamondStorage(); \\n require(_facetAddress != address(0), \\\"LibDiamondCut: Add facet can't be address(0)\\\");\\n uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);\\n // add new facet address if it does not exist\\n if (selectorPosition == 0) {\\n addFacet(ds, _facetAddress); \\n }\\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\\n bytes4 selector = _functionSelectors[selectorIndex];\\n address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;\\n require(oldFacetAddress == address(0), \\\"LibDiamondCut: Can't add function that already exists\\\");\\n addFunction(ds, selector, selectorPosition, _facetAddress);\\n selectorPosition++;\\n }\\n }\\n\\n function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\\n require(_functionSelectors.length > 0, \\\"LibDiamondCut: No selectors in facet to cut\\\");\\n DiamondStorage storage ds = diamondStorage();\\n require(_facetAddress != address(0), \\\"LibDiamondCut: Add facet can't be address(0)\\\");\\n uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);\\n // add new facet address if it does not exist\\n if (selectorPosition == 0) {\\n addFacet(ds, _facetAddress);\\n }\\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\\n bytes4 selector = _functionSelectors[selectorIndex];\\n address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;\\n require(oldFacetAddress != _facetAddress, \\\"LibDiamondCut: Can't replace function with same function\\\");\\n removeFunction(ds, oldFacetAddress, selector);\\n addFunction(ds, selector, selectorPosition, _facetAddress);\\n selectorPosition++;\\n }\\n }\\n\\n function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {\\n require(_functionSelectors.length > 0, \\\"LibDiamondCut: No selectors in facet to cut\\\");\\n DiamondStorage storage ds = diamondStorage();\\n // if function does not exist then do nothing and return\\n require(_facetAddress == address(0), \\\"LibDiamondCut: Remove facet address must be address(0)\\\");\\n for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++) {\\n bytes4 selector = _functionSelectors[selectorIndex];\\n address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;\\n removeFunction(ds, oldFacetAddress, selector);\\n }\\n }\\n\\n function addFacet(DiamondStorage storage ds, address _facetAddress) internal {\\n enforceHasContractCode(_facetAddress, \\\"LibDiamondCut: New facet has no code\\\");\\n ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = ds.facetAddresses.length;\\n ds.facetAddresses.push(_facetAddress);\\n } \\n\\n\\n function addFunction(DiamondStorage storage ds, bytes4 _selector, uint96 _selectorPosition, address _facetAddress) internal {\\n ds.selectorToFacetAndPosition[_selector].functionSelectorPosition = _selectorPosition;\\n ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(_selector);\\n ds.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress;\\n }\\n\\n function removeFunction(DiamondStorage storage ds, address _facetAddress, bytes4 _selector) internal { \\n require(_facetAddress != address(0), \\\"LibDiamondCut: Can't remove function that doesn't exist\\\");\\n // an immutable function is a function defined directly in a diamond\\n require(_facetAddress != address(this), \\\"LibDiamondCut: Can't remove immutable function\\\");\\n // replace selector with last selector, then delete last selector\\n uint256 selectorPosition = ds.selectorToFacetAndPosition[_selector].functionSelectorPosition;\\n uint256 lastSelectorPosition = ds.facetFunctionSelectors[_facetAddress].functionSelectors.length - 1;\\n // if not the same then replace _selector with lastSelector\\n if (selectorPosition != lastSelectorPosition) {\\n bytes4 lastSelector = ds.facetFunctionSelectors[_facetAddress].functionSelectors[lastSelectorPosition];\\n ds.facetFunctionSelectors[_facetAddress].functionSelectors[selectorPosition] = lastSelector;\\n ds.selectorToFacetAndPosition[lastSelector].functionSelectorPosition = uint96(selectorPosition);\\n }\\n // delete the last selector\\n ds.facetFunctionSelectors[_facetAddress].functionSelectors.pop();\\n delete ds.selectorToFacetAndPosition[_selector];\\n\\n // if no more selectors for facet address then delete the facet address\\n if (lastSelectorPosition == 0) {\\n // replace facet address with last facet address and delete last facet address\\n uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1;\\n uint256 facetAddressPosition = ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;\\n if (facetAddressPosition != lastFacetAddressPosition) {\\n address lastFacetAddress = ds.facetAddresses[lastFacetAddressPosition];\\n ds.facetAddresses[facetAddressPosition] = lastFacetAddress;\\n ds.facetFunctionSelectors[lastFacetAddress].facetAddressPosition = facetAddressPosition;\\n }\\n ds.facetAddresses.pop();\\n delete ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;\\n }\\n }\\n\\n function initializeDiamondCut(address _init, bytes memory _calldata) internal {\\n if (_init == address(0)) {\\n require(_calldata.length == 0, \\\"LibDiamondCut: _init is address(0) but_calldata is not empty\\\");\\n } else {\\n require(_calldata.length > 0, \\\"LibDiamondCut: _calldata is empty but _init is not address(0)\\\");\\n if (_init != address(this)) {\\n enforceHasContractCode(_init, \\\"LibDiamondCut: _init address has no code\\\");\\n }\\n (bool success, bytes memory error) = _init.delegatecall(_calldata);\\n if (!success) {\\n if (error.length > 0) {\\n // bubble up the error\\n revert(string(error));\\n } else {\\n revert(\\\"LibDiamondCut: _init function reverted\\\");\\n }\\n }\\n }\\n }\\n\\n function enforceHasContractCode(address _contract, string memory _errorMessage) internal view {\\n uint256 contractSize;\\n assembly {\\n contractSize := extcodesize(_contract)\\n }\\n require(contractSize > 0, _errorMessage);\\n }\\n}\\n\",\"keccak256\":\"0x2205345e83eb86f5281f159a9215a096cb6d404782619f9b8e9d7a4a46c32a37\",\"license\":\"MIT\"}},\"version\":1}", + "bytecode": "0x60806040526040516200321e3803806200321e833981016040819052620000269162001340565b6001600160a01b038316156200004c576200004c83620000f760201b620001071760201c565b62000074826000604051806020016040528060008152506200017b60201b620001c11760201c565b60005b8151811015620000ed57620000d88282815181106200009a576200009a62001514565b602002602001015160000151838381518110620000bb57620000bb62001514565b602002602001015160200151620003d960201b620004051760201c565b80620000e48162001540565b91505062000077565b505050506200173d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080546001600160a01b031981166001600160a01b0384811691821790935560405160008051602062003172833981519152939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156200038a5760008482815181106200019f576200019f62001514565b602002602001015160200151905060006002811115620001c357620001c36200155e565b816002811115620001d857620001d86200155e565b1415620002375762000231858381518110620001f857620001f862001514565b60200260200101516000015186848151811062000219576200021962001514565b602002602001015160400151620005fe60201b60201c565b62000374565b60018160028111156200024e576200024e6200155e565b1415620002a757620002318583815181106200026e576200026e62001514565b6020026020010151600001518684815181106200028f576200028f62001514565b6020026020010151604001516200088860201b60201c565b6002816002811115620002be57620002be6200155e565b1415620003175762000231858381518110620002de57620002de62001514565b602002602001015160000151868481518110620002ff57620002ff62001514565b60200260200101516040015162000b1e60201b60201c565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b60648201526084015b60405180910390fd5b5080620003818162001540565b9150506200017e565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051620003c093929190620015a2565b60405180910390a1620003d48282620003d9565b505050565b6001600160a01b03821662000463578051156200045f5760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016200036b565b5050565b6000815111620004dc5760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016200036b565b6001600160a01b038216301462000512576200051282604051806060016040528060288152602001620031926028913962000c7e565b600080836001600160a01b0316836040516200052f9190620016a9565b600060405180830381855af49150503d80600081146200056c576040519150601f19603f3d011682016040523d82523d6000602084013e62000571565b606091505b509150915081620005f857805115620005a0578060405162461bcd60e51b81526004016200036b9190620016c7565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b60648201526084016200036b565b50505050565b6000815111620006545760405162461bcd60e51b815260206004820152602b6024820152600080516020620031fe83398151915260448201526a1858d95d081d1bc818dd5d60aa1b60648201526084016200036b565b600080516020620031728339815191526001600160a01b038316620006c05760405162461bcd60e51b815260206004820152602c6024820152600080516020620031ba83398151915260448201526b65206164647265737328302960a01b60648201526084016200036b565b6001600160a01b03831660009081526001820160205260409020546001600160601b038116620006f657620006f6828562000ca2565b60005b8351811015620008815760008482815181106200071a576200071a62001514565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620007c25760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c726561647920657869737473000000000000000000000060648201526084016200036b565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836200086681620016e3565b94505050508080620008789062001540565b915050620006f9565b5050505050565b6000815111620008de5760405162461bcd60e51b815260206004820152602b6024820152600080516020620031fe83398151915260448201526a1858d95d081d1bc818dd5d60aa1b60648201526084016200036b565b600080516020620031728339815191526001600160a01b0383166200094a5760405162461bcd60e51b815260206004820152602c6024820152600080516020620031ba83398151915260448201526b65206164647265737328302960a01b60648201526084016200036b565b6001600160a01b03831660009081526001820160205260409020546001600160601b038116620009805762000980828562000ca2565b60005b835181101562000881576000848281518110620009a457620009a462001514565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0390811690871681141562000a525760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016200036b565b62000a5f85828462000d0f565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558362000b0381620016e3565b9450505050808062000b159062001540565b91505062000983565b600081511162000b745760405162461bcd60e51b815260206004820152602b6024820152600080516020620031fe83398151915260448201526a1858d95d081d1bc818dd5d60aa1b60648201526084016200036b565b600080516020620031728339815191526001600160a01b0383161562000c035760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d75737420626520616464726573732830290000000000000000000060648201526084016200036b565b60005b8251811015620005f857600083828151811062000c275762000c2762001514565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031662000c6684828462000d0f565b5050808062000c759062001540565b91505062000c06565b813b8181620005f85760405162461bcd60e51b81526004016200036b9190620016c7565b62000cc781604051806060016040528060248152602001620031da6024913962000c7e565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160a01b03821662000d8d5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016200036b565b6001600160a01b03821630141562000dff5760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b60648201526084016200036b565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b0316929162000e50916200170d565b905080821462000f49576001600160a01b0384166000908152600186016020526040812080548390811062000e895762000e8962001514565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811062000edd5762000edd62001514565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384166000908152600186016020526040902080548062000f755762000f7562001727565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319851682528690526040812055806200088157600285015460009062000fd7906001906200170d565b6001600160a01b03861660009081526001808901602052604090912001549091508082146200108d5760008760020183815481106200101a576200101a62001514565b6000918252602090912001546002890180546001600160a01b0390921692508291849081106200104e576200104e62001514565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480620010a357620010a362001727565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b80516001600160a01b03811681146200110457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171562001144576200114462001109565b60405290565b604051606081016001600160401b038111828210171562001144576200114462001109565b604051601f8201601f191681016001600160401b03811182821017156200119a576200119a62001109565b604052919050565b60006001600160401b03821115620011be57620011be62001109565b5060051b60200190565b60005b83811015620011e5578181015183820152602001620011cb565b83811115620005f85750506000910152565b6000601f83818401126200120a57600080fd5b82516020620012236200121d83620011a2565b6200116f565b82815260059290921b850181019181810190878411156200124357600080fd5b8287015b84811015620013345780516001600160401b0380821115620012695760008081fd5b908901906040601f19838d038101821315620012855760008081fd5b6200128f6200111f565b6200129c898601620010ec565b81528285015184811115620012b15760008081fd5b8086019550508d603f860112620012c85760008081fd5b8885015184811115620012df57620012df62001109565b620012f08a848e840116016200116f565b94508085528e848288010111156200130a57600092508283fd5b6200131b818b8701868901620011c8565b5080890193909352505084525091830191830162001247565b50979650505050505050565b6000806000606084860312156200135657600080fd5b6200136184620010ec565b60208501519093506001600160401b03808211156200137f57600080fd5b818601915086601f8301126200139457600080fd5b8151620013a56200121d82620011a2565b8082825260208201915060208360051b860101925089831115620013c857600080fd5b602085015b83811015620014e057805185811115620013e657600080fd5b86016060818d03601f19011215620013fd57600080fd5b620014076200114a565b6200141560208301620010ec565b81526040820151600381106200142a57600080fd5b60208201526060820151878111156200144257600080fd5b8083019250508c603f8301126200145857600080fd5b60208201516200146c6200121d82620011a2565b81815260059190911b83016040019060208101908f8311156200148e57600080fd5b6040850194505b82851015620014c95784516001600160e01b031981168114620014b757600080fd5b82526020948501949091019062001495565b6040840152505084525060209283019201620013cd565b5060408901519096509350505080821115620014fb57600080fd5b506200150a86828701620011f7565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156200155757620015576200152a565b5060010190565b634e487b7160e01b600052602160045260246000fd5b600081518084526200158e816020860160208601620011c8565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156200167757898403607f19018652815180516001600160a01b031685528381015189860190600381106200161357634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015620016615783516001600160e01b031916825292860192600192909201919086019062001635565b50978501979550505090820190600101620015cb565b50506001600160a01b038a169088015286810360408801526200169b818962001574565b9a9950505050505050505050565b60008251620016bd818460208701620011c8565b9190910192915050565b602081526000620016dc602083018462001574565b9392505050565b60006001600160601b03828116808214156200170357620017036200152a565b6001019392505050565b6000828210156200172257620017226200152a565b500390565b634e487b7160e01b600052603160045260246000fd5b611a25806200174d6000396000f3fe60806040523661000b57005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020819052604090912054819073ffffffffffffffffffffffffffffffffffffffff16806100e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610102573d6000f35b3d6000fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156103ba5760008482815181106101e1576101e1611657565b60200260200101516020015190506000600281111561020257610202611686565b81600281111561021457610214611686565b14156102635761025e85838151811061022f5761022f611657565b60200260200101516000015186848151811061024d5761024d611657565b6020026020010151604001516106be565b6103a7565b600181600281111561027757610277611686565b14156102c15761025e85838151811061029257610292611657565b6020026020010151600001518684815181106102b0576102b0611657565b602002602001015160400151610a71565b60028160028111156102d5576102d5611686565b141561031f5761025e8583815181106102f0576102f0611657565b60200260200101516000015186848151811061030e5761030e611657565b602002602001015160400151610e2e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e0000000000000000000000000000000000000000000000000060648201526084016100da565b50806103b2816116e4565b9150506101c4565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516103ee93929190611793565b60405180910390a16104008282610405565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166104b3578051156104af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100da565b5050565b6000815111610544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff8216301461058357610583826040518060600160405280602881526020016119a46028913961101b565b6000808373ffffffffffffffffffffffffffffffffffffffff16836040516105ab91906118fb565b600060405180830381855af49150503d80600081146105e6576040519150601f19603f3d011682016040523d82523d6000602084013e6105eb565b606091505b5091509150816106b85780511561063057806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100da565b50505050565b600081511161074f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610858576108588285611056565b60005b8351811015610a6a57600084828151811061087857610878611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16801561095d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c726561647920657869737473000000000000000000000060648201526084016100da565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610a5281611931565b94505050508080610a62906116e4565b91505061085b565b5050505050565b6000815111610b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610c0b57610c0b8285611056565b60005b8351811015610a6a576000848281518110610c2b57610c2b611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff908116908716811415610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016100da565b610d218582846110e5565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610e1681611931565b94505050508080610e26906116e4565b915050610c0e565b6000815111610ebf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff831615610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d75737420626520616464726573732830290000000000000000000060648201526084016100da565b60005b82518110156106b8576000838281518110610fa457610fa4611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529185905260409091205490915073ffffffffffffffffffffffffffffffffffffffff166110068482846110e5565b50508080611013906116e4565b915050610f87565b813b81816106b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b611078816040518060600160405280602481526020016119cc6024913961101b565b60028201805473ffffffffffffffffffffffffffffffffffffffff90921660008181526001948501602090815260408220860185905594840183559182529290200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff821630141561122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201527f7461626c652066756e6374696f6e00000000000000000000000000000000000060648201526084016100da565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152602084815260408083205473ffffffffffffffffffffffffffffffffffffffff86168452600180880190935290832054740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff1692916112b89161195d565b90508082146113ff5773ffffffffffffffffffffffffffffffffffffffff8416600090815260018601602052604081208054839081106112fa576112fa611657565b6000918252602080832060088304015473ffffffffffffffffffffffffffffffffffffffff8916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811061135857611358611657565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790557fffffffff0000000000000000000000000000000000000000000000000000000092909216825286905260409020805473ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006bffffffffffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff84166000908152600186016020526040902080548061143557611435611974565b6000828152602080822060087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193840401805463ffffffff600460078716026101000a0219169055919092557fffffffff0000000000000000000000000000000000000000000000000000000085168252869052604081205580610a6a5760028501546000906114ca9060019061195d565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001808901602052604090912001549091508082146115b857600087600201838154811061151657611516611657565b60009182526020909120015460028901805473ffffffffffffffffffffffffffffffffffffffff909216925082918490811061155457611554611657565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152600189810190925260409020018190555b866002018054806115cb576115cb611974565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff88168252600189810190915260408220015550505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611716576117166116b5565b5060010190565b60005b83811015611738578181015183820152602001611720565b838111156106b85750506000910152565b6000815180845261176181602086016020860161171d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156118be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8503018652815188850173ffffffffffffffffffffffffffffffffffffffff82511686528482015160038110611845577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156118a95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928601926001929092019190860190611867565b509785019795505050908201906001016117bc565b505073ffffffffffffffffffffffffffffffffffffffff8a169088015286810360408801526118ed8189611749565b9a9950505050505050505050565b6000825161190d81846020870161171d565b9190910192915050565b60208152600061192a6020830184611749565b9392505050565b60006bffffffffffffffffffffffff80831681811415611953576119536116b5565b6001019392505050565b60008282101561196f5761196f6116b5565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212202b18a533b03703e1326000cf2f36b1c6ec631cff163a752d939e5ee79ad2cde364736f6c634300080a0033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204164642066616365742063616e277420624c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f64654c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e2066", + "deployedBytecode": "0x60806040523661000b57005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020819052604090912054819073ffffffffffffffffffffffffffffffffffffffff16806100e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610102573d6000f35b3d6000fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156103ba5760008482815181106101e1576101e1611657565b60200260200101516020015190506000600281111561020257610202611686565b81600281111561021457610214611686565b14156102635761025e85838151811061022f5761022f611657565b60200260200101516000015186848151811061024d5761024d611657565b6020026020010151604001516106be565b6103a7565b600181600281111561027757610277611686565b14156102c15761025e85838151811061029257610292611657565b6020026020010151600001518684815181106102b0576102b0611657565b602002602001015160400151610a71565b60028160028111156102d5576102d5611686565b141561031f5761025e8583815181106102f0576102f0611657565b60200260200101516000015186848151811061030e5761030e611657565b602002602001015160400151610e2e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e0000000000000000000000000000000000000000000000000060648201526084016100da565b50806103b2816116e4565b9150506101c4565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516103ee93929190611793565b60405180910390a16104008282610405565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166104b3578051156104af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100da565b5050565b6000815111610544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff8216301461058357610583826040518060600160405280602881526020016119a46028913961101b565b6000808373ffffffffffffffffffffffffffffffffffffffff16836040516105ab91906118fb565b600060405180830381855af49150503d80600081146105e6576040519150601f19603f3d011682016040523d82523d6000602084013e6105eb565b606091505b5091509150816106b85780511561063057806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e20726560448201527f766572746564000000000000000000000000000000000000000000000000000060648201526084016100da565b50505050565b600081511161074f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610858576108588285611056565b60005b8351811015610a6a57600084828151811061087857610878611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16801561095d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c726561647920657869737473000000000000000000000060648201526084016100da565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610a5281611931565b94505050508080610a62906116e4565b91505061085b565b5050505050565b6000815111610b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f652061646472657373283029000000000000000000000000000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260409020546bffffffffffffffffffffffff8116610c0b57610c0b8285611056565b60005b8351811015610a6a576000848281518110610c2b57610c2b611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff908116908716811415610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016100da565b610d218582846110e5565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905583610e1681611931565b94505050508080610e26906116e4565b915050610c0e565b6000815111610ebf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084016100da565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff831615610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d75737420626520616464726573732830290000000000000000000060648201526084016100da565b60005b82518110156106b8576000838281518110610fa457610fa4611657565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529185905260409091205490915073ffffffffffffffffffffffffffffffffffffffff166110068482846110e5565b50508080611013906116e4565b915050610f87565b813b81816106b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100da9190611917565b611078816040518060600160405280602481526020016119cc6024913961101b565b60028201805473ffffffffffffffffffffffffffffffffffffffff90921660008181526001948501602090815260408220860185905594840183559182529290200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016100da565b73ffffffffffffffffffffffffffffffffffffffff821630141561122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201527f7461626c652066756e6374696f6e00000000000000000000000000000000000060648201526084016100da565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152602084815260408083205473ffffffffffffffffffffffffffffffffffffffff86168452600180880190935290832054740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff1692916112b89161195d565b90508082146113ff5773ffffffffffffffffffffffffffffffffffffffff8416600090815260018601602052604081208054839081106112fa576112fa611657565b6000918252602080832060088304015473ffffffffffffffffffffffffffffffffffffffff8916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811061135857611358611657565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790557fffffffff0000000000000000000000000000000000000000000000000000000092909216825286905260409020805473ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006bffffffffffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff84166000908152600186016020526040902080548061143557611435611974565b6000828152602080822060087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193840401805463ffffffff600460078716026101000a0219169055919092557fffffffff0000000000000000000000000000000000000000000000000000000085168252869052604081205580610a6a5760028501546000906114ca9060019061195d565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001808901602052604090912001549091508082146115b857600087600201838154811061151657611516611657565b60009182526020909120015460028901805473ffffffffffffffffffffffffffffffffffffffff909216925082918490811061155457611554611657565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152600189810190925260409020018190555b866002018054806115cb576115cb611974565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff88168252600189810190915260408220015550505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611716576117166116b5565b5060010190565b60005b83811015611738578181015183820152602001611720565b838111156106b85750506000910152565b6000815180845261176181602086016020860161171d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156118be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8503018652815188850173ffffffffffffffffffffffffffffffffffffffff82511686528482015160038110611845577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156118a95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928601926001929092019190860190611867565b509785019795505050908201906001016117bc565b505073ffffffffffffffffffffffffffffffffffffffff8a169088015286810360408801526118ed8189611749565b9a9950505050505050505050565b6000825161190d81846020870161171d565b9190910192915050565b60208152600061192a6020830184611749565b9392505050565b60006bffffffffffffffffffffffff80831681811415611953576119536116b5565b6001019392505050565b60008282101561196f5761196f6116b5565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212202b18a533b03703e1326000cf2f36b1c6ec631cff163a752d939e5ee79ad2cde364736f6c634300080a0033", + "devdoc": { + "kind": "dev", + "methods": { + "constructor": { + "params": { + "_contractOwner": "the owner of the contract. With default DiamondCutFacet, this is the sole address allowed to make further cuts.", + "_diamondCut": "the list of facet to add", + "_initializations": "the list of initialization pair to execute. This allow to setup a contract with multiple level of independent initialization." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "constructor": { + "notice": "This construct a diamond contract" + } + }, + "version": 1 + }, + "storageLayout": { + "storage": [], + "types": null + } +} \ No newline at end of file