[ { "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": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "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": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_tokenIdTracker", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_tokensMinted", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "emitterAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "erc721DaoDetails", "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": "uint256", "name": "maxTokensPerUser", "type": "uint256" }, { "internalType": "bool", "name": "isTransferable", "type": "bool" }, { "internalType": "bool", "name": "isNftTotalSupplyUnlimited", "type": "bool" }, { "internalType": "bool", "name": "isGovernanceActive", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getERC721DAOdetails", "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": "uint256", "name": "maxTokensPerUser", "type": "uint256" }, { "internalType": "bool", "name": "isTransferable", "type": "bool" }, { "internalType": "bool", "name": "isNftTotalSupplyUnlimited", "type": "bool" }, { "internalType": "bool", "name": "isGovernanceActive", "type": "bool" }, { "internalType": "bool", "name": "onlyAllowWhitelist", "type": "bool" }, { "internalType": "address", "name": "ownerAddress", "type": "address" } ], "internalType": "struct Helper.ERC721DAOdetails", "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": "string", "name": "_DaoName", "type": "string" }, { "internalType": "string", "name": "_DaoSymbol", "type": "string" }, { "internalType": "address", "name": "_factoryAddress", "type": "address" }, { "internalType": "address", "name": "_emitterAddress", "type": "address" }, { "internalType": "uint256", "name": "_quorum", "type": "uint256" }, { "internalType": "uint256", "name": "_threshold", "type": "uint256" }, { "internalType": "uint256", "name": "_maxTokensPerUser", "type": "uint256" }, { "internalType": "bool", "name": "_isTransferable", "type": "bool" }, { "internalType": "bool", "name": "_isNftTotalSupplyUnlimited", "type": "bool" }, { "internalType": "bool", "name": "_isGovernanceActive", "type": "bool" }, { "internalType": "bool", "name": "_onlyAllowWhitelist", "type": "bool" }, { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "initializeERC721", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_amountArray", "type": "uint256[]" }, { "internalType": "string[]", "name": "_tokenURI", "type": "string[]" }, { "internalType": "address[]", "name": "_userAddress", "type": "address[]" } ], "name": "mintGTToAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "string", "name": "_tokenURI", "type": "string" }, { "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_salePrice", "type": "uint256" } ], "name": "royaltyInfo", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "uint96", "name": "_royaltyFeesInBips", "type": "uint96" } ], "name": "setRoyalty", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "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": "uint256", "name": "_maxTokensPerUser", "type": "uint256" } ], "name": "updateMaxTokensPerUser", "outputs": [], "stateMutability": "payable", "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": "_isNftTransferable", "type": "bool" } ], "name": "updateTokenTransferability", "outputs": [], "stateMutability": "payable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60808060405234620000cb576001609a556000549060ff8260081c1662000079575060ff808216106200003d575b604051613e1e9081620000d18239f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1386200002d565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe608080604052600436101561001d575b50361561001b57600080fd5b005b600090813560e01c90816301ffc9a7146128b45750806306fdde03146127fa578063081812fc146127db578063095ea7b314612666578063150b7a021461260f57806323b872dd1461257e578063248a9ca3146125515780632a55205a146124aa5780632f2ff15d14612444578063360db69b146122ee57806336568abe1461225b5780633d8d9270146120ea57806342842e0e146120c257806342966c6814611e755780634a7345b414611e0e5780634c1ff9ab14611d4c5780635bfc74d114611c98578063611b2fed14611a2a5780636352211e146119f9578063668132c9146118f557806370a082311461185f5780637aa4488f146110a95780638728c87d146110715780638f2fc60b14610f6257806391d1485414610f1657806395d89b4114610e46578063966dae0e14610e1d57806398542ae214610df457806398bcede914610dd65780639f090dce146107f0578063a217fddf146107d4578063a22cb46514610701578063b88d4fde146106ae578063b8cd71f914610634578063bc197c81146105a8578063c87b56dd146104be578063d02ea86514610496578063d11eccd61461039b578063d3cff1ba1461036b578063d547741f1461032a578063e6f002a8146102f4578063e985e9c5146102a0578063ece6e244146102675763f23a6e610361000f57346102645760a0366003190112610264576102236129b3565b5061022c6129c9565b506084356001600160401b0381116102605761024c9036906004016129df565b505060405163f23a6e6160e01b8152602090f35b5080fd5b80fd5b5034610264576020366003190112610264576020906040906001600160a01b0361028f6129b3565b16815260a583522054604051908152f35b5034610264576040366003190112610264576102ba6129b3565b60406102c46129c9565b9260018060a01b038093168152606a602052209116600052602052602060ff604060002054166040519015158152f35b5080600319360112610264573033036102645760a45463ff00000060ff8260181c161560181b169063ff00000019161760a45580f35b50346102645760403660031901126102645761036860043561034a6129c9565b9080845260976020526103636001604086200154612e0b565b612fad565b80f35b503461026457604036600319011261026457602061039361038a6129b3565b60243590613b9c565b604051908152f35b5034610264576103aa36612a0c565b9291303303610492576001600160a01b0390811691821561045f571692831561042d57928293823b156104285760648492836040519586948593632142170760e11b8552306004860152602485015260448401525af1801561041d5761040d5750f35b61041690612a72565b6102645780f35b6040513d84823e3d90fd5b505050fd5b6084846040519063045a4b3160e01b82526040600483015260036044830152625f746f60e81b60648301526024820152fd5b6084836040519063045a4b3160e01b825260406004830152600460448301526317db999d60e21b60648301526024820152fd5b8280fd5b50346102645760403660031901126102645760206103936104b56129b3565b60243590613c57565b50346102645760209081600319360112610264576040906004356104e96104e482612dee565b612d5d565b8152609c8352209060405191826000825461050381612b9b565b93848452600191868382169182600014610586575050600114610547575b505061052f92500383612b08565b61054360405192828493845283019061298e565b0390f35b85925060005281600020906000915b85831061056e57505061052f93508201013880610521565b80548389018501528794508693909201918101610556565b925093505061052f94915060ff191682840152151560051b8201013880610521565b50346102645760a0366003190112610264576105c26129b3565b506105cb6129c9565b506001600160401b03604435818111610492576105ec903690600401612d2d565b505060643581811161049257610606903690600401612d2d565b5050608435908111610260576106209036906004016129df565b505060405163bc197c8160e01b8152602090f35b506020366003190112610264578061064a612d07565b3033036106ab57151560ff1960a4541660ff82161760a45560018060a01b03609e541690813b156106a757829160448392604051948593849263089a084f60e21b845230600485015260248401525af1801561041d5761040d5750f35b5050fd5b50fd5b5034610264576080366003190112610264576106c86129b3565b6106d06129c9565b606435916001600160401b0383116106fd576106f3610368933690600401612b7d565b9160443591613a75565b8380fd5b50346102645760403660031901126102645761071b6129b3565b602435908115158092036107cf576001600160a01b03169033821461078e57338352606a6020526040832082600052602052604060002060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b60405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606490fd5b600080fd5b5034610264578060031936011261026457602090604051908152f35b5034610264576060366003190112610264576001600160401b039060043582811161026057366023820112156102605780600401359261082f84612d16565b9161083d6040519384612b08565b848352602083016024819660051b83010191368311610a0057602401905b828210610dc6575050506024358181116106fd57366023820112156106fd57806004013561088881612d16565b916108966040519384612b08565b8183526024602084019260051b82010190368211610bfa5760248101925b828410610d8957505050506044359182116106fd57366023830112156106fd578160040135906108e382612d16565b926108f16040519485612b08565b82845260208401906024829460051b82010190368211610d8557602401915b818310610d6557505050303303610d615780518351808203610d4357505083518351808203610d43575050825185905b808210610a04575050609e546001600160a01b039690871693909150833b15610a005760405163b9d3970560e01b815230600482015260606024820152945160648601819052608486019290875b8181106109ea575050506020906003198684030160448701525191828152019190855b8181106109d257868087818180890381838c5af1801561041d5761040d5750f35b825188168452602093840193909201916001016109b1565b825185526020948501949092019160010161098e565b8580fd5b91969094959260ff60a45460081c1615610caf575b835b610a25878961360e565b51811015610a9557609b54600181018111610a81576001908101609b819055909190610a64906001600160a01b03610a5d8b8b61360e565b51166132d7565b610a7b609b54610a748a8d61360e565b519061364a565b01610a1b565b634e487b7160e01b86526011600452602486fd5b50609e549197939695909392916001600160a01b0390811690610ab8838861360e565b51169060018060a01b03609d541691604051633b188ab560e01b815230600482015261018081602481875afa908115610ca4578b91610c83575b5060c001516001600160a01b0316916024610180610b10878d61360e565b519560405192838092633b188ab560e01b82523060048301525afa908115610c47578c91610c52575b5060e001516001600160a01b0390811690602090610b57888d61360e565b51166024604051809481936317aa5fb760e11b835260048301525afa908115610c47578c91610c0d575b50813b15610c0957918b60e4928195946040519788968795637c28875f60e01b87523060048801526024870152604486015283606486015242608486015260a4850152151560c48401525af18015610bfe57908891610be6575b505060010190610940565b610bef90612a72565b610bfa578638610bdb565b8680fd5b6040513d8a823e3d90fd5b8b80fd5b90506020813d602011610c3f575b81610c2860209383612b08565b81010312610c0957610c39906131c4565b38610b81565b3d9150610c1b565b6040513d8e823e3d90fd5b610c7691506101803d61018011610c7c575b610c6e8183612b08565b8101906131d1565b38610b39565b503d610c64565b610c9e91506101803d61018011610c7c57610c6e8183612b08565b38610af2565b6040513d8d823e3d90fd5b609d54604051633b188ab560e01b81523060048201529061018090829060249082906001600160a01b03165afa908115610d3857610d12916020918791610d17575b500151610d0b609b54610d048a8c61360e565b5190613036565b1115613296565b610a19565b610d3291506101803d61018011610c7c57610c6e8183612b08565b38610cf1565b6040513d87823e3d90fd5b6044925060405191631f4bb7c160e31b835260048301526024820152fd5b8480fd5b82356001600160a01b03811681036107cf57815260209283019201610910565b8780fd5b8335868111610dc257820136604382011215610dc257602091610db783923690604460248201359101612b46565b8152019301926108b4565b8880fd5b813581526020918201910161085b565b50346102645780600319360112610264576020609b54604051908152f35b5034610264578060031936011261026457609e546040516001600160a01b039091168152602090f35b5034610264578060031936011261026457609d546040516001600160a01b039091168152602090f35b5034610264578060031936011261026457604051600090606654610e6981612b9b565b808352600191808316908115610eee5750600114610ea6575b61054383610e9281870382612b08565b60405191829160208352602083019061298e565b606660009081526020945091600080516020613d098339815191525b828410610edb57505050810190910190610e9281610e82565b8054858501870152928501928101610ec2565b6105439550610e9293506020915091849260ff191682840152151560051b8201019350610e82565b5034610264576040366003190112610264576040610f326129c9565b9160043581526097602052209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b503461026457604036600319011261026457610f7c6129b3565b6024356001600160601b038116918282036106fd573033036106fd576127108311611019576001600160a01b0316918215610fd8576020604051610fbf81612ab7565b848152015260a01b6001600160a01b0319161760985580f35b60405162461bcd60e51b815260206004820152601960248201527822a921991c9c189d1034b73b30b634b2103932b1b2b4bb32b960391b6044820152606490fd5b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b50602036600319011261026457611086612d07565b3033036102605762ff000060a45491151560101b169062ff000019161760a45580f35b503461026457610180366003190112610264576004356001600160401b038111610260576110db9036906004016129df565b90916024356001600160401b038111610260576110fc9036906004016129df565b936001600160a01b039360443585811681036107cf576064359580871687036107cf5760e4359182151583036107cf576101043580151581036107cf576101243580151581036107cf57610144359182151583036107cf57610164359385851685036107cf578a5460ff8160081c16159c8d809e611852575b801561183b575b156117df5760ff1982166001178d5587918e6117ce575b508160018060a01b0319931683609d541617609d551690609e541617609e55604051956111bf87612a9b565b6111ca36898b612b46565b87526111d7368e8c612b46565b6020880152608435604088015260a435606088015260c4356080880152151560a0870152151560c0860152151560e085015215156101008401521661012082015280518051906001600160401b0382116116e0578190611238609f54612b9b565b601f8111611775575b50602090601f83116001146116ff5788926116f4575b50508160011b916000199060031b1c191617609f555b60208101518051906001600160401b0382116116e05761128e60a054612b9b565b601f8111611693575b50602090601f831160011461161557918061135e9796949261135696948a9261160a575b50508160011b916000199060031b1c19161760a0555b604081015160a155606081015160a255608081015160a35560a081015115159060a45461ff0060c0830151151560081b1662ff000060e0840151151560101b169160ff63ff000000610100860151151560181b1694610120600160201b600160c01b0391015160201b1695169060018060c01b031916171717171760a4553691612b46565b943691612b46565b9161137860ff835460081c1661137381613150565b613150565b83516001600160401b03811161152a57611393606554612b9b565b601f81116115b9575b50602094601f821160011461154957948394958293949261153e575b50508160011b916000199060031b1c1916176065555b82516001600160401b03811161152a576113e9606654612b9b565b601f81116114d9575b506020601f821160011461146a5783948293949261145f575b50508160011b916000199060031b1c1916176066555b6114285780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b01519050388061140b565b60668452600080516020613d0983398151915290601f198316855b8181106114c1575095836001959697106114a8575b505050811b01606655611421565b015160001960f88460031b161c1916905538808061149a565b9192602060018192868b015181550194019201611485565b60668452600080516020613d09833981519152601f830160051c81019160208410611520575b601f0160051c01905b81811061151557506113f2565b848155600101611508565b90915081906114ff565b634e487b7160e01b83526041600452602483fd5b0151905038806113b8565b60658452601f19821695600080516020613d4983398151915291855b8881106115a157508360019596979810611588575b505050811b016065556113ce565b015160001960f88460031b161c1916905538808061157a565b91926020600181928685015181550194019201611565565b60658452600080516020613d49833981519152601f830160051c81019160208410611600575b601f0160051c01905b8181106115f5575061139c565b8481556001016115e8565b90915081906115df565b0151905038806112bb565b60a08852600080516020613d898339815191529190885b601f198516811061167b57509261135e97969492600192611356979583601f19811610611662575b505050811b0160a0556112d1565b015160001960f88460031b161c19169055388080611654565b9192602060018192868501518155019401920161162c565b60a08852600080516020613d89833981519152601f840160051c8101602085106116d9575b601f830160051c820181106116ce575050611297565b8981556001016116b8565b50806116b8565b634e487b7160e01b87526041600452602487fd5b015190503880611257565b609f8952889350600080516020613d6983398151915291905b601f198416851061175a576001945083601f19811610611741575b505050811b01609f5561126d565b015160001960f88460031b161c19169055388080611733565b81810151835560209485019460019093019290910190611718565b609f8952909150600080516020613d69833981519152601f840160051c8101602085106117c7575b90849392915b601f830160051c820181106117b9575050611241565b8a81558594506001016117a3565b508061179d565b61ffff1916610101178d5538611193565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b15801561117c5750600160ff83161461117c565b50600160ff831610611175565b5034610264576020366003190112610264576001600160a01b036118816129b3565b16801561189e578160409160209352606883522054604051908152f35b60405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608490fd5b50346102645761190436612a41565b903033036104925780156119dc57811561197c576127108082116119c157821161197c579081839260a1558160a25560018060a01b03609e541691823b156104285760648492836040519586948593630dff04f760e31b8552306004860152602485015260448401525af1801561041d5761040d5750f35b604051631aac77f760e31b8152806119bd8460048301919060408352600a60408401526917dd1a1c995cda1bdb1960b21b6060840152602060808401930152565b0390fd5b604051631aac77f760e31b8152806119bd8460048301613622565b604051631aac77f760e31b81529081906119bd9060048301613622565b5034610264576020366003190112610264576020611a18600435612da4565b6040516001600160a01b039091168152f35b503461026457606036600319011261026457611a446129b3565b6024919082356001600160401b03811161049257611a669036906004016129df565b9190604435946002609a5414611c54576002609a55609d546001600160a01b039081169633889003610bfa578185169485885260a5602052611aac8260408a2054613036565b60a35410611c3c57879860ff60a45460081c1615611bcb575b50975086975b818910611b79575086975084875260a5602052611aed60408820918254613036565b9055609e541690609b5493823b15610bfa5760a4879591878793604051998a9889978895637cdb30bd60e01b875260048701523090860152608060448601528160848601528585013782820184018590526064830152601f01601f191681010301925af1801561041d57611b65575b506001609a5580f35b611b6e90612a72565b610264578038611b5c565b609b98895490600191828101809111611bb8578b611b9e82611bb0938e9f55866132d7565b54611baa368c8b612b46565b9061364a565b019850611acb565b634e487b7160e01b8b526011600452868bfd5b6040518091633b188ab560e01b825230600483015281876101809384935afa8015611c3157611c0e926020928c92611c14575b50500151610d0b84609b54613036565b38611ac5565b611c2a9250803d10610c7c57610c6e8183612b08565b3880611bfe565b6040513d8c823e3d90fd5b60405163357ea64b60e11b8152600481018790528490fd5b606490601f6040519162461bcd60e51b8352602060048401528201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b5034610264578060031936011261026457611ce2611cb4612bd5565b611cbc612c80565b60a1549060a25460a35490611cf060a45493604051978897610140808a5289019061298e565b90878203602089015261298e565b9360408601526060850152608084015260ff8116151560a084015260ff8160081c16151560c084015260ff8160101c16151560e084015260ff8160181c16151561010084015260018060a01b039060201c166101208301520390f35b50602036600319011261026457611d616129b3565b303303610260576001600160a01b031660008181527f86b54331ecf4e6e85bb5306073cdbfecc5cb59d9b27ec88f397f5905f23592296020526040902054600080516020613dc9833981519152919060ff1615611dbc578280f35b8160005260976020526040600020816000526020526040600020600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d600080a438808280f35b50602036600319011261026457806004353033036106ab5760a3819055609e546001600160a01b0316803b156106a75760405163d1d3d4f160e01b81529183918391829084908290611e64903060048401612a57565b03925af1801561041d5761040d5750f35b5034610264576020806003193601126102605760043590600080516020613dc98339815191528060005260978252604060002033600052825260ff6040600020541615611f3257508290611ec883612da4565b50611ed283612da4565b83835260698252604080842080546001600160a01b03199081169091556001600160a01b039092168085526068845281852080546000190190558585526067909352832080549091169055600080516020613da98339815191528280a480f35b90611f3c33613054565b91604051611f4981612aed565b604281528281019160603684378151156120ac576030835381516001908110156120ac57607860218401536041905b80821161205257505061202157611ff1936120009260489260405196879376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b88860152611fc8815180928a60378901910161296b565b8401917001034b99036b4b9b9b4b733903937b6329607d1b60378401525180938684019061296b565b01036028810185520183612b08565b6119bd60405192839262461bcd60e51b84526004840152602483019061298e565b6064836040519062461bcd60e51b82528060048301526024820152600080516020613d298339815191526044820152fd5b9091600f811660108110156120ac576f181899199a1a9b1b9c1cb0b131b232b360811b901a6120818486613043565b5360041c918015612096576000190190611f78565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b5034610264576103686120d436612a0c565b90604051926120e284612ad2565b858452613a75565b50346102645780600319360112610264576040519061210882612a9b565b6060825260208201606090528060408301528060608301528060808301528060a08301528060c08301528060e0830152610100908082840152610120809301526040519061215582612a9b565b61215d612bd5565b8252612167612c80565b6020830190815260a154916040840192835260a254946060850195865260a354906080860191825260a4549260a087019060ff85161515825260c088018560081c60ff161515815260e08901908660101c60ff1615158252828a01938760181c60ff1615158552858b0196600160a01b60019003809960201c1688526040519c8d809d60208252519b6101409c8d602084015261016083016122089161298e565b9051828203601f19016040840152612220919061298e565b9c5190606001525160808d01525160a08c015251151560c08b015251151560e08a015251151590880152511515908601525116908301520390f35b5034610264576040366003190112610264576122756129c9565b336001600160a01b038216036122915761036890600435612fad565b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b506060366003190112610264576123036129b3565b6024356001600160401b03811161049257612322903690600401612b7d565b9060018060a01b0380609d54168460405191633b188ab560e01b8352306004840152826024816101809485945af1801561243957839260e092889261241c575b505001511633036123e9578082169081159081156123db575b506123a357838080858560208251920190604435905af161239a61346f565b50156102645780f35b6084906040519063045a4b3160e01b825260406004830152600960448301526817d8dbdb9d1c9858dd60ba1b60648301526024820152fd5b9050609e541681143861237b565b60405162461bcd60e51b815260206004820152600b60248201526a4f6e6c7920476e6f73697360a81b6044820152606490fd5b6124329250803d10610c7c57610c6e8183612b08565b3880612362565b6040513d88823e3d90fd5b5034610264576040366003190112610264576004356124616129c9565b81835260976020526124796001604085200154612e0b565b81600052609760205260406000209060018060a01b0316908160005260205260ff6040600020541615611dbc578280f35b50346102645760406124bb36612a41565b92908152609960205220604051906124d282612ab7565b546001600160a01b0380821680845260a09290921c602084015291929015612524575b602083015161271091612511916001600160601b031690613023565b0491511661054360405192839283612a57565b915061271061251160405161253881612ab7565b609854848116825260a01c6020820152939150506124f5565b50346102645760203660031901126102645760016040602092600435815260978452200154604051908152f35b5034610264578061258e36612a0c565b906125a461259f83959495336138b1565b6137e1565b6125b260ff60a45416613843565b6125bd828286613979565b609e546001600160a01b031690813b156106fd57836125f4956040519687958694859363debfa06360e01b85523060048601613886565b03925af1801561041d57612606575080f35b61036890612a72565b5034610264576080366003190112610264576126296129b3565b506126326129c9565b506064356001600160401b038111610260576126529036906004016129df565b5050604051630a85bd0160e11b8152602090f35b5034610264576040366003190112610264576126806129b3565b602435906001600160a01b03808061269785612da4565b1692169180831461278c5780331490811561276b575b50156127005782845260696020526040842080546001600160a01b031916831790556126d883612da4565b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258480a480f35b60405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608490fd5b90508452606a6020526040842033855260205260ff604085205416386126ad565b60405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608490fd5b5034610264576020366003190112610264576020611a18600435612dc7565b50346102645780600319360112610264576040518160655461281b81612b9b565b8084529060019081811690811561288c5750600114612845575b61054384610e9281880382612b08565b6065835260209450600080516020613d498339815191525b828410612879575050508161054393610e929282010193612835565b805485850187015292850192810161285d565b6105439650610e929450602092508593915060ff191682840152151560051b82010193612835565b905034610260576020366003190112610260576004356001600160e01b03198116908181036106fd57602093506380ac58cd60e01b821491821561295a575b8215612949575b508115612938575b8115612927575b8115612917575b5015158152f35b6129219150613b38565b38612910565b905061293281613b0c565b90612909565b905061294381613b38565b90612902565b6301ffc9a760e01b149150386128fa565b635b5e139f60e01b811492506128f3565b60005b83811061297e5750506000910152565b818101518382015260200161296e565b906020916129a78151809281855285808601910161296b565b601f01601f1916010190565b600435906001600160a01b03821682036107cf57565b602435906001600160a01b03821682036107cf57565b9181601f840112156107cf578235916001600160401b0383116107cf57602083818601950101116107cf57565b60609060031901126107cf576001600160a01b039060043582811681036107cf579160243590811681036107cf579060443590565b60409060031901126107cf576004359060243590565b6001600160a01b039091168152602081019190915260400190565b6001600160401b038111612a8557604052565b634e487b7160e01b600052604160045260246000fd5b61014081019081106001600160401b03821117612a8557604052565b604081019081106001600160401b03821117612a8557604052565b602081019081106001600160401b03821117612a8557604052565b608081019081106001600160401b03821117612a8557604052565b601f909101601f19168101906001600160401b03821190821017612a8557604052565b6001600160401b038111612a8557601f01601f191660200190565b929192612b5282612b2b565b91612b606040519384612b08565b8294818452818301116107cf578281602093846000960137010152565b9080601f830112156107cf57816020612b9893359101612b46565b90565b90600182811c92168015612bcb575b6020831014612bb557565b634e487b7160e01b600052602260045260246000fd5b91607f1691612baa565b60405190600082609f5491612be983612b9b565b808352600193808516908115612c5f5750600114612c11575b50612c0f92500383612b08565b565b609f6000908152600080516020613d6983398151915294602093509091905b818310612c47575050612c0f935082010138612c02565b85548884018501529485019487945091830191612c30565b9050612c0f94506020925060ff191682840152151560051b82010138612c02565b6040519060008260a05491612c9483612b9b565b808352600193808516908115612c5f5750600114612cb95750612c0f92500383612b08565b60a06000908152600080516020613d8983398151915294602093509091905b818310612cef575050612c0f935082010138612c02565b85548884018501529485019487945091830191612cd8565b6004359081151582036107cf57565b6001600160401b038111612a855760051b60200190565b9181601f840112156107cf578235916001600160401b0383116107cf576020808501948460051b0101116107cf57565b15612d6457565b60405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606490fd5b6000908152606760205260409020546001600160a01b0316612b98811515612d5d565b612dd36104e482612dee565b6000908152606960205260409020546001600160a01b031690565b6000908152606760205260409020546001600160a01b0316151590565b60009080825260209060978252604092838120338252835260ff848220541615612e355750505050565b612e3e33613054565b91845190612e4b82612aed565b60428252848201926060368537825115612f995760308453825190600191821015612f995790607860218501536041915b818311612f2b57505050612efb5760486119bd938693612edf93612ed0985198899376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a860152611fc8815180928c60378901910161296b565b01036028810187520185612b08565b5192839262461bcd60e51b84526004840152602483019061298e565b60648486519062461bcd60e51b82528060048301526024820152600080516020613d298339815191526044820152fd5b909192600f81166010811015612f85576f181899199a1a9b1b9c1cb0b131b232b360811b901a612f5b8587613043565b5360041c928015612f7157600019019190612e7c565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b906000918083526097602052604083209160018060a01b03169182845260205260ff604084205416612fde57505050565b8083526097602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b8181029291811591840414171561209657565b9190820180921161209657565b9081518110156120ac570160200190565b60405190606082016001600160401b03811183821017612a8557604052602a82526020820160403682378251156120ac576030905381516001908110156120ac57607860218401536029905b8082116130e25750506130b05790565b606460405162461bcd60e51b81526020600482015260206024820152600080516020613d298339815191526044820152fd5b9091600f8116601081101561313b576f181899199a1a9b1b9c1cb0b131b232b360811b901a6131118486613043565b5360041c9180156131265760001901906130a0565b60246000634e487b7160e01b81526011600452fd5b60246000634e487b7160e01b81526032600452fd5b1561315757565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b51906001600160a01b03821682036107cf57565b519081151582036107cf57565b809161018092839103126107cf576040519182016001600160401b03811183821017612a8557604052805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015261323c60c082016131b0565b60c083015261324d60e082016131b0565b60e0830152610100808201519083015261012061326b8183016131c4565b9083015261014061327d8183016131c4565b9083015261328f6101608092016131c4565b9082015290565b1561329d57565b60405162461bcd60e51b815260206004820152601260248201527113585e081cdd5c1c1b1e481c995858da195960721b6044820152606490fd5b6040516132e381612ad2565b6000808252926001600160a01b03831692831561336d578161336894612c0f9661331561330f84612dee565b15613424565b61332161330f84612dee565b818152606860209081526040808320805460010190558483526067909152812080546001600160a01b03191683179055600080516020613da98339815191528180a461349f565b613404565b606460405162461bcd60e51b815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b60809060208152603260208201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60608201520190565b1561340b57565b60405162461bcd60e51b8152806119bd600482016133b1565b1561342b57565b60405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606490fd5b3d1561349a573d9061348082612b2b565b9161348e6040519384612b08565b82523d6000602084013e565b606090565b9091600091803b1561358a576134ea6020918493604051948580948193630a85bd0160e11b9a8b8452336004850152846024850152604484015260806064840152608483019061298e565b03926001600160a01b03165af190829082613542575b50506135345761350e61346f565b8051908161352f5760405162461bcd60e51b8152806119bd600482016133b1565b602001fd5b6001600160e01b0319161490565b909192506020813d8211613582575b8161355e60209383612b08565b810103126102605751906001600160e01b0319821682036102645750903880613500565b3d9150613551565b50505050600190565b91926000929190813b15613604576020916135e99185604051958680958194630a85bd0160e11b9b8c845233600485015260018060a01b038095166024850152604484015260806064840152608483019061298e565b0393165af1908290826135425750506135345761350e61346f565b5050505050600190565b80518210156120ac5760209160051b010190565b91906040835260076040840152665f71756f72756d60c81b6060840152602060808401930152565b91909161365681612dee565b15613785576000908152609c602090815260408220845191949092906001600160401b0383116137715761368a8454612b9b565b601f811161372e575b508591601f84116001146136cd578394959650926136c2575b50508160011b916000199060031b1c1916179055565b0151905038806136ac565b9190601f1984169685845280842093905b888210613716575050836001959697106136fd575b505050811b019055565b015160001960f88460031b161c191690553880806136f3565b806001859682949686015181550195019301906136de565b848352868320601f850160051c810191888610613767575b601f0160051c01905b81811061375c5750613693565b83815560010161374f565b9091508190613746565b634e487b7160e01b82526041600452602482fd5b60405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608490fd5b156137e857565b60405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608490fd5b1561384a57565b60405162461bcd60e51b81526020600482015260146024820152734e4654204e6f6e205472616e7366657261626c6560601b6044820152606490fd5b6001600160a01b03918216815291811660208301529091166040820152606081019190915260800190565b906001600160a01b0380806138c584612da4565b169316918383149384156138f8575b5083156138e2575b50505090565b6138ee91929350612dc7565b16143880806138dc565b909350600052606a60205260406000208260005260205260ff6040600020541692386138d4565b1561392657565b60405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608490fd5b906139a19161398784612da4565b6001600160a01b039391841692849290918316841461391f565b16918215613a2457816139be916139b786612da4565b161461391f565b600080516020613da9833981519152600084815260696020526040812060018060a01b03199081815416905583825260686020526040822060001981540190558482526040822060018154019055858252606760205284604083209182541617905580a4565b60405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b919092613368613aad91613a8c61259f85336138b1565b613a9a60ff60a45416613843565b613aa5848787613979565b838686613593565b609e546001600160a01b0316803b156107cf57613ae693600080946040519687958694859363debfa06360e01b85523060048601613886565b03925af18015613b0057613af75750565b612c0f90612a72565b6040513d6000823e3d90fd5b63ffffffff60e01b16637965db0b60e01b8114908115613b2a575090565b6301ffc9a760e01b14919050565b6001600160e01b0319811663152a902d60e11b14908115613b57575090565b612b989150613b0c565b908160209103126107cf575160ff811681036107cf5790565b60ff166012039060ff821161209657565b60ff16604d811161209657600a0a90565b6000906001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8103613bf257505060125b60ff8116601203613bd7575090565b90613bec613be7612b9893613b7a565b613b8b565b90613023565b60206004916040519283809263313ce56760e01b82525afa918215613c4b5791613c1d575b50613bc8565b613c3e915060203d8111613c44575b613c368183612b08565b810190613b61565b38613c17565b503d613c2c565b604051903d90823e3d90fd5b6000906001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8103613cbf57505060125b60ff8116601203613c92575090565b613be7613c9e91613b7a565b908115613ca9570490565b634e487b7160e01b600052601260045260246000fd5b60206004916040519283809263313ce56760e01b82525afa918215613c4b5791613cea575b50613c83565b613d02915060203d8111613c4457613c368183612b08565b38613ce456fe46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354537472696e67733a20686578206c656e67746820696e73756666696369656e748ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c70bc14066c33013fe88f66e314e4cf150b0b2d4d6451a1a51dbbd1c27cd11de2878fdc8d422c49ced035a9edf18d00d3c6a8d81df210f3e5e448e045e77b41e88ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60dabe9ef7b41f3c1cc359b009558ac4700a6bef8c5a11b51767e4980ed66341a2646970667358221220139574b622686bc5ca86b566d8d821215e6a2f9e64d19d34016261d67681d09f64736f6c63430008120033