@river-build/generated
Version:
## How to generate contract types
1,506 lines (1,504 loc) • 60.5 kB
text/typescript
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
import type { Provider, TransactionRequest } from "@ethersproject/providers";
import type { PromiseOrValue } from "../common";
import type {
MembershipFacet,
MembershipFacetInterface,
} from "../MembershipFacet";
const _abi = [
{
type: "function",
name: "expiresAt",
inputs: [
{
name: "tokenId",
type: "uint256",
internalType: "uint256",
},
],
outputs: [
{
name: "",
type: "uint256",
internalType: "uint256",
},
],
stateMutability: "view",
},
{
type: "function",
name: "getMembershipCurrency",
inputs: [],
outputs: [
{
name: "",
type: "address",
internalType: "address",
},
],
stateMutability: "view",
},
{
type: "function",
name: "getMembershipDuration",
inputs: [],
outputs: [
{
name: "",
type: "uint64",
internalType: "uint64",
},
],
stateMutability: "view",
},
{
type: "function",
name: "getMembershipFreeAllocation",
inputs: [],
outputs: [
{
name: "",
type: "uint256",
internalType: "uint256",
},
],
stateMutability: "view",
},
{
type: "function",
name: "getMembershipImage",
inputs: [],
outputs: [
{
name: "",
type: "string",
internalType: "string",
},
],
stateMutability: "view",
},
{
type: "function",
name: "getMembershipLimit",
inputs: [],
outputs: [
{
name: "",
type: "uint256",
internalType: "uint256",
},
],
stateMutability: "view",
},
{
type: "function",
name: "getMembershipPrice",
inputs: [],
outputs: [
{
name: "",
type: "uint256",
internalType: "uint256",
},
],
stateMutability: "view",
},
{
type: "function",
name: "getMembershipPricingModule",
inputs: [],
outputs: [
{
name: "",
type: "address",
internalType: "address",
},
],
stateMutability: "view",
},
{
type: "function",
name: "getMembershipRenewalPrice",
inputs: [
{
name: "tokenId",
type: "uint256",
internalType: "uint256",
},
],
outputs: [
{
name: "",
type: "uint256",
internalType: "uint256",
},
],
stateMutability: "view",
},
{
type: "function",
name: "getProtocolFee",
inputs: [],
outputs: [
{
name: "",
type: "uint256",
internalType: "uint256",
},
],
stateMutability: "view",
},
{
type: "function",
name: "getSpaceFactory",
inputs: [],
outputs: [
{
name: "",
type: "address",
internalType: "address",
},
],
stateMutability: "view",
},
{
type: "function",
name: "joinSpace",
inputs: [
{
name: "receiver",
type: "address",
internalType: "address",
},
],
outputs: [],
stateMutability: "payable",
},
{
type: "function",
name: "joinSpaceWithReferral",
inputs: [
{
name: "receiver",
type: "address",
internalType: "address",
},
{
name: "referral",
type: "tuple",
internalType: "struct IMembershipBase.ReferralTypes",
components: [
{
name: "partner",
type: "address",
internalType: "address",
},
{
name: "userReferral",
type: "address",
internalType: "address",
},
{
name: "referralCode",
type: "string",
internalType: "string",
},
],
},
],
outputs: [],
stateMutability: "payable",
},
{
type: "function",
name: "renewMembership",
inputs: [
{
name: "tokenId",
type: "uint256",
internalType: "uint256",
},
],
outputs: [],
stateMutability: "payable",
},
{
type: "function",
name: "revenue",
inputs: [],
outputs: [
{
name: "",
type: "uint256",
internalType: "uint256",
},
],
stateMutability: "view",
},
{
type: "function",
name: "setMembershipFreeAllocation",
inputs: [
{
name: "newAllocation",
type: "uint256",
internalType: "uint256",
},
],
outputs: [],
stateMutability: "nonpayable",
},
{
type: "function",
name: "setMembershipImage",
inputs: [
{
name: "newImage",
type: "string",
internalType: "string",
},
],
outputs: [],
stateMutability: "nonpayable",
},
{
type: "function",
name: "setMembershipLimit",
inputs: [
{
name: "newLimit",
type: "uint256",
internalType: "uint256",
},
],
outputs: [],
stateMutability: "nonpayable",
},
{
type: "function",
name: "setMembershipPrice",
inputs: [
{
name: "newPrice",
type: "uint256",
internalType: "uint256",
},
],
outputs: [],
stateMutability: "nonpayable",
},
{
type: "function",
name: "setMembershipPricingModule",
inputs: [
{
name: "pricingModule",
type: "address",
internalType: "address",
},
],
outputs: [],
stateMutability: "nonpayable",
},
{
type: "function",
name: "withdraw",
inputs: [
{
name: "account",
type: "address",
internalType: "address",
},
],
outputs: [],
stateMutability: "nonpayable",
},
{
type: "event",
name: "Approval",
inputs: [
{
name: "owner",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "approved",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "tokenId",
type: "uint256",
indexed: true,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "ApprovalForAll",
inputs: [
{
name: "owner",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "operator",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "approved",
type: "bool",
indexed: false,
internalType: "bool",
},
],
anonymous: false,
},
{
type: "event",
name: "Banned",
inputs: [
{
name: "moderator",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "tokenId",
type: "uint256",
indexed: true,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "ConsecutiveTransfer",
inputs: [
{
name: "fromTokenId",
type: "uint256",
indexed: true,
internalType: "uint256",
},
{
name: "toTokenId",
type: "uint256",
indexed: false,
internalType: "uint256",
},
{
name: "from",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "to",
type: "address",
indexed: true,
internalType: "address",
},
],
anonymous: false,
},
{
type: "event",
name: "DefaultBpsFeeUpdated",
inputs: [
{
name: "defaultBpsFee",
type: "uint256",
indexed: false,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "EntitlementCheckResultPosted",
inputs: [
{
name: "transactionId",
type: "bytes32",
indexed: true,
internalType: "bytes32",
},
{
name: "result",
type: "uint8",
indexed: false,
internalType: "enum IEntitlementGatedBase.NodeVoteStatus",
},
],
anonymous: false,
},
{
type: "event",
name: "Initialized",
inputs: [
{
name: "version",
type: "uint32",
indexed: false,
internalType: "uint32",
},
],
anonymous: false,
},
{
type: "event",
name: "InterfaceAdded",
inputs: [
{
name: "interfaceId",
type: "bytes4",
indexed: true,
internalType: "bytes4",
},
],
anonymous: false,
},
{
type: "event",
name: "InterfaceRemoved",
inputs: [
{
name: "interfaceId",
type: "bytes4",
indexed: true,
internalType: "bytes4",
},
],
anonymous: false,
},
{
type: "event",
name: "MaxBpsFeeUpdated",
inputs: [
{
name: "maxBpsFee",
type: "uint256",
indexed: false,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "MaxPartnerFeeSet",
inputs: [
{
name: "fee",
type: "uint256",
indexed: false,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "MembershipCurrencyUpdated",
inputs: [
{
name: "currency",
type: "address",
indexed: true,
internalType: "address",
},
],
anonymous: false,
},
{
type: "event",
name: "MembershipFeeRecipientUpdated",
inputs: [
{
name: "recipient",
type: "address",
indexed: true,
internalType: "address",
},
],
anonymous: false,
},
{
type: "event",
name: "MembershipFreeAllocationUpdated",
inputs: [
{
name: "allocation",
type: "uint256",
indexed: true,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "MembershipLimitUpdated",
inputs: [
{
name: "limit",
type: "uint256",
indexed: true,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "MembershipPriceUpdated",
inputs: [
{
name: "price",
type: "uint256",
indexed: true,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "MembershipTokenIssued",
inputs: [
{
name: "recipient",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "tokenId",
type: "uint256",
indexed: true,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "MembershipTokenRejected",
inputs: [
{
name: "recipient",
type: "address",
indexed: true,
internalType: "address",
},
],
anonymous: false,
},
{
type: "event",
name: "MembershipWithdrawal",
inputs: [
{
name: "recipient",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "amount",
type: "uint256",
indexed: false,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "OwnershipTransferred",
inputs: [
{
name: "previousOwner",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "newOwner",
type: "address",
indexed: true,
internalType: "address",
},
],
anonymous: false,
},
{
type: "event",
name: "PartnerRegistered",
inputs: [
{
name: "account",
type: "address",
indexed: true,
internalType: "address",
},
],
anonymous: false,
},
{
type: "event",
name: "PartnerRemoved",
inputs: [
{
name: "account",
type: "address",
indexed: true,
internalType: "address",
},
],
anonymous: false,
},
{
type: "event",
name: "PartnerUpdated",
inputs: [
{
name: "account",
type: "address",
indexed: true,
internalType: "address",
},
],
anonymous: false,
},
{
type: "event",
name: "Paused",
inputs: [
{
name: "account",
type: "address",
indexed: false,
internalType: "address",
},
],
anonymous: false,
},
{
type: "event",
name: "PermissionsAddedToChannelRole",
inputs: [
{
name: "updater",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "roleId",
type: "uint256",
indexed: true,
internalType: "uint256",
},
{
name: "channelId",
type: "bytes32",
indexed: true,
internalType: "bytes32",
},
],
anonymous: false,
},
{
type: "event",
name: "PermissionsRemovedFromChannelRole",
inputs: [
{
name: "updater",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "roleId",
type: "uint256",
indexed: true,
internalType: "uint256",
},
{
name: "channelId",
type: "bytes32",
indexed: true,
internalType: "bytes32",
},
],
anonymous: false,
},
{
type: "event",
name: "PermissionsUpdatedForChannelRole",
inputs: [
{
name: "updater",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "roleId",
type: "uint256",
indexed: true,
internalType: "uint256",
},
{
name: "channelId",
type: "bytes32",
indexed: true,
internalType: "bytes32",
},
],
anonymous: false,
},
{
type: "event",
name: "Prepay__Prepaid",
inputs: [
{
name: "supply",
type: "uint256",
indexed: false,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "ReferralRegistered",
inputs: [
{
name: "referralCode",
type: "bytes32",
indexed: false,
internalType: "bytes32",
},
{
name: "basisPoints",
type: "uint256",
indexed: false,
internalType: "uint256",
},
{
name: "recipient",
type: "address",
indexed: false,
internalType: "address",
},
],
anonymous: false,
},
{
type: "event",
name: "ReferralRemoved",
inputs: [
{
name: "referralCode",
type: "bytes32",
indexed: false,
internalType: "bytes32",
},
],
anonymous: false,
},
{
type: "event",
name: "ReferralUpdated",
inputs: [
{
name: "referralCode",
type: "bytes32",
indexed: false,
internalType: "bytes32",
},
{
name: "basisPoints",
type: "uint256",
indexed: false,
internalType: "uint256",
},
{
name: "recipient",
type: "address",
indexed: false,
internalType: "address",
},
],
anonymous: false,
},
{
type: "event",
name: "RegistryFeeSet",
inputs: [
{
name: "fee",
type: "uint256",
indexed: false,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "RoleCreated",
inputs: [
{
name: "creator",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "roleId",
type: "uint256",
indexed: true,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "RoleRemoved",
inputs: [
{
name: "remover",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "roleId",
type: "uint256",
indexed: true,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "RoleUpdated",
inputs: [
{
name: "updater",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "roleId",
type: "uint256",
indexed: true,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "SubscriptionUpdate",
inputs: [
{
name: "tokenId",
type: "uint256",
indexed: true,
internalType: "uint256",
},
{
name: "expiration",
type: "uint64",
indexed: false,
internalType: "uint64",
},
],
anonymous: false,
},
{
type: "event",
name: "Transfer",
inputs: [
{
name: "from",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "to",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "tokenId",
type: "uint256",
indexed: true,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "Unbanned",
inputs: [
{
name: "moderator",
type: "address",
indexed: true,
internalType: "address",
},
{
name: "tokenId",
type: "uint256",
indexed: true,
internalType: "uint256",
},
],
anonymous: false,
},
{
type: "event",
name: "Unpaused",
inputs: [
{
name: "account",
type: "address",
indexed: false,
internalType: "address",
},
],
anonymous: false,
},
{
type: "error",
name: "ApprovalCallerNotOwnerNorApproved",
inputs: [],
},
{
type: "error",
name: "ApprovalQueryForNonexistentToken",
inputs: [],
},
{
type: "error",
name: "BalanceQueryForZeroAddress",
inputs: [],
},
{
type: "error",
name: "Banning__AlreadyBanned",
inputs: [
{
name: "tokenId",
type: "uint256",
internalType: "uint256",
},
],
},
{
type: "error",
name: "Banning__CannotBanOwner",
inputs: [],
},
{
type: "error",
name: "Banning__CannotBanSelf",
inputs: [],
},
{
type: "error",
name: "Banning__InvalidTokenId",
inputs: [
{
name: "tokenId",
type: "uint256",
internalType: "uint256",
},
],
},
{
type: "error",
name: "Banning__NotBanned",
inputs: [
{
name: "tokenId",
type: "uint256",
internalType: "uint256",
},
],
},
{
type: "error",
name: "Dispatcher__TransactionAlreadyExists",
inputs: [],
},
{
type: "error",
name: "ERC5643__DurationZero",
inputs: [],
},
{
type: "error",
name: "ERC5643__InvalidTokenId",
inputs: [
{
name: "tokenId",
type: "uint256",
internalType: "uint256",
},
],
},
{
type: "error",
name: "ERC5643__NotApprovedOrOwner",
inputs: [],
},
{
type: "error",
name: "ERC5643__SubscriptionNotRenewable",
inputs: [
{
name: "tokenId",
type: "uint256",
internalType: "uint256",
},
],
},
{
type: "error",
name: "EntitlementGated_InvalidAddress",
inputs: [],
},
{
type: "error",
name: "EntitlementGated_InvalidEntitlement",
inputs: [],
},
{
type: "error",
name: "EntitlementGated_NodeAlreadyVoted",
inputs: [],
},
{
type: "error",
name: "EntitlementGated_NodeNotFound",
inputs: [],
},
{
type: "error",
name: "EntitlementGated_OnlyEntitlementChecker",
inputs: [],
},
{
type: "error",
name: "EntitlementGated_RequestIdNotFound",
inputs: [],
},
{
type: "error",
name: "EntitlementGated_TransactionCheckAlreadyCompleted",
inputs: [],
},
{
type: "error",
name: "EntitlementGated_TransactionCheckAlreadyRegistered",
inputs: [],
},
{
type: "error",
name: "EntitlementGated_TransactionNotRegistered",
inputs: [],
},
{
type: "error",
name: "Entitlement__InvalidValue",
inputs: [],
},
{
type: "error",
name: "Entitlement__NotAllowed",
inputs: [],
},
{
type: "error",
name: "Entitlement__NotMember",
inputs: [],
},
{
type: "error",
name: "Entitlement__ValueAlreadyExists",
inputs: [],
},
{
type: "error",
name: "Initializable_InInitializingState",
inputs: [],
},
{
type: "error",
name: "Introspection_AlreadySupported",
inputs: [],
},
{
type: "error",
name: "Introspection_NotSupported",
inputs: [],
},
{
type: "error",
name: "Membership__AlreadyMember",
inputs: [],
},
{
type: "error",
name: "Membership__Banned",
inputs: [],
},
{
type: "error",
name: "Membership__InsufficientAllowance",
inputs: [],
},
{
type: "error",
name: "Membership__InsufficientPayment",
inputs: [],
},
{
type: "error",
name: "Membership__InvalidAddress",
inputs: [],
},
{
type: "error",
name: "Membership__InvalidCurrency",
inputs: [],
},
{
type: "error",
name: "Membership__InvalidDuration",
inputs: [],
},
{
type: "error",
name: "Membership__InvalidFeeRecipient",
inputs: [],
},
{
type: "error",
name: "Membership__InvalidFreeAllocation",
inputs: [],
},
{
type: "error",
name: "Membership__InvalidLimit",
inputs: [],
},
{
type: "error",
name: "Membership__InvalidMaxSupply",
inputs: [],
},
{
type: "error",
name: "Membership__InvalidPayment",
inputs: [],
},
{
type: "error",
name: "Membership__InvalidPrice",
inputs: [],
},
{
type: "error",
name: "Membership__InvalidPricingModule",
inputs: [],
},
{
type: "error",
name: "Membership__InvalidTokenId",
inputs: [],
},
{
type: "error",
name: "Membership__InvalidTransactionType",
inputs: [],
},
{
type: "error",
name: "Membership__MaxSupplyReached",
inputs: [],
},
{
type: "error",
name: "Membership__NotExpired",
inputs: [],
},
{
type: "error",
name: "Membership__PriceTooLow",
inputs: [],
},
{
type: "error",
name: "MintERC2309QuantityExceedsLimit",
inputs: [],
},
{
type: "error",
name: "MintToZeroAddress",
inputs: [],
},
{
type: "error",
name: "MintZeroQuantity",
inputs: [],
},
{
type: "error",
name: "Ownable__NotOwner",
inputs: [
{
name: "account",
type: "address",
internalType: "address",
},
],
},
{
type: "error",
name: "Ownable__ZeroAddress",
inputs: [],
},
{
type: "error",
name: "OwnerQueryForNonexistentToken",
inputs: [],
},
{
type: "error",
name: "OwnershipNotInitializedForExtraData",
inputs: [],
},
{
type: "error",
name: "PartnerRegistry__InvalidPartnerFee",
inputs: [
{
name: "fee",
type: "uint256",
internalType: "uint256",
},
],
},
{
type: "error",
name: "PartnerRegistry__InvalidRecipient",
inputs: [],
},
{
type: "error",
name: "PartnerRegistry__NotPartnerAccount",
inputs: [
{
name: "account",
type: "address",
internalType: "address",
},
],
},
{
type: "error",
name: "PartnerRegistry__PartnerAlreadyRegistered",
inputs: [
{
name: "account",
type: "address",
internalType: "address",
},
],
},
{
type: "error",
name: "PartnerRegistry__PartnerNotActive",
inputs: [
{
name: "account",
type: "address",
internalType: "address",
},
],
},
{
type: "error",
name: "PartnerRegistry__PartnerNotRegistered",
inputs: [
{
name: "account",
type: "address",
internalType: "address",
},
],
},
{
type: "error",
name: "PartnerRegistry__RegistryFeeNotPaid",
inputs: [
{
name: "fee",
type: "uint256",
internalType: "uint256",
},
],
},
{
type: "error",
name: "Pausable__NotPaused",
inputs: [],
},
{
type: "error",
name: "Pausable__Paused",
inputs: [],
},
{
type: "error",
name: "Prepay__InvalidAddress",
inputs: [],
},
{
type: "error",
name: "Prepay__InvalidAmount",
inputs: [],
},
{
type: "error",
name: "Prepay__InvalidMembership",
inputs: [],
},
{
type: "error",
name: "Prepay__InvalidSupplyAmount",
inputs: [],
},
{
type: "error",
name: "Reentrancy",
inputs: [],
},
{
type: "error",
name: "Referrals__InvalidBasisPoints",
inputs: [],
},
{
type: "error",
name: "Referrals__InvalidBpsFee",
inputs: [],
},
{
type: "error",
name: "Referrals__InvalidRecipient",
inputs: [],
},
{
type: "error",
name: "Referrals__InvalidReferralCode",
inputs: [],
},
{
type: "error",
name: "Referrals__ReferralAlreadyExists",
inputs: [],
},
{
type: "error",
name: "Roles__EntitlementAlreadyExists",
inputs: [],
},
{
type: "error",
name: "Roles__EntitlementDoesNotExist",
inputs: [],
},
{
type: "error",
name: "Roles__InvalidEntitlementAddress",
inputs: [],
},
{
type: "error",
name: "Roles__InvalidPermission",
inputs: [],
},
{
type: "error",
name: "Roles__PermissionAlreadyExists",
inputs: [],
},
{
type: "error",
name: "Roles__PermissionDoesNotExist",
inputs: [],
},
{
type: "error",
name: "Roles__RoleDoesNotExist",
inputs: [],
},
{
type: "error",
name: "TransferCallerNotOwnerNorApproved",
inputs: [],
},
{
type: "error",
name: "TransferFromIncorrectOwner",
inputs: [],
},
{
type: "error",
name: "TransferToNonERC721ReceiverImplementer",
inputs: [],
},
{
type: "error",
name: "TransferToZeroAddress",
inputs: [],
},
{
type: "error",
name: "URIQueryForNonexistentToken",
inputs: [],
},
] as const;
const _bytecode =
"0x60806040523480156200001157600080fd5b506200001c62000022565b620000ca565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef520008054640100000000900460ff16156200006f576040516366008a2d60e01b815260040160405180910390fd5b805463ffffffff9081161015620000c757805463ffffffff191663ffffffff90811782556040519081527fe9c9b456cb2994b80aeef036cf59d26e9617df80f816a6ee5a5b4166e07e2f5c9060200160405180910390a15b50565b613d8580620000da6000396000f3fe60806040526004361061012a5760003560e01c8063706b8e09116100ab57806393b13cb71161006f57806393b13cb71461031e57806395d600c81461034057806397fb7c1e14610355578063a5a4103114610375578063df9a9fe61461038a578063e847abdd146103aa57600080fd5b8063706b8e09146102a157806379dda585146102b65780637c9669ac146102cb5780638120f0ba146102de5780638c625b061461030b57600080fd5b80635803909f116100f25780635803909f146102015780635becd24a14610221578063657e45e814610241578063686f76841461026e57806369d5f38a1461028157600080fd5b80630ef1be5f1461012f5780631278076a1461015157806317c95709146101795780633e9491a2146101ce57806351cff8d9146101e1575b600080fd5b34801561013b57600080fd5b5061014f61014a36600461333c565b6103bf565b005b34801561015d57600080fd5b50610166610442565b6040519081526020015b60405180910390f35b34801561018557600080fd5b506101666101943660046133ad565b60009081527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce0060205260409020546001600160401b031690565b3480156101da57600080fd5b5047610166565b3480156101ed57600080fd5b5061014f6101fc3660046133db565b610459565b34801561020d57600080fd5b5061016661021c3660046133ad565b61051a565b34801561022d57600080fd5b5061014f61023c3660046133ad565b610533565b34801561024d57600080fd5b506102566105bd565b6040516001600160a01b039091168152602001610170565b61014f61027c36600461348d565b6105c7565b34801561028d57600080fd5b5061014f61029c3660046133ad565b61060c565b3480156102ad57600080fd5b506101666106ba565b3480156102c257600080fd5b506102566106c4565b61014f6102d93660046133ad565b6106ce565b3480156102ea57600080fd5b506102f36107f5565b6040516001600160401b039091168152602001610170565b61014f6103193660046133db565b6107ff565b34801561032a57600080fd5b50610333610842565b60405161017091906135c7565b34801561034c57600080fd5b5061016661084c565b34801561036157600080fd5b5061014f6103703660046133ad565b610864565b34801561038157600080fd5b506101666108c9565b34801561039657600080fd5b5061014f6103a53660046133db565b6108de565b3480156103b657600080fd5b5061025661095f565b6103c7610969565b6001600160a01b0316336001600160a01b0316146103ff576040516365f4906560e01b81523360048201526024015b60405180910390fd5b61043e82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a0692505050565b5050565b600061045461044f610a31565b610a67565b905090565b610461610969565b6001600160a01b0316336001600160a01b031614610494576040516365f4906560e01b81523360048201526024016103f6565b3068929eee149b4bd2126854036104b35763ab143c066000526004601cfd5b3068929eee149b4bd21268556001600160a01b0381166104dd576104dd635fbd571760e01b610bdd565b4760008190036104f7576104f7635894b54560e11b610bdd565b61050a610502610be7565b308484610c15565b503868929eee149b4bd212685550565b600061052d82610528610a31565b610c61565b92915050565b61053b610969565b6001600160a01b0316336001600160a01b03161461056e576040516365f4906560e01b81523360048201526024016103f6565b6000610586600080516020613d458339815191525490565b9050801580159061059657508082115b156105ab576105ab63c3983b9160e01b610bdd565b6105b482610cb7565b61043e82610d37565b6000610454610be7565b3068929eee149b4bd2126854036105e65763ab143c066000526004601cfd5b3068929eee149b4bd21268556105fc8282610dc6565b3868929eee149b4bd21268555050565b610614610969565b6001600160a01b0316336001600160a01b031614610647576040516365f4906560e01b81523360048201526024016103f6565b61065081610e91565b610658610f16565b6001600160a01b03166391b7f5ed826040518263ffffffff1660e01b815260040161068591815260200190565b600060405180830381600087803b15801561069f57600080fd5b505af11580156106b3573d6000803e3d6000fd5b5050505050565b6000610454610f44565b6000610454610ff3565b3068929eee149b4bd2126854036106ed5763ab143c066000526004601cfd5b3068929eee149b4bd2126855600061070482611021565b90506001600160a01b03811661072457610724635fbd571760e01b610bdd565b60008281527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce0060205260409020546001600160401b031661076361102c565b6001600160401b031661077642836135f0565b1061078b5761078b63dce9a1d360e01b610bdd565b600061079984610528610a31565b905080156107d25760006107ad8483611097565b905060006107bb82846135f0565b905080156107cf576107cd858261111f565b505b50505b6107e3846107de61102c565b611208565b5050503868929eee149b4bd212685550565b600061045461102c565b3068929eee149b4bd21268540361081e5763ab143c066000526004601cfd5b3068929eee149b4bd2126855610833816112d1565b3868929eee149b4bd212685550565b6060610454611379565b6000610454600080516020613d458339815191525490565b61086c610969565b6001600160a01b0316336001600160a01b03161461089f576040516365f4906560e01b81523360048201526024016103f6565b6108b0816108ab610a31565b61141b565b6108c681600080516020613d4583398151915255565b50565b60006104546108d961044f610a31565b611433565b6108e6610969565b6001600160a01b0316336001600160a01b031614610919576040516365f4906560e01b81523360048201526024016103f6565b61092281611587565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60880546001600160a01b0319166001600160a01b03831617905550565b6000610454610f16565b6000807fd2f24d4f172e4e84e48e7c4125b6e904c29e5eba33ad4938fee51dd5dbd4b600805460018201546040516331a9108f60e11b815260048101919091529192506001600160a01b031690636352211e90602401602060405180830381865afa1580156109dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a009190613603565b91505090565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60c61043e828261369c565b7f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df0154600080516020613d05833981519152540390565b600080610a72610f44565b9050610a7c610f16565b604051635cf4ee9160e01b815260048101839052602481018590526001600160a01b039190911690635cf4ee9190604401602060405180830381865afa158015610aca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aee919061375b565b91506000610afa6106c4565b90506000816001600160a01b0316631b159e2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b60919061375b565b905080841015610bd557816001600160a01b0316630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcc919061375b565b95945050505050565b505050919050565b8060005260046000fd5b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb604546001600160a01b031690565b8015610c5b5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03851601610c4f57610c4a828261162d565b610c5b565b610c5b84848484611640565b50505050565b60008281527fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6096020526040812054600080516020613d65833981519152908015610cae57915061052d9050565b610bcc84610a67565b610cbf6106c4565b6001600160a01b0316632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d20919061375b565b8111156108c6576108c663c3983b9160e01b610bdd565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb6078190557fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d805460ff19166001179055604051600080516020613d658339815191529082907fab14a23e88fb272313490d4f20d63098e64fd38304c0e07a377db98c2b39b92f90600090a25050565b610dcf82611693565b6000610dd96116f6565b90508015610de957610de9611751565b610df38383611785565b600082604051602001610e069190613774565b60408051601f198184030181529190529050631a1bdda160e21b6000610e3786610e32843383886117dd565b61180f565b9050600080610e47883385611913565b9150915080610e87578115610e7d578515610e6557610e6583611b34565b610e6f8389611c34565b610e7888611c82565b610e87565b610e878389611d1f565b5050505050505050565b6000610e9b6106c4565b6001600160a01b0316630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc919061375b565b90508082101561043e5761043e631a23d64760e11b610bdd565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb608546001600160a01b031690565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb60d54600090600080516020613d658339815191529060ff1615610f8a5760070154919050565b610f926106c4565b6001600160a01b0316632cbb9d136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a00919061375b565b7fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb606546001600160a01b031690565b600061052d82611d7a565b60006110366106c4565b6001600160a01b0316638120f0ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611073573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045491906137af565b60006110a282611433565b905061052d6110af610be7565b846110b86106c4565b6001600160a01b0316634ccb20c06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111199190613603565b84610c15565b6000600080516020613d6583398151915281611139610be7565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03821601611184578382600a01600082825461117491906137d8565b9091555084935061052d92505050565b60006111996001600160a01b03831630611e33565b90506111a782873088610c15565b60006111bc6001600160a01b03841630611e33565b905060006111ca83836135f0565b90508681146111e3576111e3635894b54560e11b610bdd565b8085600a0160008282546111f791906137d8565b909155509098975050505050505050565b60008281527f4775a23600034fdd9f073b224f794d51a58b35ba663a9602623ba7a5c09cce006020819052604082205490916001600160401b039091169081810361125e5761125784426137eb565b905061126b565b61126884836137eb565b90505b60008581526020848152604091829020805467ffffffffffffffff19166001600160401b038516908117909155915191825286917f2ec2be2c4b90c2cf13ecb6751a24daed6bb741ae5ed3f7371aabf9402f6d62e8910160405180910390a25050505050565b6112da81611693565b60006112e46116f6565b905080156112f4576112f4611751565b6000638c625b0660e01b9050600061132184610e32843388604051806020016040528060008152506117dd565b9050600080611331863385611913565b915091508061137157811561136757841561134f5761134f83611e5f565b6113598387611c34565b61136286611c82565b611371565b6113718387611d1f565b505050505050565b6060600080516020613d65833981519152600c01805461139890613620565b80601f01602080910402602001604051908101604052809291908181526020018280546113c490613620565b80156114115780601f106113e657610100808354040283529160200191611411565b820191906000526020600020905b8154815290600101906020018083116113f457829003601f168201915b5050505050905090565b8082101561043e5761043e636664d51760e11b610bdd565b60008061143e6106c4565b90506000816001600160a01b0316631b159e2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a4919061375b565b90508084101561151857816001600160a01b0316630eac306d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611510919061375b565b949350505050565b61151084836001600160a01b0316639f6542aa6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561155a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157e919061380b565b61ffff16611ef6565b6001600160a01b0381166115a5576115a5630e88bf4b60e01b610bdd565b6115ad610ff3565b6040516346fc05eb60e11b81526001600160a01b0383811660048301529190911690638df80bd690602401602060405180830381865afa1580156115f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116199190613844565b6108c6576108c6630e88bf4b60e01b610bdd565b61043e6001600160a01b03831682611f72565b816001600160a01b0316836001600160a01b03160315610c5b57306001600160a01b0384160361167e57610c4a6001600160a01b0385168383611f8e565b610c5b6001600160a01b038516848484611fde565b6001600160a01b0381166116b1576116b1635fbd571760e01b610bdd565b60006116c9600080516020613d458339815191525490565b905080158015906116e15750806116de610a31565b10155b1561043e5761043e637efcdb4960e01b610bdd565b600080611701610a31565b9050600061170d610f44565b9050600061171961203c565b90508282111561172d576000935050505090565b80156117475761173d6001612066565b6000935050505090565b6001935050505090565b600061175e61044f610a31565b9050600061176b826120a4565b90508034101561043e5761043e635894b54560e11b610bdd565b60208101516001600160a01b03161561043e57816001600160a01b031681602001516001600160a01b031614806117c8575060208101516001600160a01b031633145b1561043e5761043e635fbd571760e01b610bdd565b6060848484846040516020016117f6949392919061385f565b6040516020818303038152906040529050949350505050565b6040516bffffffffffffffffffffffff19606084901b16602082015243603482015260009081906054016040516020818303038152906040528051906020012090506118cf816118a38387611863866120d8565b604080516020808201959095526001600160a01b039390931683820152606080840192909252805180840390920182526080909201909152805191012090565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b915060006118dc8361210d565b5111156118f3576118f363f82e65c360e01b610bdd565b6118fd82846121de565b341561190c5761190c82612225565b5092915050565b6000806000611942604051806040016040528060098152602001684a6f696e537061636560b81b815250612272565b9050600061194f87612414565b825190915060005b81811015611b27576000848281518110611973576119736138a5565b6020026020010151905080604001511561198d5750611b1f565b60005b816080015151811015611b1c576000826080015182815181106119b5576119b56138a5565b60200260200101519050806001600160a01b0316630cf0b5336000801b88604051806040016040528060098152602001684a6f696e537061636560b81b815250604051602001611a0591906138bb565b604051602081830303815290604052611a1d906138d7565b6040518463ffffffff1660e01b8152600401611a3b939291906138fb565b602060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7c9190613844565b15611a9657506001975060009650611b2c95505050505050565b806001600160a01b0316632e1b61e46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af89190613844565b15611b1357611b0e8c8c8c84876000015161267e565b600197505b50600101611990565b50505b600101611957565b505050505b935093915050565b6000611b4161044f610a31565b90506000611b4e826120a4565b9050600080600080611b5f8761210d565b806020019051810190611b7291906139a5565b929650909450925090506001600160e01b03198416631a1bdda160e21b14611ba457611ba463da6153bd60e01b610bdd565b600081806020019051810190611bba9190613a2d565b9050600080611bc9868a611097565b90506000611bdc8785600001518c6127cc565b90506000611bf488866020015187604001518e6128a1565b90508082611c02858d6135f0565b611c0c91906135f0565b611c1691906135f0565b9350505050611c298986868a858d612988565b505050505050505050565b60008281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0160205260409020548015611c7d57611c728382612bbb565b611c7d610502610be7565b505050565b6000611c8c612c12565b9050611cce81611c9d61044f610a31565b60009182527fc21004fcc619240a31f006438274d15cd813308303284436eef6055f0fdcb609602052604090912055565b611cd9826001612c28565b611ce5816107de61102c565b60405181906001600160a01b038416907f2f40b0474996b72a4251e00fb9170cdd960deea1dc749772cbbab61395b9b57690600090a35050565b611d3882604051806020016040528060008152506121de565b611d428282611c34565b6040516001600160a01b038216907f86fd446d5c04e892d58b448a924dcd9c3ece3a5e0d2960b8c35cd475a5595a1f90600090a25050565b60008181527f6569bde4a160c636ea8b8d11acb83a60d7fec0b8f2e09389306cba0e1340df04602052604081205490600080516020613d0583398151915290600160e01b83169003611e195781600003611e135780548310611def57604051636f96cda160e11b815260040160405180910390fd5b5b600019909201600081815260048401602052604090205490929091508115611df0575b50919050565b50604051636f96cda160e11b815260040160405180910390fd5b6000816014526370a0823160601b60005260208060246010865afa601f3d111660205102905092915050565b6000611e6c61044f610a31565b90506000611e79826120a4565b90506000806000611e898661210d565b806020019051810190611e9c91906139a5565b50919450925090506001600160e01b031983166346312d8360e11b14611ecc57611ecc63da6153bd60e01b610bdd565b6000611ed88387611097565b90506000611ee682876135f0565b9050610e8788858589858c612988565b6000612710821115611f545760405162461bcd60e51b815260206004820152602160248201527f426173697320706f696e74732063616e6e6f74206578636565642031305f30306044820152600360fc1b60648201526084016103f6565b612710611f618385613ad6565b611f6b9190613aed565b9392505050565b60003860003884865af161043e5763b12d13eb6000526004601cfd5b816014528060345263a9059cbb60601b60005260206000604460106000875af18060016000511416611fd357803d853b151710611fd3576390b8ec186000526004601cfd5b506000603452505050565b60405181606052826040528360601b602c526323b872dd60601b600c52602060006064601c6000895af1806001600051141661202d57803d873b15171061202d57637939f4246000526004601cfd5b50600060605260405250505050565b60007f097b4f25b64e012d0cf55f67e9b34fe5d57f15b11b95baa4ddd136b424967c005b54919050565b7f097b4f25b64e012d0cf55f67e9b34fe5d57f15b11b95baa4ddd136b424967c0080548290829060009061209b9084906135f0565b90915550505050565b6000806120af61203c565b905080156120c05750600092915050565b826000036120d15750600092915050565b5090919050565b6000818152600080516020613d258339815191526020819052604082208054908361210283613b0f565b909155509392505050565b60008181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e02602052604090208054606091600080516020613d258339815191529161215890613620565b80601f016020809104026020016040519081016040528092919081815260200182805461218490613620565b80156121d15780601f106121a6576101008083540402835291602001916121d1565b820191906000526020600020905b8154815290600101906020018083116121b457829003601f168201915b5050505050915050919050565b60008281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e0260205260409020600080516020613d2583398151915290610c5b838261369c565b60008181527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e01602052604081208054600080516020613d258339815191529234929161209b9084906137d8565b6060600061227e612c42565b80519091506000816001600160401b0381111561229d5761229d6133f8565b60405190808252806020026020018201604052801561230257816020015b6122ef6040518060a00160405280600081526020016060815260200160001515815260200160608152602001606081525090565b8152602001906001900390816122bb5790505b5085516020870120909150600090815b84811015612408576000806000806123428a8681518110612335576123356138a5565b6020026020010151612c6d565b935093509350935060005b82518110156123f75786838281518110612369576123696138a5565b602002602001015180519060200120036123ef576040518060a001604052808c888151811061239a5761239a6138a5565b602002602001015181526020018681526020018515158152602001848152602001838152508989815181106123d1576123d16138a5565b602002602001018190525087806123e790613b0f565b9850506123f7565b60010161234d565b505060019093019250612312915050565b50508152949350505050565b60606000600080516020613d658339815191526006015460405162468b7360e31b81526001600160a01b038581166004830152909116915060009082906302345b9890602401600060405180830381865afa158015612477573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261249f9190810190613b28565b905080516000036125a057604051631f04207360e31b81526001600160a01b0385811660048301526000919084169063f821039890602401602060405180830381865afa1580156124f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125189190613603565b90506001600160a01b0381161561259e5760405162468b7360e31b81526001600160a01b03808316600483015291955085918416906302345b9890602401600060405180830381865afa158015612573573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261259b9190810190613b28565b91505b505b805160006125af8260016137d8565b6001600160401b038111156125c6576125c66133f8565b6040519080825280602002602001820160405280156125ef578160200160208202803683370190505b50905060005b828110156126495783818151811061260f5761260f6138a5565b6020026020010151828281518110612629576126296138a5565b6001600160a01b03909216602092830291909101909101526001016125f5565b508581838151811061265d5761265d6138a5565b6001600160a01b039092166020928302919091019091015295945050505050565b6001600160a01b03851661269c5761269c63133de07160e31b610bdd565b6001600160a01b0382166126ba576126ba634bb7c20560e01b610bdd565b60008381527f9075c515a635ba70c9696f31149324218d75cf00afe836c482e6473f38b19e0160209081526040808320805460ff191660011781556003810180546001600160a01b0319166001600160a01b03888116919091179091558251908916938101939093527f9075c515a635ba70c9696f31149324218d75cf00afe836c482e6473f38b19e0093909290910160408051601f198184030181529082905284546310df028560e11b83529092506001600160a01b0316906321be050a903490612790908c908b908a908890600401613bd9565b6000604051808303818588803b1580156127a957600080fd5b505af11580156127bd573d6000803e3d6000fd5b50505050505050505050505050565b60006001600160a01b0383166127e457506000611f6b565b60006127ee610ff3565b604051630b969ea960e31b81526001600160a01b0386811660048301529190911690635cb4f54890602401608060405180830381865afa158015612836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285a9190613c06565b90508060400151600003612872576000915050611f6b565b612880838260400151611ef6565b915061289961288d610be7565b86836020015185610c15565b509392505050565b600082516000146129125760006128b784612d8f565b60408101519091506001600160a01b031615806128d657506020810151155b156128e5576000915050611510565b6128f3838260200151611ef6565b915061290c612900610be7565b87836040015185610c15565b50611510565b6001600160a01b0384161561151057846001600160a01b0316846001600160a01b03160361294257506000611510565b6129738261296e7faca21cc4d2a125f3e0ae03aa135d42b2b9177631aca87599d42a68b47e9008015490565b611ef6565b9050611510612980610be7565b868684610c15565b811561299a57612998858361111f565b505b6129a48684612bbb565b6129bd86604051806020016040528060008152506121de565b60006129c7610ff3565b604051628956cd60e71b81526b0526976657241697264726f760a41b60048201526001600160a01b0391909116906344ab668090602401602060405180830381865afa158015612a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3f9190613603565b90506000816001600160a01b031663dc69fdde600085604051602001612a6791815260200190565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401612a93929190613c7f565b602060405180830381865afa158015612ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad4919061375b565b6040516340c10f1960e01b81526001600160a01b03888116600483015260248201839052919250908316906340c10f1990604401600060405180830381600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b50505050816001600160a01b03166340c10f19612b51610969565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b158015612b9957600080fd5b505af1158015612bad573d6000803e3d6000fd5b505050505050505050505050565b60008281527f34516f6fe09a043d57f1ff579a303a7ae85314751c77b4eb1a55837604a86e016020526