[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "string", "name": "_param", "type": "string" }, { "internalType": "address", "name": "_address", "type": "address" } ], "name": "AddressInvalid", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "_param", "type": "string" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "AmountInvalid", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "_length1", "type": "uint256" }, { "internalType": "uint256", "name": "_length2", "type": "uint256" } ], "name": "ArrayLengthMismatch", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "_maxDepositPerUser", "type": "uint256" }, { "internalType": "uint256", "name": "_minDepositPerUser", "type": "uint256" } ], "name": "DepositAmountInvalid", "type": "error" }, { "inputs": [], "name": "DepositClosed", "type": "error" }, { "inputs": [], "name": "DepositStarted", "type": "error" }, { "inputs": [], "name": "IncorrectProof", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "required", "type": "uint256" }, { "internalType": "uint256", "name": "current", "type": "uint256" } ], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InsufficientFees", "type": "error" }, { "inputs": [], "name": "InsufficientFunds", "type": "error" }, { "inputs": [], "name": "InvalidData", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "_reason", "type": "string" }, { "internalType": "address", "name": "_gnosisAddress", "type": "address" } ], "name": "InvalidGnosisSafe", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "_length", "type": "uint256" } ], "name": "Max4TokensAllowed", "type": "error" }, { "inputs": [], "name": "MaxTokensMinted", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "MaxTokensMintedForUser", "type": "error" }, { "inputs": [], "name": "MintingNotOpen", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "NoAccess", "type": "error" }, { "inputs": [], "name": "NotDefaultChain", "type": "error" }, { "inputs": [], "name": "NotERC20Template", "type": "error" }, { "inputs": [], "name": "NotWhitelisted", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "_totalRaiseAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_maxDepositPerUser", "type": "uint256" } ], "name": "RaiseAmountInvalid", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "_reason", "type": "string" } ], "name": "SafeProxyCreationFailed", "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": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "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": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "amountToLD", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "amountToSD", "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": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "emitterContractAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "erc20DaoDetails", "outputs": [ { "internalType": "string", "name": "DaoName", "type": "string" }, { "internalType": "string", "name": "DaoSymbol", "type": "string" }, { "internalType": "uint256", "name": "quorum", "type": "uint256" }, { "internalType": "uint256", "name": "threshold", "type": "uint256" }, { "internalType": "bool", "name": "isGovernanceActive", "type": "bool" }, { "internalType": "bool", "name": "isTransferable", "type": "bool" }, { "internalType": "bool", "name": "onlyAllowWhitelist", "type": "bool" }, { "internalType": "address", "name": "ownerAddress", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "factoryAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getERC20DAOdetails", "outputs": [ { "components": [ { "internalType": "string", "name": "DaoName", "type": "string" }, { "internalType": "string", "name": "DaoSymbol", "type": "string" }, { "internalType": "uint256", "name": "quorum", "type": "uint256" }, { "internalType": "uint256", "name": "threshold", "type": "uint256" }, { "internalType": "bool", "name": "isGovernanceActive", "type": "bool" }, { "internalType": "bool", "name": "isTransferable", "type": "bool" }, { "internalType": "bool", "name": "onlyAllowWhitelist", "type": "bool" }, { "internalType": "address", "name": "ownerAddress", "type": "address" } ], "internalType": "struct Helper.ERC20DAOdetails", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_refundModule", "type": "address" } ], "name": "grantRefundModule", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_factory", "type": "address" }, { "internalType": "address", "name": "_emitter", "type": "address" }, { "internalType": "string", "name": "_DaoName", "type": "string" }, { "internalType": "string", "name": "_DaoSymbol", "type": "string" }, { "internalType": "uint256", "name": "_quorum", "type": "uint256" }, { "internalType": "uint256", "name": "_threshold", "type": "uint256" }, { "internalType": "bool", "name": "_isGovernanceActive", "type": "bool" }, { "internalType": "bool", "name": "_isTransferable", "type": "bool" }, { "internalType": "bool", "name": "_onlyAllowWhitelist", "type": "bool" }, { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "initializeERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_amountArray", "type": "uint256[]" }, { "internalType": "address[]", "name": "_userAddress", "type": "address[]" } ], "name": "mintGTToAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC1155BatchReceived", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC1155Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC721Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "toggleOnlyAllowWhitelist", "outputs": [], "stateMutability": "payable", "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": "_nft", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "transferNft", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_isGovernanceActive", "type": "bool" } ], "name": "updateGovernanceActive", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_quorum", "type": "uint256" }, { "internalType": "uint256", "name": "_threshold", "type": "uint256" } ], "name": "updateGovernanceSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contract", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "updateProposalAndExecution", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_isTokenTransferable", "type": "bool" } ], "name": "updateTokenTransferability", "outputs": [], "stateMutability": "payable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
608080604052346100c75760016066556000549060ff8260081c16610075575060ff8082161061003a575b604051612fac9081620000cd8239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a13861002a565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe608080604052600436101561001d575b50361561001b57600080fd5b005b600090813560e01c90816301ffc9a7146120cf5750806306fdde0314612015578063095ea7b314611fee578063150b7a0214611f9757806318160ddd14611f7957806323b872dd14611e53578063248a9ca314611e265780632f2ff15d14611dc4578063313ce56714611da8578063360db69b14611be057806336568abe14611b4d5780633950935114611afd5780634c1ff9ab14611a57578063515f0c1414611926578063667ab70314611889578063668132c9146117755780636ffc166f1461134457806370a082311461130b57806379c65068146112c15780638728c87d1461129257806391d148541461124657806395d89b4114611172578063966dae0e146111495780639dc29fac14610e2d578063a0619e3714610e04578063a217fddf14610de8578063a457c2d714610d43578063a9059cbb14610ca5578063b8cd71f914610c25578063bc197c8114610b99578063d02ea86514610b71578063d11eccd614610a7a578063d3cff1ba14610a4a578063d547741f14610a09578063da2e9c72146102a8578063dd62ed3e14610259578063e6f002a8146102255763f23a6e610361000f57346102225760a0366003190112610222576101e161216c565b506101ea612182565b506084356001600160401b03811161021e5761020a903690600401612198565b505060405163f23a6e6160e01b8152602090f35b5080fd5b80fd5b50806003193601126102225730330361022257606d5462ff000060ff8260101c161560101b169062ff0000191617606d5580f35b50346102225760403660031901126102225761027361216c565b604061027d612182565b9260018060a01b03809316815260346020522091166000526020526020604060002054604051908152f35b503461022257610140366003190112610222576102c361216c565b6102cb612182565b916044356001600160401b03811161021e576102eb903690600401612491565b926064356001600160401b038111610a055761030b903690600401612491565b9260c435908115158203610a005760e4358015158103610a005761010435908115158203610a005761012435926001600160a01b0384168403610a005786549560ff8760081c1615968780986109f3575b80156109dc575b156109805760ff19811660011789558761096f575b50606880546001600160a01b039384166001600160a01b03199182161790915560678054929093169116179055604051936103b285612223565b88855260208501889052608435604086015260a435606086015215156080850152151560a0840152151560c08301526001600160a01b031660e082015284516001600160401b03811161095b5761040a6069546122cf565b601f811161090e575b50806020601f821160011461089d578591610892575b508160011b916000199060031b1c1916176069555b60208101518051906001600160401b03821161087e578190610461606a546122cf565b601f8111610825575b50602090601f83116001146107af5786926107a4575b50508160011b916000199060031b1c191617606a555b6040810151606b556060810151606c556080810151151590606d5461ff0060a0830151151560081b169060ff62ff000060c0850151151560101b169360e06301000000600160b81b0391015160181b1694169060018060b81b03191617171717606d5561051260ff835460081c1661050d8161290f565b61290f565b83516001600160401b0381116106c45761052d6036546122cf565b601f8111610753575b50602094601f82116001146106e35794839495829394926106d8575b50508160011b916000199060031b1c1916176036555b82516001600160401b0381116106c4576105836037546122cf565b601f8111610673575b506020601f8211600114610604578394829394926105f9575b50508160011b916000199060031b1c1916176037555b6105c25780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b0151905038806105a5565b60378452600080516020612f3783398151915290601f198316855b81811061065b57509583600195969710610642575b505050811b016037556105bb565b015160001960f88460031b161c19169055388080610634565b9192602060018192868b01518155019401920161061f565b60378452600080516020612f37833981519152601f830160051c810191602084106106ba575b601f0160051c01905b8181106106af575061058c565b8481556001016106a2565b9091508190610699565b634e487b7160e01b83526041600452602483fd5b015190503880610552565b60368452601f19821695600080516020612eb783398151915291855b88811061073b57508360019596979810610722575b505050811b01603655610568565b015160001960f88460031b161c19169055388080610714565b919260206001819286850151815501940192016106ff565b60368452600080516020612eb7833981519152601f830160051c8101916020841061079a575b601f0160051c01905b81811061078f5750610536565b848155600101610782565b9091508190610779565b015190503880610480565b606a8752869350600080516020612f1783398151915291905b601f198416851061080a576001945083601f198116106107f1575b505050811b01606a55610496565b015160001960f88460031b161c191690553880806107e3565b818101518355602094850194600190930192909101906107c8565b606a8752909150600080516020612f17833981519152601f840160051c810160208510610877575b90849392915b601f830160051c8201811061086957505061046a565b888155859450600101610853565b508061084d565b634e487b7160e01b85526041600452602485fd5b905086015138610429565b60698652859250600080516020612ed7833981519152905b601f19831684106108f6576001935082601f198116106108dd575b5050811b0160695561043e565b88015160001960f88460031b161c1916905538806108d0565b888101518255602093840193600190920191016108b5565b60698552600080516020612ed7833981519152601f830160051c810160208410610954575b601f830160051c82018110610949575050610413565b868155600101610933565b5080610933565b634e487b7160e01b84526041600452602484fd5b61ffff191661010117885538610378565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156103635750600160ff821614610363565b50600160ff82161061035c565b600080fd5b8280fd5b503461022257604036600319011261022257610a47600435610a29612182565b908084526065602052610a4260016040862001546125d4565b612776565b80f35b5034610222576040366003190112610222576020610a72610a6961216c565b60243590612d2c565b604051908152f35b503461022257610a89366121c5565b9291303303610a05576001600160a01b03908116918215610b3e5716928315610b0c57928293823b15610b075760648492836040519586948593632142170760e11b8552306004860152602485015260448401525af18015610afc57610aec5750f35b610af5906121fa565b6102225780f35b6040513d84823e3d90fd5b505050fd5b6084846040519063045a4b3160e01b82526040600483015260036044830152625f746f60e81b60648301526024820152fd5b6084836040519063045a4b3160e01b825260406004830152600460448301526317db999d60e21b60648301526024820152fd5b5034610222576040366003190112610222576020610a72610b9061216c565b60243590612de5565b50346102225760a036600319011261022257610bb361216c565b50610bbc612182565b506001600160401b03604435818111610a0557610bdd903690600401612461565b5050606435818111610a0557610bf7903690600401612461565b505060843590811161021e57610c11903690600401612198565b505060405163bc197c8160e01b8152602090f35b5060203660031901126102225780610c3b612452565b303303610ca2571515606d5461ff008260081b169061ff00191617606d5560018060a01b036067541690813b15610c9e57829160448392604051948593849263089a084f60e21b845230600485015260248401525af18015610afc57610aec5750f35b5050fd5b50fd5b503461022257604036600319011261022257610cbf61216c565b81602435610cd460ff606d5460081c16612b23565b610cdf818433612b93565b6067546001600160a01b0316803b15610a0557610d15938360405180968195829463debfa06360e01b8452333060048601612b68565b03925af18015610afc57610d2f575b602060405160018152f35b610d3982916121fa565b6102225780610d24565b503461022257604036600319011261022257610d5d61216c565b60406024359233815260346020522060018060a01b03821660005260205260406000205491808310610d9557610d24920390336124d2565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608490fd5b5034610222578060031936011261022257602090604051908152f35b50346102225780600319360112610222576067546040516001600160a01b039091168152602090f35b503461022257604036600319011261022257610e4761216c565b3360009081527f78a36a2b1dc6f19dbe25768811b1b1ccd52e2404681c79e81f7962ace7639cb560209081526040909120546024939284359291600080516020612f578339815191529060ff1615610f8e57506001600160a01b0316918215610f4057828452603382526040842054818110610ef1579181600080516020612ef783398151915292859487968752603384520360408620558060355403603555604051908152a380f35b60405162461bcd60e51b8152600481018490526022818801527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b8152600481018390526021818701527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b828691610f9a33612813565b90604051610fa78161223f565b604281528381019160603684378151156111345760308353815160019081101561111f57607860218401536041905b8082116110b157505061108157604861107d93611052936110619360405195869376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a860152611029815180928c603789019101612124565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190612124565b0103602881018452018261225a565b60405193849362461bcd60e51b85526004850152830190612147565b0390fd5b606485856040519162461bcd60e51b8352816004840152820152600080516020612e978339815191526044820152fd5b9091600f8116601081101561110a576f181899199a1a9b1b9c1cb0b131b232b360811b901a6110e084866127ec565b5360041c9180156110f5576000190190610fd6565b87634e487b7160e01b60005260116004526000fd5b88634e487b7160e01b60005260326004526000fd5b86634e487b7160e01b60005260326004526000fd5b85634e487b7160e01b60005260326004526000fd5b50346102225780600319360112610222576068546040516001600160a01b039091168152602090f35b5034610222578060031936011261022257604051600090603754611195816122cf565b80835260019180831690811561121e57506001146111d6575b6111d2836111be8187038261225a565b604051918291602083526020830190612147565b0390f35b603760009081526020945091600080516020612f378339815191525b82841061120b575050508101909101906111be816111ae565b80548585018701529285019281016111f2565b6111d295506111be93506020915091849260ff191682840152151560051b82010193506111ae565b5034610222576040366003190112610222576040611262612182565b9160043581526065602052209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b506020366003190112610222576112a7612452565b30330361021e5760ff8019606d54169115151617606d5580f35b5034610222576040366003190112610222576112db61216c565b6068546001600160a01b031633148015611302575b1561021e57610a479060243590612a69565b503033146112f0565b5034610222576020366003190112610222576020906040906001600160a01b0361133361216c565b168152603383522054604051908152f35b5034610222576040366003190112610222576001600160401b039060043582811161021e573660238201121561021e578060040135926113838461243b565b91611391604051938461225a565b848352602083016024819660051b830101913683116114e857602401905b82821061176557505050602435908111610a055736602382011215610a055780600401356113dc8161243b565b916113ea604051938461225a565b81835260208301906024829360051b8201019036821161176157602401915b8183106117415750505030330361173d578251825180820361171f5750508251845b8181106114ec5750506067546001600160a01b039590861692833b156114e85760405163b9d3970560e01b815230600482015260606024820152945160648601819052608486019290875b8181106114d2575050506020906003198684030160448701525191828152019190855b8181106114ba57868087818180890381838c5af18015610afc57610aec5750f35b82518816845260209384019390920191600101611499565b8251855260209485019490920191600101611476565b8580fd5b6115146001600160a01b036115018387612a55565b511661150d8388612a55565b5190612a69565b6067546001600160a01b039081169061152d8387612a55565b51169060018060a01b036068541691604051633b188ab560e01b815230600482015261018081602481875afa908115611714578a916116f3575b5060c001516001600160a01b0316916024610180611585878c612a55565b519560405192838092633b188ab560e01b82523060048301525afa9081156116b7578b916116c2575b5060e001516001600160a01b03908116906020906115cc888c612a55565b51166024604051809481936317aa5fb760e11b835260048301525afa9081156116b7578b9161167d575b50813b1561167957918a60e4928195946040519788968795637c28875f60e01b87523060048801526024870152604486015283606486015242608486015260a4850152151560c48401525af1801561166e5790879161165a575b505060010161142b565b611663906121fa565b6114e8578538611650565b6040513d89823e3d90fd5b8a80fd5b90506020813d6020116116af575b816116986020938361225a565b81010312611679576116a990612983565b386115f6565b3d915061168b565b6040513d8d823e3d90fd5b6116e691506101803d610180116116ec575b6116de818361225a565b810190612990565b386115ae565b503d6116d4565b61170e91506101803d610180116116ec576116de818361225a565b38611567565b6040513d8c823e3d90fd5b6044925060405191631f4bb7c160e31b835260048301526024820152fd5b8380fd5b82356001600160a01b0381168103610a0057815260209283019201611409565b8680fd5b81358152602091820191016113af565b503461022257604036600319011261022257600435602435303303610a0557811561186e5780156118105761271080831161185357811161181057606b829055606c8190556067546001600160a01b031691839190833b15610a0557606490836040519586948593630dff04f760e31b8552306004860152602485015260448401525af18015610afc57611807575080f35b610a47906121fa565b604051631aac77f760e31b815290819061107d9060048301919060408352600a60408401526917dd1a1c995cda1bdb1960b21b6060840152602060808401930152565b604051631aac77f760e31b81528061107d8560048301612afb565b604051631aac77f760e31b81528061107d8460048301612afb565b50346102225780600319360112610222576118cf6118a5612309565b6118ad6123b4565b606b5490606c546118dd606d5492604051968796610100808952880190612147565b908682036020880152612147565b6040850193909352606084015260ff81811615156080850152600882901c8116151560a0850152601082901c16151560c084015260181c6001600160a01b031660e08301520390f35b503461022257806003193601126102225760e060405161194581612223565b60608152606060208201528260408201528260608201528260808201528260a08201528260c08201520152611a1560405161197f81612223565b611987612309565b81526119916123b4565b602082019081526020606b549160408401928352606c549060608501918252606d54916080860160ff84161515815260a087019060ff8560081c161515825260c088019260ff8660101c1615158452611a2860e08a019560018060a01b03809860181c1687526040519b8c9b8a8d52518c6101009b8c9101526101208d0190612147565b90518b8203601f190160408d0152612147565b975160608a015251608089015251151560a088015251151560c087015251151560e08601525116908301520390f35b50602036600319011261022257611a6c61216c565b30330361021e57600080516020612f57833981519152908183526065602052604083209060018060a01b03169081845260205260ff60408420541615611ab0578280f35b81835260656020526040832081845260205260408320600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a438808280f35b503461022257604036600319011261022257610d2490611b46611b1e61216c565b9133815260346020526040812060018060a01b038416825260205260406024359120546124af565b90336124d2565b503461022257604036600319011261022257611b67612182565b336001600160a01b03821603611b8357610a4790600435612776565b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b50606036600319011261022257611bf561216c565b60249081356001600160401b03811161173d573660238201121561173d57611c269036908481600401359101612298565b9160018060a01b0380606854168560405191633b188ab560e01b83523060048401528285816101809485945af1801561166e57839260e0928992611d8b575b50500151163303611d5957600260665414611d15576002606655808316908115908115611d07575b50611cd057848080868660208251920190604435905af13d15611ccb57611cbe611cb63d61227d565b60405161225a565b1561022257600160665580f35b611cbe565b608492506040519163045a4b3160e01b835260406004840152600960448401526817d8dbdb9d1c9858dd60ba1b6064840152820152fd5b905060675416811438611c8d565b60405162461bcd60e51b815260206004820152601f818401527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b60405162461bcd60e51b815260206004820152600b818401526a4f6e6c7920476e6f73697360a81b6044820152606490fd5b611da19250803d106116ec576116de818361225a565b3880611c65565b5034610222578060031936011261022257602060405160128152f35b503461022257604036600319011261022257600435611de1612182565b8183526065602052611df960016040852001546125d4565b8183526065602052604083209060018060a01b03169081845260205260ff60408420541615611ab0578280f35b50346102225760203660031901126102225760016040602092600435815260658452200154604051908152f35b503461022257611e62366121c5565b9190611e7560ff606d5460081c16612b23565b6001600160a01b03828116855260346020908152604080872033885290915285205460018101611f1a575b50611eac848385612b93565b6067541691823b15611f16579184939184611ee096946040519788958694859363debfa06360e01b85523060048601612b68565b03925af1908115611f0a5750611efb57602060405160018152f35b611f04906121fa565b38610d24565b604051903d90823e3d90fd5b8480fd5b848110611f345784611f2e910333856124d2565b38611ea0565b60405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606490fd5b50346102225780600319360112610222576020603554604051908152f35b503461022257608036600319011261022257611fb161216c565b50611fba612182565b506064356001600160401b03811161021e57611fda903690600401612198565b5050604051630a85bd0160e11b8152602090f35b503461022257604036600319011261022257610d2461200b61216c565b60243590336124d2565b503461022257806003193601126102225760405181603654612036816122cf565b808452906001908181169081156120a75750600114612060575b6111d2846111be8188038261225a565b6036835260209450600080516020612eb78339815191525b82841061209457505050816111d2936111be9282010193612050565b8054858501870152928501928101612078565b6111d296506111be9450602092508593915060ff191682840152151560051b82010193612050565b90503461021e57602036600319011261021e5760043563ffffffff60e01b8116809103610a055760209250637965db0b60e01b8114908115612113575b5015158152f35b6301ffc9a760e01b1490503861210c565b60005b8381106121375750506000910152565b8181015183820152602001612127565b9060209161216081518092818552858086019101612124565b601f01601f1916010190565b600435906001600160a01b0382168203610a0057565b602435906001600160a01b0382168203610a0057565b9181601f84011215610a00578235916001600160401b038311610a005760208381860195010111610a0057565b6060906003190112610a00576001600160a01b03906004358281168103610a0057916024359081168103610a00579060443590565b6001600160401b03811161220d57604052565b634e487b7160e01b600052604160045260246000fd5b61010081019081106001600160401b0382111761220d57604052565b608081019081106001600160401b0382111761220d57604052565b601f909101601f19168101906001600160401b0382119082101761220d57604052565b6001600160401b03811161220d57601f01601f191660200190565b9291926122a48261227d565b916122b2604051938461225a565b829481845281830111610a00578281602093846000960137010152565b90600182811c921680156122ff575b60208310146122e957565b634e487b7160e01b600052602260045260246000fd5b91607f16916122de565b604051906000826069549161231d836122cf565b8083526001938085169081156123935750600114612345575b506123439250038361225a565b565b60696000908152600080516020612ed783398151915294602093509091905b81831061237b575050612343935082010138612336565b85548884018501529485019487945091830191612364565b905061234394506020925060ff191682840152151560051b82010138612336565b60405190600082606a54916123c8836122cf565b80835260019380851690811561239357506001146123ed57506123439250038361225a565b606a6000908152600080516020612f1783398151915294602093509091905b818310612423575050612343935082010138612336565b8554888401850152948501948794509183019161240c565b6001600160401b03811161220d5760051b60200190565b600435908115158203610a0057565b9181601f84011215610a00578235916001600160401b038311610a00576020808501948460051b010111610a0057565b9080601f83011215610a00578160206124ac93359101612298565b90565b919082018092116124bc57565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0390811691821561258357169182156125335760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260348252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b60009080825260209060658252604092838120338252835260ff8482205416156125fe5750505050565b61260733612813565b918451906126148261223f565b6042825284820192606036853782511561276257603084538251906001918210156127625790607860218501536041915b8183116126f4575050506126c457604861107d9386936126a893612699985198899376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a860152611029815180928c603789019101612124565b0103602881018752018561225a565b5192839262461bcd60e51b845260048401526024830190612147565b60648486519062461bcd60e51b82528060048301526024820152600080516020612e978339815191526044820152fd5b909192600f8116601081101561274e576f181899199a1a9b1b9c1cb0b131b232b360811b901a61272485876127ec565b5360041c92801561273a57600019019190612645565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b906000918083526065602052604083209160018060a01b03169182845260205260ff6040842054166127a757505050565b8083526065602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9081518110156127fd570160200190565b634e487b7160e01b600052603260045260246000fd5b60405190606082016001600160401b0381118382101761220d57604052602a82526020820160403682378251156127fd576030905381516001908110156127fd57607860218401536029905b8082116128a157505061286f5790565b606460405162461bcd60e51b81526020600482015260206024820152600080516020612e978339815191526044820152fd5b9091600f811660108110156128fa576f181899199a1a9b1b9c1cb0b131b232b360811b901a6128d084866127ec565b5360041c9180156128e557600019019061285f565b60246000634e487b7160e01b81526011600452fd5b60246000634e487b7160e01b81526032600452fd5b1561291657565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b51906001600160a01b0382168203610a0057565b51908115158203610a0057565b80916101809283910312610a00576040519182016001600160401b0381118382101761220d57604052805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a08301526129fb60c0820161296f565b60c0830152612a0c60e0820161296f565b60e08301526101008082015190830152610120612a2a818301612983565b90830152610140612a3c818301612983565b90830152612a4e610160809201612983565b9082015290565b80518210156127fd5760209160051b010190565b6001600160a01b0316908115612ab657600080516020612ef7833981519152602082612a996000946035546124af565b6035558484526033825260408420818154019055604051908152a3565b60405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606490fd5b91906040835260076040840152665f71756f72756d60c81b6060840152602060808401930152565b15612b2a57565b60405162461bcd60e51b8152602060048201526016602482015275546f6b656e204e6f6e205472616e7366657261626c6560501b6044820152606490fd5b6001600160a01b03918216815291811660208301529091166040820152606081019190915260800190565b6001600160a01b03908116918215612c9e5716918215612c4d5760008281526033602052604081205491808310612bf95760408282600080516020612ef783398151915295876020965260338652038282205586815220818154019055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b90816020910312610a00575160ff81168103610a005790565b60ff166012039060ff82116124bc57565b60ff16604d81116124bc57600a0a90565b6000906001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8103612d8c57505060125b60ff8116601203612d67575090565b612d73612d7891612d0a565b612d1b565b908181029181830414901517156124bc5790565b60206004916040519283809263313ce56760e01b82525afa918215611f0a5791612db7575b50612d58565b612dd8915060203d8111612dde575b612dd0818361225a565b810190612cf1565b38612db1565b503d612dc6565b6000906001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8103612e4d57505060125b60ff8116601203612e20575090565b612d73612e2c91612d0a565b908115612e37570490565b634e487b7160e01b600052601260045260246000fd5b60206004916040519283809263313ce56760e01b82525afa918215611f0a5791612e78575b50612e11565b612e90915060203d8111612dde57612dd0818361225a565b38612e7256fe537472696e67733a20686578206c656e67746820696e73756666696369656e744a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b87fb4302e8e91f9110a6554c2c0a24601252c2a42c2220ca988efcfe399914308ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a5142a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae60dabe9ef7b41f3c1cc359b009558ac4700a6bef8c5a11b51767e4980ed66341a2646970667358221220bf23e0080e1387964d7cac0ff513d3e536aa1f618371681a4c608e0eb9195d5564736f6c63430008120033