[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC1155InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC1155InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "idsLength", "type": "uint256" }, { "internalType": "uint256", "name": "valuesLength", "type": "uint256" } ], "name": "ERC1155InvalidArrayLength", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC1155InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC1155InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC1155InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC1155MissingApprovalForAll", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidDefaultRoyalty", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidDefaultRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidTokenRoyalty", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidTokenRoyaltyReceiver", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "StringsInsufficientHexLength", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "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": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Locked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "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": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Unlocked", "type": "event" }, { "inputs": [], "name": "ADMIN", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PIEMENT", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_tokenIds", "type": "uint256[]" }, { "internalType": "address[]", "name": "_addresses", "type": "address[]" }, { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" } ], "name": "airdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "uint256", "name": "_allowlistedAmount", "type": "uint256" }, { "internalType": "bytes32[]", "name": "_merkleProof", "type": "bytes32[]" } ], "name": "allowlistMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseExtension", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "currencies", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "emitLockState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "externalMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "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": "_owner", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "bool", "name": "_isLocked", "type": "bool" }, { "internalType": "uint96", "name": "_royaltyFee", "type": "uint96" }, { "internalType": "address", "name": "_withdrawAddress", "type": "address" }, { "internalType": "uint256", "name": "_systemRoyalty", "type": "uint256" }, { "internalType": "address", "name": "_royaltyReceiver", "type": "address" }, { "internalType": "address", "name": "_royaltyReceiverCurrency", "type": "address" }, { "internalType": "address", "name": "_piementMinter", "type": "address" }, { "internalType": "string", "name": "_prefBaseURI", "type": "string" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "isAllowlistSale", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isLocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "locked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "mintCosts", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "mintLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "mintedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "uint256", "name": "_allowlistedAmount", "type": "uint256" }, { "internalType": "bytes32[]", "name": "_merkleProof", "type": "bytes32[]" } ], "name": "piementAllowlistMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "piementMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "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": [], "name": "royaltyReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royaltyReceiverCurrency", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_mintCost", "type": "uint256" }, { "internalType": "uint256", "name": "_maxSupply", "type": "uint256" }, { "internalType": "bytes32", "name": "_merkleRoot", "type": "bytes32" }, { "internalType": "address", "name": "_currency", "type": "address" } ], "name": "setAllowlistSalesInfo", "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": "bool", "name": "_isLocked", "type": "bool" } ], "name": "setIsLocked", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_baseURI", "type": "string" }, { "internalType": "string", "name": "_baseExtension", "type": "string" } ], "name": "setMetadataBase", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_mintCost", "type": "uint256" }, { "internalType": "uint256", "name": "_maxSupply", "type": "uint256" }, { "internalType": "uint256", "name": "_mintLimit", "type": "uint256" }, { "internalType": "address", "name": "_currency", "type": "address" } ], "name": "setSalesInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "ratio", "type": "uint256" } ], "internalType": "struct TukuruERC1155.WithdrawSetting[]", "name": "_value", "type": "tuple[]" } ], "name": "setWithdrawSettings", "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": "systemRoyalty", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "updateToNoSystemRoyalty", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "usageFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_withdrawAmount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_currencyAddress", "type": "address" }, { "internalType": "uint256", "name": "_withdrawAmount", "type": "uint256" } ], "name": "withdrawCurrency", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "withdrawSettings", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "ratio", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
60808060405234620000c95767016345785d8a0000600d557ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c16620000ba57506001600160401b036002600160401b03198282160162000074575b6040516148269081620000cf8239f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a138808062000064565b63f92ee8a960e01b8152600490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461039657806301ffc9a71461039157806306fdde031461038c5780630b18253d146103875780630e89341c1461038257806312065fe01461037d578063156e29f614610378578063248a9ca3146103735780632a0acc6a1461036e5780632a55205a146103695780632b41a368146103645780632e1a7d4d1461035f5780632eb2c2d61461035a5780632f2ff15d14610355578063339b4f7a1461035057806334aef4c81461034b57806336568abe146103465780633a813b76146103415780634425f8a21461033c5780634e1273f4146103375780634fb80f7c1461033257806353e57ef21461032d5780635d75879c146103285780635feb21fd146103235780636c0360eb1461031e578063715018a614610319578063869f7594146103145780638727a4fb1461030f5780638c8fae401461030a5780638da5cb5b1461030557806391d148541461030057806395d89b41146102fb5780639fbc8713146102f6578063a217fddf146102f1578063a22cb465146102ec578063a4c3f31e146102e7578063a4cb51c7146102e2578063a4e2d634146102dd578063b0cc1f6c146102d8578063b45a3c0e146102d3578063bd85b039146102ce578063bdbda564146102c9578063bfb30e46146102c4578063c2dd1ad8146102bf578063c6682862146102ba578063c70a2cf7146102b5578063d10507a9146102b0578063d547741f146102ab578063e521aa94146102a6578063e985e9c5146102a1578063f242432a1461029c578063f2fde38b14610297578063f6d1c27114610292578063f9bafaa61461028d578063fb9883cb146102885763fe6d81241461028357600080fd5b6125bd565b61231f565b61221e565b6121ea565b6121bd565b6120a4565b61206b565b61203f565b611ff0565b611ea4565b611e78565b611de3565b611dba565b611d72565b611cd6565b611caa565b611c87565b611b35565b611a9b565b611a1e565b6119d2565b6118cb565b6118af565b611886565b6117e1565b61177e565b611748565b61170e565b61165d565b611631565b6115c6565b611531565b611513565b61147e565b6113fe565b6113cd565b6112e3565b61121d565b6110f2565b6110a7565b611089565b610fd7565b610f88565b610e52565b610c46565b610c20565b610b5f565b610b3b565b610aff565b610a32565b6109f3565b61086d565b6107bb565b61061d565b610478565b6103f6565b6001600160a01b038116036103ac57565b600080fd5b600435906103be8261039b565b565b60a435906103be8261039b565b60e435906103be8261039b565b61010435906103be8261039b565b61012435906103be8261039b565b346103ac5760403660031901126103ac57602061045d6004356104188161039b565b6024356000527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500835260406000209060018060a01b0316600052602052604060002090565b54604051908152f35b6001600160e01b03198116036103ac57565b346103ac5760203660031901126103ac57602060043561049781610466565b6104a081614692565b908115610504575b81156104f3575b81156104d8575b81156104c8575b506040519015158152f35b6104d291506146d6565b386104bd565b6001600160e01b03198116635a2d1e0760e11b1491506104b6565b90506104fe816146d6565b906104af565b905061050f8161466d565b906104a8565b90600182811c92168015610545575b602083101461052f57565b634e487b7160e01b600052602260045260246000fd5b91607f1691610524565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761058057604052565b61054f565b606081019081106001600160401b0382111761058057604052565b90601f801991011681019081106001600160401b0382111761058057604052565b60005b8381106105d45750506000910152565b81810151838201526020016105c4565b906020916105fd815180928185528580860191016105c1565b601f01601f1916010190565b90602061061a9281815201906105e4565b90565b346103ac576000806003193601126106fd576040519080805461063f81610515565b808552916001918083169081156106d35750600114610679575b61067585610669818703826105a0565b60405191829182610609565b0390f35b80809450527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b8284106106bb57505050810160200161066982610675610659565b805460208587018101919091529093019281016106a0565b8695506106759693506020925061066994915060ff191682840152151560051b8201019293610659565b80fd5b604051906103be82610565565b60405190602082018281106001600160401b0382111761058057604052565b6001600160401b03811161058057601f01601f191660200190565b81601f820112156103ac5780359061075e8261072c565b9261076c60405194856105a0565b828452602083830101116103ac57816000926020809301838601378301015290565b801515036103ac57565b606435906103be8261078e565b608435906001600160601b03821682036103ac57565b346103ac576101603660031901126103ac576107d56103b1565b6001600160401b03906024358281116103ac576107f6903690600401610747565b906044358381116103ac5761080f903690600401610747565b90610818610798565b906108216107a5565b9061082a6103c0565b6108326103cd565b9261083b6103da565b946108446103e8565b9661014435998a116103ac5761086161086b9a3690600401610747565b9860c43595613121565b005b346103ac5760203660031901126103ac576000600435807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000808210156109e5575b506d04ee2d6d415b85acef8100000000808310156109d6575b50662386f26fc10000808310156109c7575b506305f5e100808310156109b8575b50612710808310156109a9575b506064821015610999575b600a8092101561098f575b600190816021610917828701613cfc565b95860101905b610959575b604051610675906106698161094b6109468a610940602085016144a5565b90613835565b614522565b03601f1981018352826105a0565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a83530491821561098a5791908261091d565b610922565b9160010191610906565b91906064600291049101916108fb565b600491939204910191386108f0565b600891939204910191386108e3565b601091939204910191386108d4565b602091939204910191386108c2565b6040935081049150386108a9565b346103ac5760003660031901126103ac57602047604051908152f35b60609060031901126103ac57600435610a278161039b565b906024359060443590565b610a3b36610a0f565b9160009282845260076020526040842054818101809111610afa57610a6e90848652600660205260408620541015613f22565b828452600a60205260408420548015908115610ad0575b5015610a9957610a96923392613fb1565b80f35b60405162461bcd60e51b815260206004820152600f60248201526e13dd995c88135a5b9d08131a5b5a5d608a1b6044820152606490fd5b600b60209081526040808820336000908152925290205483810192508210610afa57101538610a85565b612a52565b346103ac5760203660031901126103ac576004356000526000805160206147da8339815191526020526020600160406000200154604051908152f35b346103ac5760003660031901126103ac576040516420a226a4a760d91b8152602090f35b346103ac5760403660031901126103ac576004356000527fdaedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b01602052604060002060405190610bac82610565565b546001600160a01b0380821680845260a09290921c60208401529015610c10575b610bf1610be96001600160601b036020850151166024356130ee565b612710900490565b915160408051929091166001600160a01b031682526020820192909252f35b9050610c1a6130a9565b90610bcd565b346103ac5760003660031901126103ac57604051661412515351539560ca1b8152602090f35b346103ac576020806003193601126103ac57600435610c636125e2565b47908082101580610dd4575b610c789061441a565b80610dcd57505b600f5480610d8e575b508060009182600e9384545b808210610d6557505060005b84548082101561086b5786610cc6610cc0610cba856119a5565b5061447e565b92614462565b8303610d16575090610d0c600080808089610cfc610cf0610cf0610d119a5160018060a01b031690565b6001600160a01b031690565b5af1610d06612dfc565b5061445b565b612a68565b610ca0565b610d119295610d5a600080808087610cfc610cf0610d488d8f610d4390610cf09d610d5f9f0151906130ee565b613101565b925192998a936001600160a01b031690565b614471565b93612a68565b9091610d82610d88916001610d79866119a5565b50015490613cd4565b92612a68565b90610c94565b90610da6610d9f610dc793836130ee565b6064900490565b90610d5a600080808086610cfc610cf0610cf060105460018060a01b031690565b38610c88565b9050610c7f565b50811515610c6f565b6001600160401b0381116105805760051b60200190565b81601f820112156103ac57803591610e0b83610ddd565b92610e1960405194856105a0565b808452602092838086019260051b8201019283116103ac578301905b828210610e43575050505090565b81358152908301908301610e35565b346103ac5760a03660031901126103ac5760048035610e708161039b565b602435610e7c8161039b565b6001600160401b03906044358281116103ac57610e9c9036908601610df4565b906064358381116103ac57610eb49036908701610df4565b926084359081116103ac57610ecc9036908701610747565b936001600160a01b03808216903382141580610f59575b610f2c57831615610f145715610efd5761086b9550612b36565b604051626a0d4560e21b8152600081880152602490fd5b604051632bfa23e760e11b8152600081890152602490fd5b6040805163711bec9160e11b815233818b019081526001600160a01b038616602082015290918291010390fd5b5060ff610f8033610f6986611d39565b9060018060a01b0316600052602052604060002090565b541615610ee3565b346103ac5760403660031901126103ac5761086b602435600435610fab8261039b565b806000526000805160206147da833981519152602052610fd2600160406000200154612688565b612888565b346103ac5760a03660031901126103ac57608435610a96600435610ffa8361039b565b6110026125e2565b61106a6000938285526005602052602435604086205560066020526044356040862055600960205260408520600160ff1982541617905560643561105084600052600c602052604060002090565b5560018060a01b0316916000526004602052604060002090565b80546001600160a01b0319166001600160a01b03909216919091179055565b346103ac5760003660031901126103ac576020600d54604051908152f35b346103ac5760403660031901126103ac576024356110c48161039b565b336001600160a01b038216036110e05761086b906004356128c2565b60405163334bd91960e11b8152600490fd5b346103ac5760403660031901126103ac576001600160401b036004358181116103ac57611123903690600401610747565b906024358181116103ac5761113c903690600401610747565b906111456125e2565b8251908111610580576111628161115d600254610515565b613250565b602080601f83116001146111a45750819061086b94600092611199575b50508160011b916000199060031b1c191617600255613403565b01519050388061117f565b60026000529193601f19851660008051602061475a833981519152936000905b82821061120557505091600193918661086b9794106111ec575b505050811b01600255613403565b015160001960f88460031b161c191690553880806111de565b806001869782949787015181550196019401906111c4565b346103ac5760203660031901126103ac576004356112396125e2565b60085460ff16156112715760207f032bc66be43dbccb7487781d168eb7bda224628a3b2c3388bdf69b532a3a161191604051908152a1005b60207ff27b6ce5b2f5e68ddb2fd95a8a909d4ecf1daaac270935fff052feacb24f184291604051908152a1005b90815180825260208080930193019160005b8281106112be575050505090565b8351855293810193928101926001016112b0565b90602061061a92818152019061129e565b346103ac5760403660031901126103ac576004356001600160401b038082116103ac57366023830112156103ac57816004013561131f81610ddd565b9261132d60405194856105a0565b81845260209160248386019160051b830101913683116103ac57602401905b82821061138557856024358681116103ac5761067591611373611379923690600401610df4565b90612a8b565b604051918291826112d2565b83809183356113938161039b565b81520191019061134c565b6000527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500602052604060002090565b346103ac5760203660031901126103ac576004356000526009602052602060ff604060002054166040519015158152f35b346103ac5760a03660031901126103ac57608435610a966004356114218361039b565b6114296125e2565b60009081526005602090815260408083206024359055600682528083206044359055600a8252808320606435905560098252808320805460ff191690556004909152812090926001600160a01b03169061106a565b61148736610a0f565b91611490612646565b60009282845260076020526040842054818101809111610afa576114c290848652600660205260408620541015613f22565b828452600a602052604084205480159081156114e9575b5015610a9957610a969282613fb1565b600b60209081526040808820336000908152925290205483810192508210610afa571015386114d9565b346103ac5760003660031901126103ac576020600f54604051908152f35b346103ac576000806003193601126106fd57604051908060025461155481610515565b808552916001918083169081156106d3575060011461157d5761067585610669818703826105a0565b92506002835260008051602061475a8339815191525b8284106115ae57505050810160200161066982610675610659565b80546020858701810191909152909301928101611593565b346103ac576000806003193601126106fd576115e061295a565b6000805160206147ba83398151915280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b346103ac5760203660031901126103ac5760043560005260066020526020604060002054604051908152f35b346103ac576020806003193601126103ac57600435906001600160401b0382116103ac57366023830112156103ac5781600401359161169b83610ddd565b916040936116ab855194856105a0565b80845260248285019160061b840101923684116103ac57602401905b8382106116d75761086b8561458c565b85823603126103ac5782869182516116ee81610565565b84356116f98161039b565b815282850135838201528152019101906116c7565b346103ac5760203660031901126103ac5760043561172b8161078e565b6117336125e2565b60ff8019600854169115151617600855600080f35b346103ac5760003660031901126103ac576000805160206147ba833981519152546040516001600160a01b039091168152602090f35b346103ac5760403660031901126103ac57602060ff6117d56024356117a28161039b565b6004356000526000805160206147da833981519152845260406000209060018060a01b0316600052602052604060002090565b54166040519015158152f35b346103ac576000806003193601126106fd576040519080600180549161180683610515565b808652928281169081156106d3575060011461182c5761067585610669818703826105a0565b92508083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b82841061186e57505050810160200161066982610675610659565b80546020858701810191909152909301928101611853565b346103ac5760003660031901126103ac576010546040516001600160a01b039091168152602090f35b346103ac5760003660031901126103ac57602060405160008152f35b346103ac5760403660031901126103ac576004356118e88161039b565b602435906118f58261078e565b81158015919082611982575b61190a906146ff565b6001600160a01b03811692831561196a5761192b61193c92610f6933611d39565b9060ff801983541691151516179055565b6040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162ced3e160e81b815260006004820152602490fd5b5060085460ff1615611901565b634e487b7160e01b600052603260045260246000fd5b600e548110156119cd57600e60005260011b60008051602061479a8339815191520190600090565b61198f565b346103ac5760203660031901126103ac57600435600e548110156103ac576119f9906119a5565b508054600190910154604080516001600160a01b039093168352602083019190915290f35b346103ac57611a2c36610a0f565b3360009081527fb0afb9bfcc02cb5fea39138929a1678cfee7c2d448e913d7ff53f47baa0929be60205260409020546526a4a72a22a960d11b939192919060ff1615611a7c5761086b93506142e1565b60405163e2517d3f60e01b815233600482015260248101859052604490fd5b346103ac5760003660031901126103ac57602060ff600854166040519015158152f35b9181601f840112156103ac578235916001600160401b0383116103ac576020808501948460051b0101116103ac57565b60a06003198201126103ac57600435611b068161039b565b91602435916044359160643591608435906001600160401b0382116103ac57611b3191600401611abe565b9091565b611b3e36611aee565b916000959385875260076020526040872054818101809111610afa57611b7290878952600660205260408920541015613f22565b60008681526004602052604090206001600160a01b0390611b9f90610cf0905b546001600160a01b031690565b16611bd85785611bd1611bc9611bc2610a96996000526005602052604060002090565b54846130ee565b341015613d69565b3395614146565b611bf2610cf0611b92886000526004602052604060002090565b6040516370a0823160e01b81523360048201529690602090889060249082905afa968715611c8257610a9697611c4f918a91611c54575b50611c48611c41846000526005602052604060002090565b54856130ee565b1115613f6f565b611bd1565b611c75915060203d8111611c7b575b611c6d81836105a0565b810190613f60565b38611c29565b503d611c63565b612dcd565b346103ac5760203660031901126103ac57602060ff600854166040519015158152f35b346103ac5760203660031901126103ac5760043560005260076020526020604060002054604051908152f35b6000806003193601126106fd57600f5415611d0057611cf9600d54341015613d69565b80600f5580f35b60405162461bcd60e51b81526020600482015260116024820152704e6f2053797374656d20526f79616c747960781b6044820152606490fd5b6001600160a01b031660009081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45016020526040902090565b346103ac5760403660031901126103ac57602061045d602435611d948161039b565b600435600052600b835260406000209060018060a01b0316600052602052604060002090565b346103ac5760003660031901126103ac576011546040516001600160a01b039091168152602090f35b346103ac576000806003193601126106fd576040519080600354611e0681610515565b808552916001918083169081156106d35750600114611e2f5761067585610669818703826105a0565b92506003835260008051602061477a8339815191525b828410611e6057505050810160200161066982610675610659565b80546020858701810191909152909301928101611e45565b346103ac5760203660031901126103ac5760043560005260056020526020604060002054604051908152f35b346103ac5760603660031901126103ac576001600160401b036004358181116103ac57611ed5903690600401611abe565b91906024358281116103ac57611eef903690600401611abe565b90926044359081116103ac57611f09903690600401611abe565b611f149491946125e2565b82861480611fe7575b15611fb15760005b838110611f2e57005b80611f6f611f48611f43611fac948888613da6565b613db6565b611f53838b8a613da6565b35611f5f84878c613da6565b3590611f69612dd9565b92613dc0565b611f7a818489613da6565b35611fa5611f9d611f8c848c8b613da6565b356000526007602052604060002090565b918254613cd4565b9055612a68565b611f25565b60405162461bcd60e51b815260206004820152600e60248201526d092dcecc2d8d2c84098cadccee8d60931b6044820152606490fd5b50808314611f1d565b346103ac5760403660031901126103ac5761086b6024356004356120138261039b565b806000526000805160206147da83398151915260205261203a600160406000200154612688565b6128c2565b346103ac5760203660031901126103ac57600435600052600a6020526020604060002054604051908152f35b346103ac5760403660031901126103ac57602060ff6117d560043561208f8161039b565b610f696024359161209f8361039b565b611d39565b346103ac5760a03660031901126103ac576004356120c18161039b565b6024356120cd8161039b565b6084356001600160401b0381116103ac576120ec903690600401610747565b906001600160a01b038381169033821415806121a5575b61217e57821615612165571561214d5761086b926121456064356044359160405192600184526020840152604083019160018352606084015260808301604052565b929091612b36565b604051626a0d4560e21b815260006004820152602490fd5b604051632bfa23e760e11b815260006004820152602490fd5b60405163711bec9160e11b81523360048201526001600160a01b0386166024820152604490fd5b5060ff6121b533610f6988611d39565b541615612103565b346103ac5760203660031901126103ac5761086b6004356121dd8161039b565b6121e561295a565b612993565b346103ac5760203660031901126103ac576004356000526004602052602060018060a01b0360406000205416604051908152f35b61222736611aee565b91612233959395612646565b60009585875260076020526040872054818101809111610afa5761226590878952600660205260408920541015613f22565b60008681526004602052604090206001600160a01b039061228990610cf090611b92565b166122b257856122ac611bc9611bc2610a96996000526005602052604060002090565b85614146565b6122cc610cf0611b92886000526004602052604060002090565b6040516370a0823160e01b81523360048201529690602090889060249082905afa968715611c8257610a969761231a918a91611c545750611c48611c41846000526005602052604060002090565b6122ac565b346103ac576040806003193601126103ac576004803561233e8161039b565b6024359061234a6125e2565b83516370a0823160e01b8152308482019081526020936001600160a01b0393909316929084908390819083010381865afa918215611c825760009261259e575b508082101580612595575b61239e9061441a565b8061258d5750935b600f548061252a575b50849360009485600e9687545b80821061251057505060005b87548082101561086b576123e76123e1610cba846119a5565b91614462565b820361246d5751855163a9059cbb60e01b81526001600160a01b03909116858201908152602081018b9052909190889083908190604001038160008b5af1918215611c825761243b92612440575b50612a68565b6123c8565b61245f90893d8b11612466575b61245781836105a0565b8101906142cc565b5038612435565b503d61244d565b9861249a888b61248886610d436124cc979f8501518a6130ee565b9051909283916001600160a01b031690565b895163a9059cbb60e01b81526001600160a01b0390911689820190815260208101929092529485918291604090910190565b038160008c5af1918215611c825761243b936124ed936124f3575b50614471565b98612a68565b612509908b3d8d116124665761245781836105a0565b50386124e7565b9091610d82612524916001610d79866119a5565b906123bc565b9461253c610d9f6125549397836130ee565b601154909190859083906001600160a01b031661249a565b03816000885af1928315611c8257612570936125775750614471565b93386123af565b61250990863d88116124665761245781836105a0565b9050936123a6565b50811515612395565b6125b6919250843d8611611c7b57611c6d81836105a0565b903861238a565b346103ac5760003660031901126103ac576040516526a4a72a22a960d11b8152602090f35b3360009081527fd85a505ed3df1d2237a51df8f7425ad064a3442c088f1131afe6ca115bbb3dc7602052604090206420a226a4a760d91b9060ff905b5416156126285750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3360009081527fe8ef0ad73afde5d027555ee8362aa620d809527139b9d75e9c6b2a80c8eaa0fd60205260409020661412515351539560ca1b9060ff9061261e565b60008181526000805160206147da83398151915260209081526040808320338452909152902060ff9061261e565b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120546000805160206147da8339815191529060ff1661276557818052602090815260408083206001600160a01b038516600090815292529020805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50905090565b6001600160a01b03811660009081527fd85a505ed3df1d2237a51df8f7425ad064a3442c088f1131afe6ca115bbb3dc7602052604081206420a226a4a760d91b906000805160206147da8339815191529060ff905b541661282657818352602090815260408084206001600160a01b038616600090815292529020805460ff1916600117905533926001600160a01b0316917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b5050905090565b6001600160a01b03811660009081527fe8ef0ad73afde5d027555ee8362aa620d809527139b9d75e9c6b2a80c8eaa0fd60205260408120661412515351539560ca1b906000805160206147da8339815191529060ff906127c0565b60008181526000805160206147da833981519152602081815260408084206001600160a01b0387168552909152822091929160ff906127c0565b60008181526000805160206147da833981519152602081815260408084206001600160a01b038716855290915282205491929160ff161561282657818352602090815260408084206001600160a01b038616600090815292529020805460ff1916905533926001600160a01b0316917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b6000805160206147ba833981519152546001600160a01b0316330361297b57565b60405163118cdaa760e01b8152336004820152602490fd5b6001600160a01b039081169081156129ee576000805160206147ba83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b612a4e916000527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c450060205260406000209060018060a01b0316600052602052604060002090565b5490565b634e487b7160e01b600052601160045260246000fd5b6000198114610afa5760010190565b80518210156119cd5760209160051b010190565b91909180518351808203612b14575050805190612aa782610ddd565b91612ab560405193846105a0565b808352612ac4601f1991610ddd565b0190602091368385013760005b8151811015612b0c5780612af7612b079260051b85808287010151918a01015190612a07565b612b018287612a77565b52612a68565b612ad1565b509193505050565b604051635b05999160e01b815260048101919091526024810191909152604490fd5b9491909160ff60085416158015612d43575b8015612d32575b612b58906146ff565b8151845190818103612b1457505060005b8251811015612c3c57600581901b83810160209081015191870101516001600160a01b03929186908a8516612bcb575b612bac948216612bb1575b505050612a68565b612b69565b612bc191610f69611f9d9261139e565b9055388581612ba4565b9192939050612bdd8a610f698461139e565b54838110612c055791879184612bac96959403612bfd8d610f698561139e565b559450612b99565b6040516303dee4c560e01b81526001600160a01b038c16600482015260248101919091526044810184905260648101839052608490fd5b509491939290936001855114600014612ce7576020858101518382015160408051928352928201526001600160a01b03838116929086169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291a45b6001600160a01b038116612cb0575b5050505050565b8451600103612cd657602080612ccc9601519201519233612f26565b3880808080612ca9565b612ce294919233613072565b612ccc565b6040516001600160a01b03828116919085169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb9080612d2a888c83614734565b0390a4612c9a565b506001600160a01b03831615612b4f565b506001600160a01b03861615612b48565b908160209103126103ac575161061a81610466565b909260a09261061a9594600180861b03168352600060208401526040830152606082015281608082015201906105e4565b919261061a95949160a094600180871b0380921685521660208401526040830152606082015281608082015201906105e4565b6040513d6000823e3d90fd5b60405190602082018281106001600160401b038211176105805760405260008252565b3d15612e27573d90612e0d8261072c565b91612e1b60405193846105a0565b82523d6000602084013e565b606090565b9293919093843b612e3e575050505050565b602091612e61604051948593849363f23a6e6160e01b9889865260048601612d69565b038160006001600160a01b0388165af160009181612ef6575b50612eb95782612e88612dfc565b8051919082612eb257604051632bfa23e760e11b81526001600160a01b0383166004820152602490fd5b9050602001fd5b6001600160e01b03191603612ed357503880808080612ca9565b604051632bfa23e760e11b81526001600160a01b03919091166004820152602490fd5b612f1891925060203d8111612f1f575b612f1081836105a0565b810190612d54565b9038612e7a565b503d612f06565b939290949194853b612f3b575b505050505050565b612f5e602093604051958694859463f23a6e6160e01b998a875260048701612d9a565b038160006001600160a01b0388165af160009181612fa0575b50612f855782612e88612dfc565b6001600160e01b03191603612ed35750388080808080612f33565b612fb991925060203d8111612f1f57612f1081836105a0565b9038612f77565b92612fef61061a9593612ffd9360018060a01b031686526000602087015260a0604087015260a086019061129e565b90848203606086015261129e565b9160808184039101526105e4565b939061061a9593612fef91612ffd9460018060a01b03809216885216602087015260a0604087015260a086019061129e565b9293919093843b61304f575050505050565b602091612e61604051948593849363bc197c8160e01b9889865260048601612fc0565b939290949194853b61308657505050505050565b612f5e602093604051958694859463bc197c8160e01b998a87526004870161300b565b604051906130b682610565565b7fdaedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b00546001600160a01b038116835260a01c6020830152565b81810292918115918404141715610afa57565b811561310b570490565b634e487b7160e01b600052601260045260246000fd5b99979593919896949290986000805160206147fa833981519152998a549b60ff8d60401c16159c8d6001600160401b03821680159182613231575b506001149081613227575b15908161321e575b5061320c5767ffffffffffffffff1916600117909b556131939a8c6131e7576138ab565b61319957565b6000805160206147fa833981519152805460ff60401b19169055604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29080602081015b0390a1565b6000805160206147fa833981519152805460ff60401b1916600160401b1790556138ab565b60405163f92ee8a960e01b8152600490fd5b9050153861316f565b303b159150613167565b91508f61315c565b818110613244575050565b60008155600101613239565b90601f821161325d575050565b6103be91600260005260008051602061475a833981519152906020601f840160051c83019310613295575b601f0160051c0190613239565b9091508190613288565b90601f82116132ac575050565b6103be917f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45026000527ff429cb5e2ec84cbb765e76b31964a56ccde03e7a6122d6cc4afb19edc55edeed906020601f840160051c8301931061329557601f0160051c0190613239565b90601f8211613321575050565b6103be91600360005260008051602061477a833981519152906020601f840160051c8301931061329557601f0160051c0190613239565b90601f8211613365575050565b6103be91600080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563906020601f840160051c8301931061329557601f0160051c0190613239565b90601f82116133ba575050565b6103be9160016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6906020601f840160051c8301931061329557601f0160051c0190613239565b9081516001600160401b0381116105805761342881613423600354610515565b613314565b602080601f83116001146134645750819293600092613459575b50508160011b916000199060031b1c191617600355565b015190503880613442565b90601f19831694613485600360005260008051602061477a83398151915290565b926000905b8782106134c25750508360019596106134a9575b505050811b01600355565b015160001960f88460031b161c1916905538808061349e565b8060018596829496860151815501950193019061348a565b9081516001600160401b03811161058057600090613501816134fc8454610515565b613358565b602080601f831160011461353c5750829394829392613531575b50508160011b916000199060031b1c1916179055565b01519050388061351b565b90601f1983169561356e600080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390565b9285905b8882106135aa57505083600195969710613591575b505050811b019055565b015160001960f88460031b161c19169055388080613587565b80600185968294968601518155019501930190613572565b9081516001600160401b038111610580576001906135e9816135e48454610515565b6133ad565b602080601f8311600114613624575081929394600092613619575b5050600019600383901b1c191690821b179055565b015190503880613604565b90601f1983169561365760016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690565b926000905b888210613678575050838596971061359157505050811b019055565b80878596829496860151815501950193019061365c565b9081516001600160401b038111610580576136af8161115d600254610515565b602080601f83116001146136eb57508192936000926136e0575b50508160011b916000199060031b1c191617600255565b0151905038806136c9565b90601f1983169461370c600260005260008051602061475a83398151915290565b926000905b878210613749575050836001959610613730575b505050811b01600255565b015160001960f88460031b161c19169055388080613725565b80600185968294968601518155019501930190613711565b600e549060019182600e558083106137d3575b50600e60005260008051602061479a833981519152906000905b83821061379b5750505050565b8051805184546001600160a01b0319166001600160a01b0390911617845560209081015185850155600290930192918401910161378e565b6001600160ff1b0381168103610afa57821b60008051602061479a833981519152017fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3ff5b8181106138245750613774565b600080825584820155600201613817565b90613848602092828151948592016105c1565b0190565b613857600354610515565b601f8111613872575b50600a64173539b7b760d91b01600355565b600060038152601f60008051602061477a833981519152920160051c8201915b8281106138a0575050613860565b818155600101613892565b9493946138b6612dd9565b6138be613b60565b6138c6613b60565b80516001600160401b038111610580577f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45029161390b826139068554610515565b61329f565b602090601f8311600114613a7357976139b5613a609f9c9698613a4e9f9b93613a5b9f9a9961399e613a2b9f989b613998613a269f9b613a099e8b6139e79c6139ec9f986139a399600092613a68575b50508160011b916000199060031b1c19161790555b613978613b60565b613980613b60565b61398981613b50565b613992816126b6565b5061276b565b506134da565b6135c2565b60ff8019600854169115151617600855565b6139e26139c061070d565b6139c8610700565b6001600160a01b0384168152606460208201528152613761565b613b8f565b600f55565b60018060a01b03166001600160601b0360a01b6010541617601055565b60018060a01b03166001600160601b0360a01b6011541617601155565b61282d565b5061094b613a4e613a3b30613c32565b6109406040519687956020870190613835565b602f60f81b815260010190565b61368f565b6103be61384c565b01519050388061395b565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4502600052907ff429cb5e2ec84cbb765e76b31964a56ccde03e7a6122d6cc4afb19edc55edeed9160005b601f1985168110613b385750613a609f9c9698613a4e9f9b93613a5b9f9a9961399e613a2b9f989b613998613a269f979b613a099e60018c6139ec9f986139a3996139e79f9c6139b59d601f19811610613b1f575b505050811b019055613970565b015160001960f88460031b161c19169055388080613b12565b91926020600181928685015181550194019201613abd565b6103be90613b5c613b60565b6121e55b60ff6000805160206147fa8339815191525460401c1615613b7d57565b604051631afcd79f60e31b8152600490fd5b906001600160601b03811691612710808411613c1457506001600160a01b0316918215613bfb576020604051613bc481610565565b848152015260a01b6001600160a01b031916177fdaedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b0055565b604051635b6cc80560e11b815260006004820152602490fd5b8360449160405191636f483d0960e01b835260048301526024820152fd5b6001600160a01b031680613c44613ce1565b916030613c5084613d2e565b536078613c5c84613d3b565b5360295b60018111613c925750613c71575090565b60405163e22e27eb60e01b8152600481019190915260146024820152604490fd5b90600f81169060108210156119cd57613ccf916f181899199a1a9b1b9c1cb0b131b232b360811b901a613cc58487613d4b565b5360041c91613d5c565b613c60565b91908201809211610afa57565b60405190613cee82610585565b602a82526040366020840137565b90613d068261072c565b613d1360405191826105a0565b8281528092613d24601f199161072c565b0190602036910137565b8051156119cd5760200190565b8051600110156119cd5760210190565b9081518110156119cd570160200190565b8015610afa576000190190565b15613d7057565b60405162461bcd60e51b815260206004820152600e60248201526d09cdee8408adcdeeaced0408ae8d60931b6044820152606490fd5b91908110156119cd5760051b0190565b3561061a8161039b565b6001600160a01b0381169392909190841561216557613dfc60405192600184526020840152604083019160018352606084015260808301604052565b9260ff60085416158015613f1a575b8015613f12575b613e1b906146ff565b8151845190818103612b1457505060005b8251811015613e5f5780613e5a9160051b611fa5611f9d87610f69602080868b010151958c0101519461139e565b613e2c565b509291936001825114600014613ed65760208281015184820151604080519283529282015260009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629190a45b8051600103613ecc57906020806103be959301519101519133612e2c565b6103be933361303d565b60006040517f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb339180613f0a888883614734565b0390a4613eae565b506000613e12565b506001613e0b565b15613f2957565b60405162461bcd60e51b815260206004820152600f60248201526e4f766572204d617820537570706c7960881b6044820152606490fd5b908160209103126103ac575190565b15613f7657565b60405162461bcd60e51b81526020600482015260136024820152724e6f7420456e6f7567682043757272656e637960681b6044820152606490fd5b92919060018060a01b03613fd5610cf0611b92846000526004602052604060002090565b16613ffd576103be93613ff8611bc9611c41846000526005602052604060002090565b61408c565b614017610cf0611b92836000526004602052604060002090565b6040516370a0823160e01b81523360048201529490602090869060249082905afa948515611c82576103be95613ff89160009161406e575b50611c48614067856000526005602052604060002090565b54866130ee565b614086915060203d8111611c7b57611c6d81836105a0565b3861404f565b9290919282600052600960205260ff604060002054166140d757826140b8856140c895610f69946142e1565b600052600b602052604060002090565b8054918201809211610afa5755565b60405162461bcd60e51b815260206004820152600b60248201526a4e6f7720414c2053616c6560a81b6044820152606490fd5b1561411157565b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210383937b7b360991b6044820152606490fd5b9091929396959496604097885191602092838101906001600160601b03198a60601b1682528860348201526034815261417e81610585565b519020996000868152600c8552818120549b9481945b8086106141b5575050505050506103be96976141b0911461410a565b6141fb565b9091929394956141c6878388613da6565b3590818110156141eb57845282526141e18484205b96612a68565b9493929190614194565b90845282526141e18484206141db565b929390919382600052600960205260ff60406000205416156142955761422f82610f6985600052600b602052604060002090565b54858101809111610afa571161425857610f69826140b886611f9d95614254976142e1565b9055565b60405162461bcd60e51b815260206004820152601560248201527413dd995c88105b1b1bdddb1a5cdd08105b5bdd5b9d605a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600f60248201526e4e6f77204e6f7420414c2053616c6560881b6044820152606490fd5b908160209103126103ac575161061a8161078e565b60008281526004602052604090209192916001600160a01b039061430490611b92565b16614370575b614318908284611f69612dd9565b61432f611f9d836000526007602052604060002090565b905560085460ff1661433e5750565b6040519081527f032bc66be43dbccb7487781d168eb7bda224628a3b2c3388bdf69b532a3a16119080602081016131e2565b60009060206143e0614392610cf0611b92886000526004602052604060002090565b6143b06143a9886000526005602052604060002090565b54876130ee565b6040516323b872dd60e01b8152336004820152306024820152604481019190915294859283919082906064820190565b03925af1918215611c8257614318926143fc575b50905061430a565b6144139060203d81116124665761245781836105a0565b50386143f4565b1561442157565b60405162461bcd60e51b81526020600482015260126024820152714e6f7420456e6f7567682042616c616e636560701b6044820152606490fd5b156103ac57565b600019810191908211610afa57565b91908203918211610afa57565b9060405161448b81610565565b82546001600160a01b031681526001909201546020830152565b600254600092916144b582610515565b9160019081811690811561450f57506001146144d057505050565b9091929350600260005260008051602061475a833981519152906000915b8483106144fc575050500190565b81816020925485870152019201916144ee565b60ff191683525050811515909102019150565b6003546000929161453282610515565b9160019081811690811561450f575060011461454d57505050565b9091929350600360005260008051602061477a833981519152906000915b848310614579575050500190565b818160209254858701520192019161456b565b6145946125e2565b805190600160401b821161058057600e5482600e55808310614619575b50602080910190600e60005260008051602061479a8339815191526000925b8484106145de575050505050565b8051805183546001600160a01b0319166001600160a01b039190911617835560019160029185919082015184860155019201930192906145d0565b6001600160ff1b038181168203610afa5783168303610afa57600160008051602061479a83398151915291811b82019184821b015b82811061465c5750506145b1565b60008082558282015560020161464e565b6001600160e01b03198116637965db0b60e01b1490811561468c575090565b61061a91505b63ffffffff60e01b16636cdb3d1360e11b81149081156146c5575b81156146b7575090565b6301ffc9a760e01b14919050565b6303a24d0760e21b811491506146ad565b6001600160e01b0319811663152a902d60e11b149081156146f5575090565b61061a915061466d565b1561470657565b60405162461bcd60e51b8152602060048201526006602482015265131bd8dad95960d21b6044820152606490fd5b909161474b61061a9360408452604084019061129e565b91602081840391015261129e56fe405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acec2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85bbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000814000a