/* 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 {
  SuperGalaticFactory,
  SuperGalaticFactoryInterface,
} from "../SuperGalaticFactory";

const _abi = [
  {
    type: "constructor",
    inputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "DEFAULT_ADMIN_ROLE",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "bytes32",
        internalType: "bytes32",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "PRICE_UPDATE_ROLE",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "bytes32",
        internalType: "bytes32",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "addUpdatePriceRole",
    inputs: [
      {
        name: "addr",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "alreadyPurchasedLootBoxCount",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "alreadyUsedSignature",
    inputs: [
      {
        name: "",
        type: "bytes",
        internalType: "bytes",
      },
    ],
    outputs: [
      {
        name: "",
        type: "bool",
        internalType: "bool",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "backendSigner",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "beamAmountPerNft",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "blockNumberWaitingForRandom",
    inputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "burnWallet",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "concatSignature",
    inputs: [
      {
        name: "v",
        type: "uint8",
        internalType: "uint8",
      },
      {
        name: "r",
        type: "bytes32",
        internalType: "bytes32",
      },
      {
        name: "s",
        type: "bytes32",
        internalType: "bytes32",
      },
    ],
    outputs: [
      {
        name: "",
        type: "bytes",
        internalType: "bytes",
      },
    ],
    stateMutability: "pure",
  },
  {
    type: "function",
    name: "factoryHelper",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "getRoleAdmin",
    inputs: [
      {
        name: "role",
        type: "bytes32",
        internalType: "bytes32",
      },
    ],
    outputs: [
      {
        name: "",
        type: "bytes32",
        internalType: "bytes32",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "getWeaponUsdtPrice",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "grantRole",
    inputs: [
      {
        name: "role",
        type: "bytes32",
        internalType: "bytes32",
      },
      {
        name: "account",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "hasRole",
    inputs: [
      {
        name: "role",
        type: "bytes32",
        internalType: "bytes32",
      },
      {
        name: "account",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [
      {
        name: "",
        type: "bool",
        internalType: "bool",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "initialize",
    inputs: [
      {
        name: "_admin",
        type: "address",
        internalType: "address",
      },
      {
        name: "_beacon",
        type: "address",
        internalType: "address",
      },
      {
        name: "_plasmaAddr",
        type: "address",
        internalType: "address",
      },
      {
        name: "_plasmaAmountPerNFT",
        type: "uint256",
        internalType: "uint256",
      },
      {
        name: "_weaponPrice",
        type: "uint256",
        internalType: "uint256",
      },
      {
        name: "_uap",
        type: "address",
        internalType: "address",
      },
      {
        name: "_factoryHelper",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "isSuperGalaticNFTContract",
    inputs: [
      {
        name: "_nftAddress",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [
      {
        name: "",
        type: "bool",
        internalType: "bool",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "isSuperGalatics",
    inputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [
      {
        name: "",
        type: "bool",
        internalType: "bool",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "marketplaceContract",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "merkleRoot",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "bytes32",
        internalType: "bytes32",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "mintBatchSuperGalatic",
    inputs: [
      {
        name: "categoryIds",
        type: "uint256[]",
        internalType: "uint256[]",
      },
      {
        name: "amounts",
        type: "uint256[]",
        internalType: "uint256[]",
      },
      {
        name: "_merkleProof",
        type: "bytes32[]",
        internalType: "bytes32[]",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "mintWithBeam",
    inputs: [
      {
        name: "categoryIds",
        type: "uint256[]",
        internalType: "uint256[]",
      },
      {
        name: "amounts",
        type: "uint256[]",
        internalType: "uint256[]",
      },
      {
        name: "_merkleProof",
        type: "bytes32[]",
        internalType: "bytes32[]",
      },
    ],
    outputs: [],
    stateMutability: "payable",
  },
  {
    type: "function",
    name: "mintWithUSDT",
    inputs: [
      {
        name: "categoryIds",
        type: "uint256[]",
        internalType: "uint256[]",
      },
      {
        name: "amounts",
        type: "uint256[]",
        internalType: "uint256[]",
      },
      {
        name: "_merkleProof",
        type: "bytes32[]",
        internalType: "bytes32[]",
      },
    ],
    outputs: [],
    stateMutability: "payable",
  },
  {
    type: "function",
    name: "nftContracts",
    inputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    outputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "openLootBoxBySignature",
    inputs: [
      {
        name: "v",
        type: "uint8",
        internalType: "uint8",
      },
      {
        name: "r",
        type: "bytes32",
        internalType: "bytes32",
      },
      {
        name: "s",
        type: "bytes32",
        internalType: "bytes32",
      },
      {
        name: "_info",
        type: "tuple",
        internalType: "struct EIP712SuperGalaticFactory.WeaponInfo",
        components: [
          {
            name: "rarity",
            type: "uint256",
            internalType: "uint256",
          },
          {
            name: "weaponType",
            type: "uint256",
            internalType: "uint256",
          },
          {
            name: "owner",
            type: "address",
            internalType: "address",
          },
          {
            name: "salt",
            type: "uint256",
            internalType: "uint256",
          },
          {
            name: "tokenId",
            type: "uint256",
            internalType: "uint256",
          },
        ],
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "openRound",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "phase",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "plasmaAddr",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "plasmaAmountPerNFT",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "purchaseLootbox",
    inputs: [
      {
        name: "quantity",
        type: "uint256",
        internalType: "uint256",
      },
      {
        name: "_tokenType",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "purchaseLootboxAndSendGift",
    inputs: [
      {
        name: "quantity",
        type: "uint256",
        internalType: "uint256",
      },
      {
        name: "_giftReceiver",
        type: "address",
        internalType: "address",
      },
      {
        name: "_tokenType",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "registerForMint",
    inputs: [],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "removeUpdatePriceSole",
    inputs: [
      {
        name: "addr",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "renounceRole",
    inputs: [
      {
        name: "role",
        type: "bytes32",
        internalType: "bytes32",
      },
      {
        name: "account",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "reserveWallet",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "revenueWallet",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "revokeRole",
    inputs: [
      {
        name: "role",
        type: "bytes32",
        internalType: "bytes32",
      },
      {
        name: "account",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "round1End",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "round1Start",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "round2End",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "round2Start",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "round3End",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "round3Start",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "setBackendSigner",
    inputs: [
      {
        name: "_bkSigner",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "setMarketplaceAddress",
    inputs: [
      {
        name: "_marketplace",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "setMerkeRoot",
    inputs: [
      {
        name: "merkleRootHash",
        type: "bytes32",
        internalType: "bytes32",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "setPhase",
    inputs: [
      {
        name: "phaseValue",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "setRoundInfo",
    inputs: [
      {
        name: "startTime",
        type: "uint256",
        internalType: "uint256",
      },
      {
        name: "endTime",
        type: "uint256",
        internalType: "uint256",
      },
      {
        name: "round",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "setRouterAddress",
    inputs: [
      {
        name: "router",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "setTokenAddresses",
    inputs: [
      {
        name: "_weth",
        type: "address",
        internalType: "address",
      },
      {
        name: "_ufo",
        type: "address",
        internalType: "address",
      },
      {
        name: "_usdt",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "slippage",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "supportsInterface",
    inputs: [
      {
        name: "interfaceId",
        type: "bytes4",
        internalType: "bytes4",
      },
    ],
    outputs: [
      {
        name: "",
        type: "bool",
        internalType: "bool",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "totalUSerOwnedCount",
    inputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "uapAddr",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "ufoAddress",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "updateBeamPriceOfNft",
    inputs: [
      {
        name: "price",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "updateFactoryHelperAddr",
    inputs: [
      {
        name: "_factoryHelperAddr",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "updateGenesisNftPrice",
    inputs: [
      {
        name: "_priceInUSDT",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "updateNFTBodypart",
    inputs: [
      {
        name: "nftContract",
        type: "address",
        internalType: "address",
      },
      {
        name: "nftId",
        type: "uint256",
        internalType: "uint256",
      },
      {
        name: "bodyType",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "updatePlasmaAddr",
    inputs: [
      {
        name: "_plasma",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "updatePlasmaAmountPerNFT",
    inputs: [
      {
        name: "_plasmaAmount",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "updatePriceOfWeaponNFT",
    inputs: [
      {
        name: "_price",
        type: "uint256",
        internalType: "uint256",
      },
      {
        name: "_tokenType",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "updateWeapon",
    inputs: [
      {
        name: "_weaponId",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "updateWeaponAddr",
    inputs: [
      {
        name: "_weapon",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "usdtAddress",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "usdtAmountPerNFT",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "weaponNFT",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "weaponPrice",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "weaponUfoPrice",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "weaponUsdtPrice",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "uint256",
        internalType: "uint256",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "wethAddr",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "address",
        internalType: "address",
      },
    ],
    stateMutability: "view",
  },
  {
    type: "function",
    name: "withdraw",
    inputs: [
      {
        name: "receiver",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "function",
    name: "withdrawPlasma",
    inputs: [
      {
        name: "recipient",
        type: "address",
        internalType: "address",
      },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    type: "event",
    name: "CreateSuperGalatic",
    inputs: [
      {
        name: "nftIndex",
        type: "uint256",
        indexed: true,
        internalType: "uint256",
      },
      {
        name: "nftContract",
        type: "address",
        indexed: true,
        internalType: "address",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "GrantPriceUpdateRole",
    inputs: [
      {
        name: "addr",
        type: "address",
        indexed: false,
        internalType: "address",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "Initialized",
    inputs: [
      {
        name: "version",
        type: "uint8",
        indexed: false,
        internalType: "uint8",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "RemovePriceUpdateRole",
    inputs: [
      {
        name: "addr",
        type: "address",
        indexed: false,
        internalType: "address",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "RoleAdminChanged",
    inputs: [
      {
        name: "role",
        type: "bytes32",
        indexed: true,
        internalType: "bytes32",
      },
      {
        name: "previousAdminRole",
        type: "bytes32",
        indexed: true,
        internalType: "bytes32",
      },
      {
        name: "newAdminRole",
        type: "bytes32",
        indexed: true,
        internalType: "bytes32",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "RoleGranted",
    inputs: [
      {
        name: "role",
        type: "bytes32",
        indexed: true,
        internalType: "bytes32",
      },
      {
        name: "account",
        type: "address",
        indexed: true,
        internalType: "address",
      },
      {
        name: "sender",
        type: "address",
        indexed: true,
        internalType: "address",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "RoleRevoked",
    inputs: [
      {
        name: "role",
        type: "bytes32",
        indexed: true,
        internalType: "bytes32",
      },
      {
        name: "account",
        type: "address",
        indexed: true,
        internalType: "address",
      },
      {
        name: "sender",
        type: "address",
        indexed: true,
        internalType: "address",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "SetBackendSigner",
    inputs: [
      {
        name: "signer",
        type: "address",
        indexed: false,
        internalType: "address",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "UpdateFactoryHelper",
    inputs: [
      {
        name: "newHelperAddr",
        type: "address",
        indexed: false,
        internalType: "address",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "UpdateGenesisNftPrice",
    inputs: [
      {
        name: "usdtPrice",
        type: "uint256",
        indexed: false,
        internalType: "uint256",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "UpdateMarketplaceAddr",
    inputs: [
      {
        name: "newMarketplace",
        type: "address",
        indexed: false,
        internalType: "address",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "UpdateMerkleRoot",
    inputs: [
      {
        name: "root",
        type: "bytes32",
        indexed: false,
        internalType: "bytes32",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "UpdateNftBeamPrice",
    inputs: [
      {
        name: "price",
        type: "uint256",
        indexed: false,
        internalType: "uint256",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "UpdateNftPriceInPlasma",
    inputs: [
      {
        name: "plasmaPrice",
        type: "uint256",
        indexed: false,
        internalType: "uint256",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "UpdatePhase",
    inputs: [
      {
        name: "phase",
        type: "uint256",
        indexed: false,
        internalType: "uint256",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "UpdatePlasmaAddr",
    inputs: [
      {
        name: "newPlasma",
        type: "address",
        indexed: false,
        internalType: "address",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "UpdateRoundInfo",
    inputs: [
      {
        name: "start",
        type: "uint256",
        indexed: false,
        internalType: "uint256",
      },
      {
        name: "end",
        type: "uint256",
        indexed: false,
        internalType: "uint256",
      },
      {
        name: "round",
        type: "uint256",
        indexed: false,
        internalType: "uint256",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "UpdateUfoAddr",
    inputs: [
      {
        name: "ufo",
        type: "address",
        indexed: false,
        internalType: "address",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "UpdateUsdtAddr",
    inputs: [
      {
        name: "usdt",
        type: "address",
        indexed: false,
        internalType: "address",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "UpdateWeaponAddr",
    inputs: [
      {
        name: "newWeapon",
        type: "address",
        indexed: false,
        internalType: "address",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "UpdateWeaponPrice",
    inputs: [
      {
        name: "price",
        type: "uint256",
        indexed: false,
        internalType: "uint256",
      },
      {
        name: "tokenType",
        type: "uint256",
        indexed: false,
        internalType: "uint256",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "UpdateWrappedNativeAddr",
    inputs: [
      {
        name: "wNative",
        type: "address",
        indexed: false,
        internalType: "address",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "Withdraw",
    inputs: [
      {
        name: "receiver",
        type: "address",
        indexed: false,
        internalType: "address",
      },
      {
        name: "amount",
        type: "uint256",
        indexed: false,
        internalType: "uint256",
      },
    ],
    anonymous: false,
  },
  {
    type: "event",
    name: "WithdrawPlasma",
    inputs: [
      {
        name: "recipient",
        type: "address",
        indexed: false,
        internalType: "address",
      },
      {
        name: "amount",
        type: "uint256",
        indexed: false,
        internalType: "uint256",
      },
    ],
    anonymous: false,
  },
  {
    type: "error",
    name: "AddressNotNull",
    inputs: [],
  },
  {
    type: "error",
    name: "CannotMintMore",
    inputs: [],
  },
  {
    type: "error",
    name: "CannotMintRandomNft",
    inputs: [],
  },
  {
    type: "error",
    name: "InvalidSignature",
    inputs: [],
  },
  {
    type: "error",
    name: "NotEnoughBEAM",
    inputs: [],
  },
  {
    type: "error",
    name: "OnlyAvailableInBetaOpen",
    inputs: [],
  },
  {
    type: "error",
    name: "SetInfoEndTimeError",
    inputs: [
      {
        name: "time",
        type: "uint256",
        internalType: "uint256",
      },
    ],
  },
  {
    type: "error",
    name: "SetInfoError",
    inputs: [
      {
        name: "start",
        type: "uint256",
        internalType: "uint256",
      },
      {
        name: "end",
        type: "uint256",
        internalType: "uint256",
      },
    ],
  },
  {
    type: "error",
    name: "SetInfoStartTimeError",
    inputs: [
      {
        name: "time",
        type: "uint256",
        internalType: "uint256",
      },
    ],
  },
  {
    type: "error",
    name: "WrongParameters",
    inputs: [],
  },
  {
    type: "error",
    name: "WrongRound",
    inputs: [],
  },
] as const;

const _bytecode =
  "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6156b980620000f36000396000f3fe6080604052600436106200047f5760003560e01c80637a5e1c181162000257578063b8b6f0751162000147578063d1bb5cf111620000c5578063df2eee191162000084578063df2eee191462000e16578063e562dfd91462000e2e578063ed6943141462000e46578063fc7b15d21462000e5e578063fd53f53b1462000e8357600080fd5b8063d1bb5cf11462000d7e578063d547741f1462000da0578063d72b11bd1462000dc5578063dbd2cb691462000de7578063ddb42a721462000dff57600080fd5b8063c6cc51d31162000112578063c6cc51d31462000cd0578063c6d9cfcc1462000cf5578063c8a131891462000d29578063d0ffc9b81462000d41578063d1b5c6431462000d5957600080fd5b8063b8b6f0751462000c56578063bc39a82f1462000c7b578063bc79daeb1462000ca0578063c08b3aa01462000cb857600080fd5b806391d1485411620001d5578063a9d600cd11620001a0578063a9d600cd1462000bc4578063b04668631462000bdc578063b1c9fe6e1462000bf4578063b47cc5561462000c0c578063b62d08d41462000c3157600080fd5b806391d148541462000b415780639ab4a4451462000b66578063a217fddf1462000b88578063a424c7831462000b9f57600080fd5b8063847d34fb1162000222578063847d34fb1462000a6b5780638825213f1462000a835780638d1516e91462000ac25780638d94e5e91462000af65780638d9c39711462000b1b57600080fd5b80637a5e1c1814620009e85780637d5aa5f41462000a0d5780637f9bb0721462000a2f578063816629c71462000a5457600080fd5b806336f9567011620003735780634d3f9d3e11620002f1578063628b37c711620002bc578063628b37c7146200094f578063628c75d01462000974578063657128c2146200098c57806365d65e8614620009a45780636bb7527214620009c657600080fd5b80634d3f9d3e14620008be57806351cff8d914620008e3578063562429bc14620009085780636213b727146200092a57600080fd5b806341cb87fc116200033e57806341cb87fc146200082557806344478425146200084a578063467150ee146200086c5780634ac0ab1c14620008845780634c4cbca5146200089c57600080fd5b806336f956701462000786578063389fa61514620007ab5780633ca7b4ea14620007e85780633e032a3b146200080d57600080fd5b806327c1c94a11620004015780632f2ff15d11620003cc5780632f2ff15d14620006c157806331f20de814620006e6578063334672c1146200071757806335460670146200073c57806336568abe146200076157600080fd5b806327c1c94a146200063a5780632b6b5052146200065f5780632cc8265514620006845780632eb4a7ab14620006a957600080fd5b80630bb4d82a116200044e5780630bb4d82a1462000560578063142f25a9146200059a5780631551fbc414620005bf57806321b7e5e614620005e4578063248a9ca3146200060657600080fd5b806301ffc9a714620004845780630417678214620004be5780630505b2b414620004fe578063062287491462000525575b600080fd5b3480156200049157600080fd5b50620004a9620004a336600462004866565b62000ea5565b60405190151581526020015b60405180910390f35b348015620004cb57600080fd5b50620004ef620004dd366004620045f8565b60e86020526000908152604090205481565b604051908152602001620004b5565b3480156200050b57600080fd5b50620005236200051d366004620045f8565b62000edd565b005b3480156200053257600080fd5b5060e15462000547906001600160a01b031681565b6040516001600160a01b039091168152602001620004b5565b3480156200056d57600080fd5b50620005476200057f36600462004819565b60dd602052600090815260409020546001600160a01b031681565b348015620005a757600080fd5b5062000523620005b9366004620049a2565b62000f6e565b348015620005cc57600080fd5b5062000523620005de36600462004719565b6200102d565b348015620005f157600080fd5b5060d55462000547906001600160a01b031681565b3480156200061357600080fd5b50620004ef6200062536600462004819565b60009081526065602052604090206001015490565b3480156200064757600080fd5b50620005236200065936600462004819565b6200130b565b3480156200066c57600080fd5b50620005236200067e366004620045f8565b6200134e565b3480156200069157600080fd5b5062000523620006a336600462004819565b620013d8565b348015620006b657600080fd5b50620004ef60e05481565b348015620006ce57600080fd5b5062000523620006e036600462004833565b6200141b565b348015620006f357600080fd5b50620004ef62000705366004620045f8565b60ea6020526000908152604090205481565b3480156200072457600080fd5b50620005236200073636600462004819565b62001449565b3480156200074957600080fd5b50620005236200075b366004620049a2565b6200149a565b3480156200076e57600080fd5b50620005236200078036600462004833565b620016e6565b3480156200079357600080fd5b5062000523620007a5366004620045f8565b62001764565b348015620007b857600080fd5b50620004a9620007ca366004620045f8565b6001600160a01b0316600090815260de602052604090205460ff1690565b348015620007f557600080fd5b50620005236200080736600462004819565b620017e8565b3480156200081a57600080fd5b50620004ef60e75481565b3480156200083257600080fd5b506200052362000844366004620045f8565b6200182b565b3480156200085757600080fd5b5060e35462000547906001600160a01b031681565b3480156200087957600080fd5b50620004ef60d35481565b3480156200089157600080fd5b50620004ef60d75481565b348015620008a957600080fd5b5060cb5462000547906001600160a01b031681565b348015620008cb57600080fd5b5062000523620008dd36600462004638565b6200185b565b348015620008f057600080fd5b506200052362000902366004620045f8565b62001995565b3480156200091557600080fd5b5060cd5462000547906001600160a01b031681565b3480156200093757600080fd5b5062000523620009493660046200468a565b620019ed565b3480156200095c57600080fd5b50620005236200096e366004620045f8565b62001d1a565b3480156200098157600080fd5b50620004ef60d05481565b3480156200099957600080fd5b50620004ef60db5481565b348015620009b157600080fd5b5060c95462000547906001600160a01b031681565b348015620009d357600080fd5b5060ce5462000547906001600160a01b031681565b348015620009f557600080fd5b506200052362000a0736600462004819565b62001d9e565b34801562000a1a57600080fd5b5060e45462000547906001600160a01b031681565b34801562000a3c57600080fd5b506200052362000a4e366004620045f8565b62001de1565b6200052362000a6536600462004751565b62001eca565b34801562000a7857600080fd5b50620004ef60d95481565b34801562000a9057600080fd5b50620004a962000aa236600462004892565b805160208183018101805160e98252928201919093012091525460ff1681565b34801562000acf57600080fd5b50620004a962000ae1366004620045f8565b60de6020526000908152604090205460ff1681565b34801562000b0357600080fd5b506200052362000b1536600462004967565b6200224e565b34801562000b2857600080fd5b506200052333600090815260ea60205260409020439055565b34801562000b4e57600080fd5b50620004a962000b6036600462004833565b6200249e565b34801562000b7357600080fd5b5060e55462000547906001600160a01b031681565b34801562000b9557600080fd5b50620004ef600081565b34801562000bac57600080fd5b506200052362000bbe366004620045f8565b620024c9565b34801562000bd157600080fd5b50620004ef60d45481565b34801562000be957600080fd5b50620004ef6200254d565b34801562000c0157600080fd5b50620004ef60df5481565b34801562000c1957600080fd5b506200052362000c2b366004620045f8565b62002598565b34801562000c3e57600080fd5b506200052362000c5036600462004819565b6200261c565b34801562000c6357600080fd5b50620004ef6000805160206200568d83398151915281565b34801562000c8857600080fd5b506200052362000c9a36600462004a67565b62002884565b34801562000cad57600080fd5b50620004ef60cf5481565b34801562000cc557600080fd5b50620004ef60da5481565b34801562000cdd57600080fd5b506200052362000cef366004620049ea565b62002972565b34801562000d0257600080fd5b5062000d1a62000d1436600462004a46565b62002b96565b604051620004b5919062004bcb565b34801562000d3657600080fd5b50620004ef60d65481565b34801562000d4e57600080fd5b50620004ef60d85481565b34801562000d6657600080fd5b506200052362000d7836600462004751565b62002bd3565b34801562000d8b57600080fd5b5060cc5462000547906001600160a01b031681565b34801562000dad57600080fd5b506200052362000dbf36600462004833565b62002d63565b34801562000dd257600080fd5b5060e25462000547906001600160a01b031681565b34801562000df457600080fd5b50620004ef60d15481565b6200052362000e1036600462004751565b62002d8c565b34801562000e2357600080fd5b50620004ef60d25481565b34801562000e3b57600080fd5b50620004ef60dc5481565b34801562000e5357600080fd5b50620004ef60eb5481565b34801562000e6b57600080fd5b506200052362000e7d366004620045f8565b62003105565b34801562000e9057600080fd5b5060ca5462000547906001600160a01b031681565b60006001600160e01b03198216637965db0b60e01b148062000ed757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600062000eea8162003189565b6001600160a01b03821662000f125760405163f8b7150760e01b815260040160405180910390fd5b62000f2d6000805160206200568d8339815191528362003198565b6040516001600160a01b03831681527f0c1599a415df7df1043c154c0ad7818459c975b2019450a1a5c5381def6a0d78906020015b60405180910390a15050565b600062000f7b8162003189565b6040805180820190915260028152610ccd60f21b60208201526003831062000fc15760405162461bcd60e51b815260040162000fb8919062004bcb565b60405180910390fd5b508162000fd35760d283905562000fee565b816001141562000fe85760d483905562000fee565b60d38390555b60408051848152602081018490527fa2a06a48cf0ad8605be8181861290033a1f5bdbd40cd999dbb30d354ce42291f91015b60405180910390a1505050565b60068111806200103b575080155b156200105a5760405163bd28cf5f60e01b815260040160405180910390fd5b6001600160a01b038316600090815260de60209081526040918290205482518084019093526002835261313560f01b9183019190915260ff16620010b35760405162461bcd60e51b815260040162000fb8919062004bcb565b50620010c183338462003222565b604051806040016040528060018152602001601960f91b81525090620010fc5760405162461bcd60e51b815260040162000fb8919062004bcb565b50604051631df5f84360e11b8152600481018390526024810182905260009081906001600160a01b03861690633bebf08690604401604080518083038186803b1580156200114957600080fd5b505afa1580156200115e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011849190620049c5565b91509150620011a882826003811115620011a257620011a262004d22565b620032bb565b604051806040016040528060018152602001602360f91b81525090620011e35760405162461bcd60e51b815260040162000fb8919062004bcb565b5060ca546000906001600160a01b031663db863276836200120686600162004c2b565b6040516001600160e01b031960e085901b1681526004810192909252602482015260440160206040518083038186803b1580156200124357600080fd5b505afa15801562001258573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200127e91906200494d565b6200129290670de0b6b3a764000062004c69565b9050620012a0813362003310565b604051638000209160e01b815260048101859052602481018690526001600160a01b03871690638000209190604401600060405180830381600087803b158015620012ea57600080fd5b505af1158015620012ff573d6000803e3d6000fd5b50505050505050505050565b6000620013188162003189565b60e08290556040518281527fae8bdbc15b982b030d313524fca26f653a8826332c662cb93c670068172d217e9060200162000f62565b60006200135b8162003189565b6001600160a01b038216620013835760405163f8b7150760e01b815260040160405180910390fd5b6200139e6000805160206200568d8339815191528362002d63565b6040516001600160a01b03831681527f71a08fb94bdb69a641149d5205dc5302a41c829df340a4b4623bcacac213fd399060200162000f62565b6000620013e58162003189565b60df8290556040518281527f950f882195edb5ea868063c1d152918a8cfff7d9f80aba11c970763f87a826e89060200162000f62565b600082815260656020526040902060010154620014388162003189565b62001444838362003198565b505050565b6000805160206200568d833981519152620014648162003189565b60d18290556040518281527f10797db75e153daf26ab5f826d87e077c0fd35336632791e6cd5e9e2203f6f389060200162000f62565b620014a462003513565b6127108260eb54620014b7919062004c2b565b1115620014d75760405163e2a5313760e01b815260040160405180910390fd5b600080620014e5836200356f565b90925090506000620014f8858462004c69565b604051636eb1769f60e11b815233600482015230602482015290915081906001600160a01b0384169063dd62ed3e9060440160206040518083038186803b1580156200154357600080fd5b505afa15801562001558573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200157e91906200494d565b101560405180604001604052806002815260200161191960f11b81525090620015bc5760405162461bcd60e51b815260040162000fb8919062004bcb565b506040516323b872dd60e01b81526001600160a01b038316906323b872dd90620015ef9033903090869060040162004b81565b602060405180830381600087803b1580156200160a57600080fd5b505af11580156200161f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016459190620047f5565b5060cb546040516332d46d5f60e01b81526004810187905233602482015260448101839052606481018690526001600160a01b03909116906332d46d5f90608401600060405180830381600087803b158015620016a157600080fd5b505af1158015620016b6573d6000803e3d6000fd5b505050508460eb6000828254620016ce919062004c2b565b9091555050600160975550620016e2915050565b5050565b6001600160a01b0381163314620017585760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840162000fb8565b620016e2828262003620565b6000620017718162003189565b6001600160a01b038216620017995760405163f8b7150760e01b815260040160405180910390fd5b60c980546001600160a01b0319166001600160a01b0384169081179091556040519081527f51ad1d0f5aa4dce01cdbd1ffce145596092a73bcb73db321a014518db8b55b229060200162000f62565b6000620017f58162003189565b60cf8290556040518281527fd80634d8ccc9a8044b81b386ba3360632ef2df87981d13df91a27c21f9405a889060200162000f62565b6000620018388162003189565b5060e680546001600160a01b0319166001600160a01b0392909216919091179055565b6000620018688162003189565b6001600160a01b03841615620018ca5760e480546001600160a01b0319166001600160a01b0386169081179091556040519081527f76007df2bb027b05db3255d900349c109dd5f1811b2f9bf447a14144ca76452b9060200160405180910390a15b6001600160a01b038316156200192c5760d580546001600160a01b0319166001600160a01b0385169081179091556040519081527ffffb08c841cdfb56c0107c5d4bdc815f66bdc90947ca9923bf2c58d1b5b5fbc29060200160405180910390a15b6001600160a01b038216156200198f5760e580546001600160a01b0319166001600160a01b0384169081179091556040519081527fa93511a455ce22450ebdd0bb324e562191f0947dfdfa6e3b87bb82f4dd8502a0906020015b60405180910390a15b50505050565b6000620019a28162003189565b620019ae82476200368a565b604080516001600160a01b03841681524760208201527f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364910162000f62565b600054610100900460ff161580801562001a0e5750600054600160ff909116105b8062001a2a5750303b15801562001a2a575060005460ff166001145b62001a8f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000fb8565b6000805460ff19166001179055801562001ab3576000805461ff0019166101001790555b6001600160a01b038816158062001ad157506001600160a01b038716155b8062001ae457506001600160a01b038616155b8062001af757506001600160a01b038316155b1562001b165760405163f8b7150760e01b815260040160405180910390fd5b62001b20620037a9565b62001b2a620037d5565b62001b3760008962003198565b60cd80546001600160a01b038089166001600160a01b03199283161790925560cf87905560ca805485841690831617905560d28690556301c9c38060d35569d3c21bcecceda100000060d45560ce8054928616928216929092179091556901c5324e5ad259a0000060d15560fa60d055606460e75560e18054821673dead00000000000000004206942069420694206917905560e28054821673f9690a9521c9c4cea419b70d3720f958a837c3f817905560e38054821673b980d88ae1e9599096e6030fb5381483e4312f3117905560e58054821673999f90f25a2922ae1b21a06066f7edebedad42a917905560e48054821673d51bfa777609213a653a2cd067c9a0132a2d316a17905560e6805490911673965b104e250648d01d4b3b72bac751cde809d29e17905560005b600a81101562001c905762001c7b89898362003809565b8062001c878162004cee565b91505062001c64565b506367f85b8060d6556367fc500060d7556367fda18060d855636800448060d955636801960060da55636804390060db556368058a8060dc55801562001d10576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b600062001d278162003189565b6001600160a01b03821662001d4f5760405163f8b7150760e01b815260040160405180910390fd5b60ca80546001600160a01b0319166001600160a01b0384169081179091556040519081527f7bf10f89b05788c765ea1d9d5d613224cf4c42dd9646c5d07f6c627afda3f3e09060200162000f62565b600062001dab8162003189565b60d08290556040518281527f33dc8fd53ad74509c6e95a92cd0fbc8e2d674a94106c8a08fd49b5ca1e0ca1479060200162000f62565b600062001dee8162003189565b60cd546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801562001e3357600080fd5b505afa15801562001e48573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e6e91906200494d565b60cd5490915062001e8a906001600160a01b0316848362003923565b604080516001600160a01b0385168152602081018390527f010a5b2e79ead477789f19dd02af3588808775c591b3b1198d173c4d63b473b0910162001020565b62001ed462003513565b33600090815260ea602052604090205443148062001eff575033600090815260ea6020526040902054155b1562001f1e5760405163d0c2348760e01b815260040160405180910390fd5b33600090815260ea602052604081205560dc5442101562001f525760405163461b04cd60e01b815260040160405180910390fd5b60df5462001fa45762001f66828262003988565b60405180604001604052806002815260200161323360f01b8152509062001fa25760405162461bcd60e51b815260040162000fb8919062004bcb565b505b84831462001fc55760405163bd28cf5f60e01b815260040160405180910390fd5b6000805b86811015620021a057600a86868381811062001fe95762001fe962004d38565b905060200201351115604051806040016040528060018152602001604160f81b815250906200202d5760405162461bcd60e51b815260040162000fb8919062004bcb565b50600a88888381811062002045576200204562004d38565b9050602002013510604051806040016040528060018152602001604160f81b81525090620020885760405162461bcd60e51b815260040162000fb8919062004bcb565b50600060dd60008a8a85818110620020a457620020a462004d38565b602090810292909201358352508101919091526040016000908120546001600160a01b031691505b878784818110620020e157620020e162004d38565b905060200201358110156200216a5760d15460405163c529b32f60e01b81523360048201526003602482015260448101919091526001600160a01b0383169063c529b32f90606401600060405180830381600087803b1580156200214457600080fd5b505af115801562002159573d6000803e3d6000fd5b505060019092019150620020cc9050565b5086868381811062002180576200218062004d38565b905060200201358362002194919062004c2b565b92505060010162001fc9565b50600060d15482620021b3919062004c69565b905034811115620021d7576040516307194af560e01b815260040160405180910390fd5b6000620021e5823462004c8b565b90508015620021fa57620021fa33826200368a565b33600090815260e86020526040812080548592906200221b90849062004c2b565b909155505060e35462002238906001600160a01b0316836200368a565b505050620022466001609755565b505050505050565b6200225862003513565b6127108360eb546200226b919062004c2b565b11156200228b5760405163e2a5313760e01b815260040160405180910390fd5b60008062002299836200356f565b90925090506000620022ac868462004c69565b604051636eb1769f60e11b815233600482015230602482015290915081906001600160a01b0384169063dd62ed3e9060440160206040518083038186803b158015620022f757600080fd5b505afa1580156200230c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200233291906200494d565b101560405180604001604052806002815260200161191960f11b81525090620023705760405162461bcd60e51b815260040162000fb8919062004bcb565b506040516323b872dd60e01b81526001600160a01b038316906323b872dd90620023a39033903090869060040162004b81565b602060405180830381600087803b158015620023be57600080fd5b505af1158015620023d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023f99190620047f5565b5060cb54604051630907e7fd60e21b8152600481018890523360248201526001600160a01b03878116604483015260648201849052608482018790529091169063241f9ff49060a401600060405180830381600087803b1580156200245d57600080fd5b505af115801562002472573d6000803e3d6000fd5b505050508560eb60008282546200248a919062004c2b565b909155505060016097555062001444915050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000620024d68162003189565b6001600160a01b038216620024fe5760405163f8b7150760e01b815260040160405180910390fd5b60cb80546001600160a01b0319166001600160a01b0384169081179091556040519081527f4d2a9cfb68129a8381d5bba2cb0669013221a1dd01a6b412c1828bcd65a60fb49060200162000f62565b6000610bb860eb54116200257357624c4b4060d3546200256e919062004c8b565b905090565b611b5860eb541162002586575060d35490565b60d3546200256e90624c4b4062004c2b565b6000620025a58162003189565b6001600160a01b038216620025cd5760405163f8b7150760e01b815260040160405180910390fd5b60cc80546001600160a01b0319166001600160a01b0384169081179091556040519081527fac03a5111f05a48054f9935e495701b793e80e1c4aebbdfac7947b86f3d0e6519060200162000f62565b60cb5462002635906001600160a01b0316338362003222565b604051806040016040528060018152602001601960f91b81525090620026705760405162461bcd60e51b815260040162000fb8919062004bcb565b5060cb546040516302bbe34760e21b815260048101839052600091829182916001600160a01b031690630aef8d1c9060240160606040518083038186803b158015620026bb57600080fd5b505afa158015620026d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026f6919062004a17565b9250925092506200271c8383600381111562002716576200271662004d22565b62003a0e565b604051806040016040528060018152602001602360f91b81525090620027575760405162461bcd60e51b815260040162000fb8919062004bcb565b5060ca546000906001600160a01b03166309a56f9a84846200277b88600162004c2b565b6040516001600160e01b031960e086901b16815260048101939093526024830191909152604482015260640160206040518083038186803b158015620027c057600080fd5b505afa158015620027d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027fb91906200494d565b6200280f90670de0b6b3a764000062004c69565b90506200281d813362003310565b60cb54604051632a29735b60e01b8152600481018790526001600160a01b0390911690632a29735b90602401600060405180830381600087803b1580156200286457600080fd5b505af115801562002879573d6000803e3d6000fd5b505050505050505050565b83838360006200289684848462002b96565b905060e981604051620028aa919062004aea565b9081526040519081900360200190205460ff1615620028dc57604051638baa579f60e01b815260040160405180910390fd5b600160e982604051620028f0919062004aea565b908152604051908190036020019020805491151560ff199092169190911790556200291e8888888862003a63565b60405180604001604052806002815260200161032360f41b815250906200295a5760405162461bcd60e51b815260040162000fb8919062004bcb565b5062001d103386356020880135608089013562003da4565b60006200297f8162003189565b83620029a257604051632e3aa0d160e21b81526004810185905260240162000fb8565b82620029c55760405163b2aab9cb60e01b81526004810184905260240162000fb8565b828410620029f1576040516399de4cd960e01b8152600481018590526024810184905260440162000fb8565b816001141562002a325760d854831062002a225760405163b2aab9cb60e01b81526004810184905260240162000fb8565b60d684905560d783905562002b57565b816002141562002a9a5760d754841162002a6357604051632e3aa0d160e21b81526004810185905260240162000fb8565b60da54831062002a8a5760405163b2aab9cb60e01b81526004810184905260240162000fb8565b60d884905560d983905562002b57565b816003141562002b025760d954841162002acb57604051632e3aa0d160e21b81526004810185905260240162000fb8565b60dc54831062002af25760405163b2aab9cb60e01b81526004810184905260240162000fb8565b60da84905560db83905562002b57565b816004141562002b3e5760db54841162002b3357604051632e3aa0d160e21b81526004810185905260240162000fb8565b60dc84905562002b57565b6040516330fe9c1560e21b815260040160405180910390fd5b60408051858152602081018590529081018390527f85feccb69218081a003cf1e4f689c1711621e57a6c13638d46dfba7e087ba4479060600162001986565b6040805160208101939093528281019190915260f89290921b6001600160f81b031916606082015281516041818303018152606190910190915290565b62002bdd62003513565b60dc5442111562002c3a5760df5462002c3a5762002bfc828262003988565b60405180604001604052806002815260200161323360f01b8152509062002c385760405162461bcd60e51b815260040162000fb8919062004bcb565b505b6040805180820190915260018152600760fb1b602082015285841462002c755760405162461bcd60e51b815260040162000fb8919062004bcb565b5060005b8581101562002d5757600a85858381811062002c995762002c9962004d38565b905060200201351115604051806040016040528060018152602001604160f81b8152509062002cdd5760405162461bcd60e51b815260040162000fb8919062004bcb565b5060005b85858381811062002cf65762002cf662004d38565b9050602002013581101562002d415762002d2c88888481811062002d1e5762002d1e62004d38565b905060200201353362003e16565b8062002d388162004cee565b91505062002ce1565b508062002d4e8162004cee565b91505062002c79565b50620022466001609755565b60008281526065602052604090206001015462002d808162003189565b62001444838362003620565b62002d9662003513565b33600090815260ea602052604090205443148062002dc1575033600090815260ea6020526040902054155b1562002de05760405163d0c2348760e01b815260040160405180910390fd5b33600090815260ea602052604081205560dc5442101562002e145760405163461b04cd60e01b815260040160405180910390fd5b60df5462002e665762002e28828262003988565b60405180604001604052806002815260200161323360f01b8152509062002e645760405162461bcd60e51b815260040162000fb8919062004bcb565b505b84831462002e875760405163bd28cf5f60e01b815260040160405180910390fd5b6000805b868110156200308257600a86868381811062002eab5762002eab62004d38565b905060200201351115604051806040016040528060018152602001604160f81b8152509062002eef5760405162461bcd60e51b815260040162000fb8919062004bcb565b50600a88888381811062002f075762002f0762004d38565b9050602002013510604051806040016040528060018152602001604160f81b8152509062002f4a5760405162461bcd60e51b815260040162000fb8919062004bcb565b50600060dd60008a8a8581811062002f665762002f6662004d38565b602090810292909201358352508101919091526040016000908120546001600160a01b031691505b87878481811062002fa35762002fa362004d38565b905060200201358110156200304c57816001600160a01b031663c529b32f33600260d054620f424062002fd7919062004c69565b6040516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091526044820152606401600060405180830381600087803b1580156200302657600080fd5b505af11580156200303b573d6000803e3d6000fd5b50506001909201915062002f8e9050565b5086868381811062003062576200306262004d38565b905060200201358362003076919062004c2b565b92505060010162002e8b565b5060e55460e35460d0546001600160a01b0392831692620030d1923392911690620030af90869062004c69565b620030be90620f424062004c69565b6001600160a01b03851692919062003f73565b33600090815260e8602052604081208054849290620030f290849062004c2b565b9091555050600160975550620022469050565b6000620031128162003189565b6001600160a01b0382166200313a5760405163f8b7150760e01b815260040160405180910390fd5b60cd80546001600160a01b0319166001600160a01b0384169081179091556040519081527f33d83645f573f9f2c9b1cc4735d5066314d8d747d0d759a7b398a18d017cec009060200162000f62565b62003195813362003f97565b50565b620031a482826200249e565b620016e25760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620031de3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6040516331a9108f60e11b81526004810182905260009084906001600160a01b038581169190831690636352211e9060240160206040518083038186803b1580156200326d57600080fd5b505afa15801562003282573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032a8919062004618565b6001600160a01b03161495945050505050565b600080826003811115620032d357620032d362004d22565b1480620032f457506001826003811115620032f257620032f262004d22565b145b156200330557506005821062000ed7565b506006821062000ed7565b60ce54604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301528492169063dd62ed3e9060440160206040518083038186803b1580156200335c57600080fd5b505afa15801562003371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200339791906200494d565b101560405180604001604052806002815260200161191960f11b81525090620033d55760405162461bcd60e51b815260040162000fb8919062004bcb565b5060ce5460e1546001600160a01b03918216916323b872dd91849116620033fe60028762004c46565b6040518463ffffffff1660e01b81526004016200341e9392919062004b81565b602060405180830381600087803b1580156200343957600080fd5b505af11580156200344e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034749190620047f5565b5060ce5460e2546001600160a01b03918216916323b872dd918491166200349d60028762004c46565b6040518463ffffffff1660e01b8152600401620034bd9392919062004b81565b602060405180830381600087803b158015620034d857600080fd5b505af1158015620034ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014449190620047f5565b60026097541415620035685760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000fb8565b6002609755565b60008060038310604051806040016040528060028152602001610ccd60f21b81525090620035b25760405162461bcd60e51b815260040162000fb8919062004bcb565b5082620035d257505060d25460e45490926001600160a01b039091169150565b8260011415620035f557505060d45460d55490926001600160a01b039091169150565b6000620036016200254d565b60e55490956001600160a01b03909116945092505050565b6001609755565b6200362c82826200249e565b15620016e25760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b80471015620036dc5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640162000fb8565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146200372b576040519150601f19603f3d011682016040523d82523d6000602084013e62003730565b606091505b5050905080620014445760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840162000fb8565b600054610100900460ff16620037d35760405162461bcd60e51b815260040162000fb89062004be0565b565b600054610100900460ff16620037ff5760405162461bcd60e51b815260040162000fb89062004be0565b620037d362003ffb565b6060600083826040516200381d9062004584565b6200382a92919062004ba5565b604051809103906000f08015801562003847573d6000803e3d6000fd5b506040516305e52ecf60e21b81529091506001600160a01b03821690631794bb3c906200387d9088903090889060040162004b81565b600060405180830381600087803b1580156200389857600080fd5b505af1158015620038ad573d6000803e3d6000fd5b505050600084815260dd6020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260de909252808320805460ff191660011790555190925085917fec54df06a1be22338fe866e0a940316a6e147d7c5e9e26ae4779e8a59a97443491a35050505050565b6040516001600160a01b0383166024820152604481018290526200144490849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262004025565b6040516bffffffffffffffffffffffff193360601b166020820152600090819060340160405160208183030381529060405280519060200120905062003a068484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060e054915084905062004101565b949350505050565b60008082600381111562003a265762003a2662004d22565b148062003a475750600182600381111562003a455762003a4562004d22565b145b1562003a5857506004821062000ed7565b506005821062000ed7565b604080518082018252600a815269576561706f6e496e666f60b01b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f5e87eb353ffa78be203646d25dee655ed9e0cbe144ffc787c04fe6985a738a6e918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0820152600090819060c00160405160208183030381529060405280519060200120905060007f0b40fe1b7eb5e663b56f7793880e220662118623ecee7cce73dac27860dcc3068460000135856020013586604001602081019062003b7e9190620045f8565b8760600135886080013560405160200162003bca96959493929190958652602086019490945260408501929092526001600160a01b03166060840152608083015260a082015260c00190565b6040516020818303038152906040528051906020012090506000828260405160200162003c0e92919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8c1692840192909252606083018a9052608083018990529092509060019060a0016020604051602081039080840390855afa15801562003c7a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811662003cdf5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640162000fb8565b3362003cf26060880160408901620045f8565b6001600160a01b03161462003d3d5760405162461bcd60e51b815260206004820152601060248201526f2bb937b733902637b7ba1037bbb732b960811b604482015260640162000fb8565b60c9546001600160a01b0382811691161462003d955760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103130b1b5b2b7321029b4b3b732b960511b604482015260640162000fb8565b50600198975050505050505050565b60cb54604051635bfc5a6f60e01b81526001600160a01b03868116600483015260248201869052604482018590526064820184905290911690635bfc5a6f90608401600060405180830381600087803b15801562003e0157600080fd5b505af115801562001d10573d6000803e3d6000fd5b600082815260dd602090815260409182902054825180840190935260018352603960f81b918301919091526001600160a01b0316908162003e6c5760405162461bcd60e51b815260040162000fb8919062004bcb565b5062003e7762004119565b6001600160a01b038316600090815260e860205260409020541062003eaf5760405163e2a5313760e01b815260040160405180910390fd5b60cd5460e35460cf546001600160a01b039283169262003ed792849287929091169062003f73565b6040516331c3efdd60e21b81526001600160a01b03848116600480840191909152602483015283169063c70fbf7490604401600060405180830381600087803b15801562003f2457600080fd5b505af115801562003f39573d6000803e3d6000fd5b505050506001600160a01b038316600090815260e86020526040812080546001929062003f6890849062004c2b565b909155505050505050565b6200198f846323b872dd60e01b858585604051602401620039509392919062004b81565b62003fa382826200249e565b620016e25762003fb38162004190565b62003fc0836020620041a3565b60405160200162003fd392919062004b08565b60408051601f198184030181529082905262461bcd60e51b825262000fb89160040162004bcb565b600054610100900460ff16620036195760405162461bcd60e51b815260040162000fb89062004be0565b60006200407c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620043649092919063ffffffff16565b9050805160001480620040a0575080806020019051810190620040a09190620047f5565b620014445760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000fb8565b60008262004110858462004375565b14949350505050565b600060d654421180156200412e575060d75442105b156200413a5750600190565b60d854421180156200414d575060d95442105b15620041595750600290565b60da54421180156200416c575060db5442105b15620041785750600390565b60dc544211156200418a575061271090565b50600090565b606062000ed76001600160a01b03831660145b60606000620041b483600262004c69565b620041c190600262004c2b565b67ffffffffffffffff811115620041dc57620041dc62004d4e565b6040519080825280601f01601f19166020018201604052801562004207576020820181803683370190505b509050600360fc1b8160008151811062004225576200422562004d38565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811062004257576200425762004d38565b60200101906001600160f81b031916908160001a90535060006200427d84600262004c69565b6200428a90600162004c2b565b90505b60018111156200430c576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110620042c257620042c262004d38565b1a60f81b828281518110620042db57620042db62004d38565b60200101906001600160f81b031916908160001a90535060049490941c93620043048162004cd4565b90506200428d565b5083156200435d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640162000fb8565b9392505050565b606062003a068484600085620043cb565b600081815b8451811015620043c357620043ac828683815181106200439e576200439e62004d38565b6020026020010151620044ae565b915080620043ba8162004cee565b9150506200437a565b509392505050565b6060824710156200442e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000fb8565b600080866001600160a01b031685876040516200444c919062004aea565b60006040518083038185875af1925050503d80600081146200448b576040519150601f19603f3d011682016040523d82523d6000602084013e62004490565b606091505b5091509150620044a387838387620044e0565b979650505050505050565b6000818310620044cc5760008281526020849052604090206200435d565b60008381526020839052604090206200435d565b606083156200455157825162004549576001600160a01b0385163b620045495760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000fb8565b508162003a06565b62003a068383815115620045685781518083602001fd5b8060405162461bcd60e51b815260040162000fb8919062004bcb565b6109128062004d7b83390190565b60008083601f840112620045a557600080fd5b50813567ffffffffffffffff811115620045be57600080fd5b6020830191508360208260051b8501011115620045da57600080fd5b9250929050565b803560ff81168114620045f357600080fd5b919050565b6000602082840312156200460b57600080fd5b81356200435d8162004d64565b6000602082840312156200462b57600080fd5b81516200435d8162004d64565b6000806000606084860312156200464e57600080fd5b83356200465b8162004d64565b925060208401356200466d8162004d64565b915060408401356200467f8162004d64565b809150509250925092565b600080600080600080600060e0888a031215620046a657600080fd5b8735620046b38162004d64565b96506020880135620046c58162004d64565b95506040880135620046d78162004d64565b9450606088013593506080880135925060a0880135620046f78162004d64565b915060c0880135620047098162004d64565b8091505092959891949750929550565b6000806000606084860312156200472f57600080fd5b83356200473c8162004d64565b95602085013595506040909401359392505050565b600080600080600080606087890312156200476b57600080fd5b863567ffffffffffffffff808211156200478457600080fd5b620047928a838b0162004592565b90985096506020890135915080821115620047ac57600080fd5b620047ba8a838b0162004592565b90965094506040890135915080821115620047d457600080fd5b50620047e389828a0162004592565b979a9699509497509295939492505050565b6000602082840312156200480857600080fd5b815180151581146200435d57600080fd5b6000602082840312156200482c57600080fd5b5035919050565b600080604083850312156200484757600080fd5b8235915060208301356200485b8162004d64565b809150509250929050565b6000602082840312156200487957600080fd5b81356001600160e01b0319811681146200435d57600080fd5b600060208284031215620048a557600080fd5b813567ffffffffffffffff80821115620048be57600080fd5b818401915084601f830112620048d357600080fd5b813581811115620048e857620048e862004d4e565b604051601f8201601f19908116603f0116810190838211818310171562004913576200491362004d4e565b816040528281528760208487010111156200492d57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000602082840312156200496057600080fd5b5051919050565b6000806000606084860312156200497d57600080fd5b833592506020840135620049918162004d64565b929592945050506040919091013590565b60008060408385031215620049b657600080fd5b50508035926020909101359150565b60008060408385031215620049d957600080fd5b505080516020909101519092909150565b60008060006060848603121562004a0057600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121562004a2d57600080fd5b8351925060208401519150604084015190509250925092565b60008060006060848603121562004a5c57600080fd5b6200473c84620045e1565b60008060008084860361010081121562004a8057600080fd5b62004a8b86620045e1565b9450602086013593506040860135925060a0605f198201121562004aae57600080fd5b509295919450926060019150565b6000815180845262004ad681602086016020860162004ca5565b601f01601f19169290920160200192915050565b6000825162004afe81846020870162004ca5565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835162004b4281601785016020880162004ca5565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835162004b7581602884016020880162004ca5565b01602801949350505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038316815260406020820181905260009062003a069083018462004abc565b6020815260006200435d602083018462004abc565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000821982111562004c415762004c4162004d0c565b500190565b60008262004c6457634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161562004c865762004c8662004d0c565b500290565b60008282101562004ca05762004ca062004d0c565b500390565b60005b8381101562004cc257818101518382015260200162004ca8565b838111156200198f5750506000910152565b60008162004ce65762004ce662004d0c565b506000190190565b600060001982141562004d055762004d0562004d0c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200319557600080fdfe608060405260405161091238038061091283398101604081905261002291610457565b61002e82826000610035565b50506105a8565b61003e8361010f565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b1561010a57610108836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100c057600080fd5b505afa1580156100d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f8919061043c565b836102c160201b6100291760201c565b505b505050565b610122816102ed60201b6100551760201c565b6101815760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b610204816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101bd57600080fd5b505afa1580156101d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f5919061043c565b6102ed60201b6100551760201c565b6102695760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610178565b806102a07fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102fc60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102e683836040518060600160405280602781526020016108eb602791396102ff565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b03168560405161031c9190610517565b600060405180830381855af49150503d8060008114610357576040519150601f19603f3d011682016040523d82523d6000602084013e61035c565b606091505b50909250905061036e86838387610378565b9695505050505050565b606083156103e45782516103dd576001600160a01b0385163b6103dd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610178565b50816103ee565b6103ee83836103f6565b949350505050565b8151156104065781518083602001fd5b8060405162461bcd60e51b81526004016101789190610533565b80516001600160a01b038116811461043757600080fd5b919050565b60006020828403121561044e57600080fd5b6102e682610420565b6000806040838503121561046a57600080fd5b61047383610420565b60208401519092506001600160401b038082111561049057600080fd5b818501915085601f8301126104a457600080fd5b8151818111156104b6576104b6610592565b604051601f8201601f19908116603f011681019083821181831017156104de576104de610592565b816040528281528860208487010111156104f757600080fd5b610508836020830160208801610566565b80955050505050509250929050565b60008251610529818460208701610566565b9190910192915050565b6020815260008251806020840152610552816040850160208701610566565b601f01601f19169190910160400192915050565b60005b83811015610581578181015183820152602001610569565b838111156101085750506000910152565b634e487b7160e01b600052604160045260246000fd5b610334806105b76000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61010f565b565b606061004e838360405180606001604052806027815260200161030160279139610133565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100d257600080fd5b505afa1580156100e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010a9190610258565b905090565b3660008037600080366000845af43d6000803e80801561012e573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516101509190610281565b600060405180830381855af49150503d806000811461018b576040519150601f19603f3d011682016040523d82523d6000602084013e610190565b606091505b50915091506101a1868383876101ab565b9695505050505050565b6060831561021c578251610215576001600160a01b0385163b6102155760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610226565b610226838361022e565b949350505050565b81511561023e5781518083602001fd5b8060405162461bcd60e51b815260040161020c919061029d565b60006020828403121561026a57600080fd5b81516001600160a01b038116811461004e57600080fd5b600082516102938184602087016102d0565b9190910192915050565b60208152600082518060208401526102bc8160408501602087016102d0565b601f01601f19169190910160400192915050565b60005b838110156102eb5781810151838201526020016102d3565b838111156102fa576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000807000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564f7650eb8b2f3fb3c9b995a8ee2fc3c04ed07f1c4efe01998177b109698c67517a164736f6c6343000807000a";

type SuperGalaticFactoryConstructorParams =
  | [signer?: Signer]
  | ConstructorParameters<typeof ContractFactory>;

const isSuperArgs = (
  xs: SuperGalaticFactoryConstructorParams
): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;

export class SuperGalaticFactory__factory extends ContractFactory {
  constructor(...args: SuperGalaticFactoryConstructorParams) {
    if (isSuperArgs(args)) {
      super(...args);
    } else {
      super(_abi, _bytecode, args[0]);
    }
  }

  override deploy(
    overrides?: Overrides & { from?: string }
  ): Promise<SuperGalaticFactory> {
    return super.deploy(overrides || {}) as Promise<SuperGalaticFactory>;
  }
  override getDeployTransaction(
    overrides?: Overrides & { from?: string }
  ): TransactionRequest {
    return super.getDeployTransaction(overrides || {});
  }
  override attach(address: string): SuperGalaticFactory {
    return super.attach(address) as SuperGalaticFactory;
  }
  override connect(signer: Signer): SuperGalaticFactory__factory {
    return super.connect(signer) as SuperGalaticFactory__factory;
  }

  static readonly bytecode = _bytecode;
  static readonly abi = _abi;
  static createInterface(): SuperGalaticFactoryInterface {
    return new utils.Interface(_abi) as SuperGalaticFactoryInterface;
  }
  static connect(
    address: string,
    signerOrProvider: Signer | Provider
  ): SuperGalaticFactory {
    return new Contract(address, _abi, signerOrProvider) as SuperGalaticFactory;
  }
}
