{
  "contractName": "ERC721MinterBurnerPauser",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "baseURI",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PAUSER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getRoleMember",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMemberCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getRoleMemberIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenOfOwnerByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "_data",
          "type": "string"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getRoleMemberIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_data\",\"type\":\"string\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"baseURI()\":{\"details\":\"Returns the base URI set via {_setBaseURI}. This will be automatically added as a prefix in {tokenURI} to each token's URI, or to the token ID if no specific URI is set for that token ID.\"},\"burn(uint256)\":{\"details\":\"Burns `tokenId`. See {ERC721-_burn}. Requirements: - The caller must own `tokenId` or be an approved operator.\"},\"constructor\":{\"details\":\"Grants `DEFAULT_ADMIN_ROLE` and `MINTER_ROLE`to the account that deploys the contract. Token URIs will be autogenerated based on `baseURI` and their token IDs. See {ERC721-tokenURI}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getRoleMemberIndex(bytes32,address)\":{\"details\":\"Returns the index of the account that have `role`.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"mint(address,uint256,string)\":{\"details\":\"Creates a new token for `to`. Its token ID will be automatically assigned (and available on the emitted {Transfer} event), and the token URI autogenerated based on the base URI passed at construction. See {ERC721-_mint}. Requirements: - the caller must have the `MINTER_ROLE`.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"pause()\":{\"details\":\"Pauses all token transfers. See {ERC721Pausable} and {Pausable-_pause}. Requirements: - the caller must have the `PAUSER_ROLE`.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"unpause()\":{\"details\":\"Unpauses all token transfers. See {ERC721Pausable} and {Pausable-_unpause}. Requirements: - the caller must have the `PAUSER_ROLE`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/ERC721MinterBurnerPauser.sol\":\"ERC721MinterBurnerPauser\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x9486045e189facd2e868ece35249872598ef03f1087fb6fa4d1161842daa2287\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77c3a04ef8453788b14b1ebbc24dd3f0a18ceb2615cd156aac949a611e552af8\",\"dweb:/ipfs/QmcmqWGguRM3iLuF57tcyrN3F6EA63kzeNkDfQuteBnurr\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0x24141d2f6b98d4cb77a8936eae8cbaad2e261d9062bdc08036096f4550092501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b710eb003944777135f027500a5a57b479fe857849f5f467c1ef9687401e3c95\",\"dweb:/ipfs/QmcELzi6KRzAs3DXwxdsoKWRJ13KSeipKQsJgD3unctdZM\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xf70bc25d981e4ec9673a995ad2995d5d493ea188d3d8f388bba9c227ce09fb82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd970f51e3a77790c2f02b5b1759827c3b897c3d98c407b3631e8af32e3dc93c\",\"dweb:/ipfs/QmPF85Amgbqjk3SNZKsPCsqCw8JfwYEPMnnhvMJUyX58je\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x118ed7540f56b21ff92e21ebaa73584048e98d2ac04ca67571329bb8dbd9032f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da2918b7aff73dd51d41bfcfa548f81eb50531b8353500fdbdacf297076db070\",\"dweb:/ipfs/Qmb8ixAs1vBjZRowQNuNg6bRf2NZmgZ1JTBxmQS14PHpcL\"]},\"@openzeppelin/contracts/token/ERC721/ERC721Burnable.sol\":{\"keccak256\":\"0x060925a04766df64ac29f56aaa3a38aafd71424ba4d996ca0f14363828b97056\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8593f0fcac22c97956ab3e779e8a55a6c33dd01059fa01f15992518e708f4e6f\",\"dweb:/ipfs/QmWYQcAy7R6v5prSfmigmrhr7nGxwzkbZkmdeMcLNLUG66\"]},\"@openzeppelin/contracts/token/ERC721/ERC721Pausable.sol\":{\"keccak256\":\"0x1c31a4c2ad1af9e25cd8f4ea941ebd6a6a932426183ab39c160cb8e51cfc704f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77dd2448bbeb4a8f6f3273042d02326fa6ba191827e5b37f6f68492b17d022c9\",\"dweb:/ipfs/QmRiAmuxtRcVRhXUymziiTD3r8SGcjxKN95ZLVKd2jtWjN\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x2d99a0deb6648c34fbc66d6ac4a2d64798d7a5321b45624f6736fadc63da1962\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2dcdce5ede1e5e650d174ec0b35be7d47b6a50f30bc895ef0d9e59fb75052e45\",\"dweb:/ipfs/QmQ2XFsDLTYqfEdw7pYzHiGtFRY11yQm4b6ynYgKqDxeB8\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0xe6bd1b1218338b6f9fe17776f48623b4ac3d8a40405f74a44bc23c00abe2ca13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c354c3f6e9c487759aa7869be4fba68e0b2efc777b514d289c4cbd3ff8f7e1a\",\"dweb:/ipfs/QmdF9LcSYVmiUCL7JxLEYmSLrjga6zJsujfi6sgEJD4M1z\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xccb917776f826ac6b68bd5a15a5f711e3967848a52ba11e6104d9a4f593314a7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://430255ad2229ced6d880e61a67bdc6e48dbbaed8354a7c1fe918cd8b8714a886\",\"dweb:/ipfs/QmTHY56odzqEpEC6v6tafaWMYY7vmULw25q5XHJLCCAeox\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x52146049d6709c870e8ddcd988b5155cb6c5d640cfcd8978aee52bc1ba2ec4eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada84513617b7c1b2f890b44503735abaec73a1acd030112a17aac7e6c66a4a1\",\"dweb:/ipfs/QmaiFwdio67iJrfjAdkMac24eJ5sS1qD7CZW6PhUU6KjiK\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0x21662e4254ce4ac8570b30cc7ab31435966b3cb778a56ba4d09276881cfb2437\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://acce8fe6adc670f9987a8b6aedc4cc0abcd0dcd2e152d649a12099d735bd7bad\",\"dweb:/ipfs/QmXAk17oK3daBmA8CGyVcU56L496jW3U6Ef1WkfHyB1JAV\"]},\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0x4b087f06b6670a131a5a14e53b1d2a5ef19c034cc5ec42eeebcf9554325744ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6a6af5d848334e40db419773f6360601e311ffc21c2e274f730b8c542da99fd\",\"dweb:/ipfs/QmfA24cxQ2g41ZWUuDF295dxDJ4xF1bSDYtC3EaLd7CzW8\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x1562cd9922fbf739edfb979f506809e2743789cbde3177515542161c3d04b164\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4580d57781513d98870d9738c7d39094336e0a70cdb90d68dad549c6ced466ec\",\"dweb:/ipfs/Qmf9YZzzRFuvMnav9dgmeRUpdYMMECiZX8w25sHWVbA18V\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0x212fb1b1d4beaf74354dad9bc329f44ee3c5375ef1c32acff76b4ecefc10f1d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d21c68cb321d1c8d0fa39fd9ecb6bbe3b2f26623b0f38af280a010c916c85f23\",\"dweb:/ipfs/Qmf2P51HRC4ekDHLYfbXu5SXR33gXrWtq6oKSmfyWqVRuC\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa1e12f97981f1d0964b1c048978606a57127c56c438bab61cdfe269cad859a74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5eefac1760f524971e14aa3f3d79515a3d54fd28c1d3bdca0b36127da349b830\",\"dweb:/ipfs/QmUMzkyH3ytJX5gVPizQruNLhkKmuJb3nFqBDad4LPdg5U\"]},\"project:/contracts/ERC721MinterBurnerPauser.sol\":{\"keccak256\":\"0xb0f727d542bf3f517bcc07abab1efb86ef6d37a216b4d41d8a3194c5bcd20a73\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://02dc95a492b39f9ecf35f607479c0320b917aeba7730407734d1aaa02cb3b040\",\"dweb:/ipfs/QmTekLFSqQaJwdJUHQ814cHPrL8DzuWhFEgLzteJE2hmLv\"]},\"project:/contracts/utils/AccessControl.sol\":{\"keccak256\":\"0x0188570bd646df63dd236b997edf12d2e5a566d9fd54b9405c67c6d7eeca353e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eaa8a02b8fda3d9a50019cb96fec11cfb80b90250e37e91e0ec6cd945efa9810\",\"dweb:/ipfs/QmZ2nuod9fjYvsCjRr4Bhk6FTES4zsofxsQSDFS24JFaGq\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162002e8e38038062002e8e833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084640100000000821115620001bc57600080fd5b908301906020820185811115620001d257600080fd5b8251640100000000811182820188101715620001ed57600080fd5b82525081516020918201929091019080838360005b838110156200021c57818101518382015260200162000202565b50505050905090810190601f1680156200024a5780820380516001836020036101000a031916815260200191505b5060405250849150839050620002676301ffc9a760e01b6200035d565b81516200027c9060079060208501906200050e565b508051620002929060089060208401906200050e565b50620002a56380ac58cd60e01b6200035d565b620002b7635b5e139f60e01b6200035d565b620002c963780e9d6360e01b6200035d565b5050600b805460ff19169055620002eb6000620002e5620003e5565b620003e9565b6200031a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6620002e5620003e5565b620003497f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a620002e5620003e5565b6200035481620003f9565b505050620005aa565b6001600160e01b03198082161415620003bd576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b3390565b620003f582826200040e565b5050565b8051620003f590600a9060208401906200050e565b600082815260208181526040909120620004339183906200139062000487821b17901c565b15620003f55762000443620003e5565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006200049e836001600160a01b038416620004a7565b90505b92915050565b6000620004b58383620004f6565b620004ed57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620004a1565b506000620004a1565b60009081526001919091016020526040902054151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200055157805160ff191683800117855562000581565b8280016001018555821562000581579182015b828111156200058157825182559160200191906001019062000564565b506200058f92915062000593565b5090565b5b808211156200058f576000815560010162000594565b6128d480620005ba6000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80636352211e1161011a578063a22cb465116100ad578063d3fc98641161007c578063d3fc98641461069c578063d539139314610757578063d547741f1461075f578063e63ab1e91461078b578063e985e9c514610793576101fb565b8063a22cb4651461056e578063b88d4fde1461059c578063c87b56dd14610662578063ca15c8731461067f576101fb565b80639010d07c116100e95780639010d07c1461050f57806391d148541461053257806395d89b411461055e578063a217fddf14610566576101fb565b80636352211e146104bc5780636c0360eb146104d957806370a08231146104e15780638456cb5914610507576101fb565b80632f745c591161019257806342966c681161016157806342966c681461044e5780634e0df3f61461046b5780634f6ccce7146104975780635c975abb146104b4576101fb565b80632f745c59146103b857806336568abe146103e45780633f4ba83a1461041057806342842e0e14610418576101fb565b806318160ddd116101ce57806318160ddd1461031f57806323b872dd14610339578063248a9ca31461036f5780632f2ff15d1461038c576101fb565b806301ffc9a71461020057806306fdde031461023b578063081812fc146102b8578063095ea7b3146102f1575b600080fd5b6102276004803603602081101561021657600080fd5b50356001600160e01b0319166107c1565b604080519115158252519081900360200190f35b6102436107e4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027d578181015183820152602001610265565b50505050905090810190601f1680156102aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d5600480360360208110156102ce57600080fd5b503561087a565b604080516001600160a01b039092168252519081900360200190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b0381351690602001356108dc565b005b6103276109b7565b60408051918252519081900360200190f35b61031d6004803603606081101561034f57600080fd5b506001600160a01b038135811691602081013590911690604001356109c8565b6103276004803603602081101561038557600080fd5b5035610a1f565b61031d600480360360408110156103a257600080fd5b50803590602001356001600160a01b0316610a34565b610327600480360360408110156103ce57600080fd5b506001600160a01b038135169060200135610aa0565b61031d600480360360408110156103fa57600080fd5b50803590602001356001600160a01b0316610acb565b61031d610b2c565b61031d6004803603606081101561042e57600080fd5b506001600160a01b03813581169160208101359091169060400135610b9d565b61031d6004803603602081101561046457600080fd5b5035610bb8565b6103276004803603604081101561048157600080fd5b50803590602001356001600160a01b0316610c0a565b610327600480360360208110156104ad57600080fd5b5035610c34565b610227610c4a565b6102d5600480360360208110156104d257600080fd5b5035610c53565b610243610c7b565b610327600480360360208110156104f757600080fd5b50356001600160a01b0316610cdc565b61031d610d44565b6102d56004803603604081101561052557600080fd5b5080359060200135610db3565b6102276004803603604081101561054857600080fd5b50803590602001356001600160a01b0316610dcb565b610243610de3565b610327610e44565b61031d6004803603604081101561058457600080fd5b506001600160a01b0381351690602001351515610e49565b61031d600480360360808110156105b257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156105ed57600080fd5b8201836020820111156105ff57600080fd5b8035906020019184600183028401116401000000008311171561062157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f4e945050505050565b6102436004803603602081101561067857600080fd5b5035610fac565b6103276004803603602081101561069557600080fd5b503561122f565b61031d600480360360608110156106b257600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156106e257600080fd5b8201836020820111156106f457600080fd5b8035906020019184600183028401116401000000008311171561071657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611246945050505050565b6103276112c1565b61031d6004803603604081101561077557600080fd5b50803590602001356001600160a01b03166112e5565b61032761133e565b610227600480360360408110156107a957600080fd5b506001600160a01b0381358116916020013516611362565b6001600160e01b0319811660009081526001602052604090205460ff165b919050565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108705780601f1061084557610100808354040283529160200191610870565b820191906000526020600020905b81548152906001019060200180831161085357829003601f168201915b5050505050905090565b6000610885826113a5565b6108c05760405162461bcd60e51b815260040180806020018281038252602c815260200180612707602c913960400191505060405180910390fd5b506000908152600560205260409020546001600160a01b031690565b60006108e782610c53565b9050806001600160a01b0316836001600160a01b0316141561093a5760405162461bcd60e51b81526004018080602001828103825260218152602001806127b76021913960400191505060405180910390fd5b806001600160a01b031661094c6113b2565b6001600160a01b0316148061096d575061096d816109686113b2565b611362565b6109a85760405162461bcd60e51b815260040180806020018281038252603881526020018061265a6038913960400191505060405180910390fd5b6109b283836113b6565b505050565b60006109c36003611424565b905090565b6109d96109d36113b2565b8261142f565b610a145760405162461bcd60e51b81526004018080602001828103825260318152602001806127d86031913960400191505060405180910390fd5b6109b28383836114d3565b60009081526020819052604090206002015490565b600082815260208190526040902060020154610a5790610a526113b2565b610dcb565b610a925760405162461bcd60e51b815260040180806020018281038252602f815260200180612507602f913960400191505060405180910390fd5b610a9c828261161f565b5050565b6001600160a01b0382166000908152600260205260408120610ac29083611688565b90505b92915050565b610ad36113b2565b6001600160a01b0316816001600160a01b031614610b225760405162461bcd60e51b815260040180806020018281038252602f815260200180612839602f913960400191505060405180910390fd5b610a9c8282611694565b610b587f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a526113b2565b610b935760405162461bcd60e51b815260040180806020018281038252603a8152602001806125f0603a913960400191505060405180910390fd5b610b9b6116fd565b565b6109b283838360405180602001604052806000815250610f4e565b610bc36109d36113b2565b610bfe5760405162461bcd60e51b81526004018080602001828103825260308152602001806128096030913960400191505060405180910390fd5b610c078161179d565b50565b6000828152602081815260408083206001600160a01b038516845260010190915290205492915050565b600080610c4260038461186a565b509392505050565b600b5460ff1690565b6000610ac5826040518060600160405280602981526020016126bc6029913960039190611886565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108705780601f1061084557610100808354040283529160200191610870565b60006001600160a01b038216610d235760405162461bcd60e51b815260040180806020018281038252602a815260200180612692602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600260205260409020610ac590611424565b610d707f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a526113b2565b610dab5760405162461bcd60e51b81526004018080602001828103825260388152602001806125b86038913960400191505060405180910390fd5b610b9b61189d565b6000828152602081905260408120610ac29083611688565b6000828152602081905260408120610ac29083611920565b60088054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108705780601f1061084557610100808354040283529160200191610870565b600081565b610e516113b2565b6001600160a01b0316826001600160a01b03161415610eb7576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060066000610ec46113b2565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610f086113b2565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b610f5f610f596113b2565b8361142f565b610f9a5760405162461bcd60e51b81526004018080602001828103825260318152602001806127d86031913960400191505060405180910390fd5b610fa684848484611935565b50505050565b6060610fb7826113a5565b610ff25760405162461bcd60e51b815260040180806020018281038252602f815260200180612788602f913960400191505060405180910390fd5b60008281526009602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156110875780601f1061105c57610100808354040283529160200191611087565b820191906000526020600020905b81548152906001019060200180831161106a57829003601f168201915b505050505090506060611098610c7b565b90508051600014156110ac575090506107df565b81511561116d5780826040516020018083805190602001908083835b602083106110e75780518252601f1990920191602091820191016110c8565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b6020831061112f5780518252601f199092019160209182019101611110565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506107df565b8061117785611987565b6040516020018083805190602001908083835b602083106111a95780518252601f19909201916020918201910161118a565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106111f15780518252601f1990920191602091820191016111d2565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6000818152602081905260408120610ac590611424565b6112727f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610a526113b2565b6112ad5760405162461bcd60e51b81526004018080602001828103825260378152602001806128686037913960400191505060405180910390fd5b6112b78383611a62565b6109b28282611b90565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b60008281526020819052604090206002015461130390610a526113b2565b610b225760405162461bcd60e51b815260040180806020018281038252603081526020018061262a6030913960400191505060405180910390fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b6000610ac2836001600160a01b038416611bf3565b6000610ac5600383611c3d565b3390565b600081815260056020526040902080546001600160a01b0319166001600160a01b03841690811790915581906113eb82610c53565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610ac582611c49565b600061143a826113a5565b6114755760405162461bcd60e51b815260040180806020018281038252602c81526020018061258c602c913960400191505060405180910390fd5b600061148083610c53565b9050806001600160a01b0316846001600160a01b031614806114bb5750836001600160a01b03166114b08461087a565b6001600160a01b0316145b806114cb57506114cb8185611362565b949350505050565b826001600160a01b03166114e682610c53565b6001600160a01b03161461152b5760405162461bcd60e51b815260040180806020018281038252602981526020018061275f6029913960400191505060405180910390fd5b6001600160a01b0382166115705760405162461bcd60e51b81526004018080602001828103825260248152602001806125686024913960400191505060405180910390fd5b61157b838383611c4d565b6115866000826113b6565b6001600160a01b03831660009081526002602052604090206115a89082611c58565b506001600160a01b03821660009081526002602052604090206115cb9082611c64565b506115d860038284611c70565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008281526020819052604090206116379082611390565b15610a9c576116446113b2565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610ac28383611c86565b60008281526020819052604090206116ac9082611cea565b15610a9c576116b96113b2565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b611705610c4a565b61174d576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b600b805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6117806113b2565b604080516001600160a01b039092168252519081900360200190a1565b60006117a882610c53565b90506117b681600084611c4d565b6117c16000836113b6565b60008281526009602052604090205460026000196101006001841615020190911604156117ff5760008281526009602052604081206117ff916123e2565b6001600160a01b03811660009081526002602052604090206118219083611c58565b5061182d600383611cff565b5060405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60008080806118798686611d0b565b9097909650945050505050565b6000611893848484611d86565b90505b9392505050565b6118a5610c4a565b156118ea576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600b805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117806113b2565b6000610ac2836001600160a01b038416611e50565b6119408484846114d3565b61194c84848484611e68565b610fa65760405162461bcd60e51b81526004018080602001828103825260328152602001806125366032913960400191505060405180910390fd5b6060816119ac57506040805180820190915260018152600360fc1b60208201526107df565b8160005b81156119c457600101600a820491506119b0565b60608167ffffffffffffffff811180156119dd57600080fd5b506040519080825280601f01601f191660200182016040528015611a08576020820181803683370190505b50859350905060001982015b8315611a5957600a840660300160f81b82828060019003935081518110611a3757fe5b60200101906001600160f81b031916908160001a905350600a84049350611a14565b50949350505050565b6001600160a01b038216611abd576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b611ac6816113a5565b15611b18576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b611b2460008383611c4d565b6001600160a01b0382166000908152600260205260409020611b469082611c64565b50611b5360038284611c70565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b611b99826113a5565b611bd45760405162461bcd60e51b815260040180806020018281038252602c815260200180612733602c913960400191505060405180910390fd5b600082815260096020908152604090912082516109b292840190612426565b6000611bff8383611e50565b611c3557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ac5565b506000610ac5565b6000610ac28383611e50565b5490565b6109b2838383611fd0565b6000610ac2838361201f565b6000610ac28383611bf3565b600061189384846001600160a01b0385166120e5565b81546000908210611cc85760405162461bcd60e51b81526004018080602001828103825260228152602001806124ba6022913960400191505060405180910390fd5b826000018281548110611cd757fe5b9060005260206000200154905092915050565b6000610ac2836001600160a01b03841661201f565b6000610ac2838361217c565b815460009081908310611d4f5760405162461bcd60e51b81526004018080602001828103825260228152602001806126e56022913960400191505060405180910390fd5b6000846000018481548110611d6057fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008281526001840160205260408120548281611e215760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611de6578181015183820152602001611dce565b50505050905090810190601f168015611e135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50846000016001820381548110611e3457fe5b9060005260206000209060020201600101549150509392505050565b60009081526001919091016020526040902054151590565b6000611e7c846001600160a01b0316612250565b611e88575060016114cb565b6060611f96630a85bd0160e11b611e9d6113b2565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611f04578181015183820152602001611eec565b50505050905090810190601f168015611f315780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001612536603291396001600160a01b0388169190612256565b90506000818060200190516020811015611faf57600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b611fdb8383836109b2565b611fe3610c4a565b156109b25760405162461bcd60e51b815260040180806020018281038252602b8152602001806124dc602b913960400191505060405180910390fd5b600081815260018301602052604081205480156120db578354600019808301919081019060009087908390811061205257fe5b906000526020600020015490508087600001848154811061206f57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061209f57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610ac5565b6000915050610ac5565b60008281526001840160205260408120548061214a575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055611896565b8285600001600183038154811061215d57fe5b9060005260206000209060020201600101819055506000915050611896565b600081815260018301602052604081205480156120db57835460001980830191908101906000908790839081106121af57fe5b90600052602060002090600202019050808760000184815481106121cf57fe5b60009182526020808320845460029093020191825560019384015491840191909155835482528983019052604090209084019055865487908061220e57fe5b6000828152602080822060026000199094019384020182815560019081018390559290935588815289820190925260408220919091559450610ac59350505050565b3b151590565b606061189384846000858561226a85612250565b6122bb576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106122fa5780518252601f1990920191602091820191016122db565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461235c576040519150601f19603f3d011682016040523d82523d6000602084013e612361565b606091505b509150915061237182828661237c565b979650505050505050565b6060831561238b575081611896565b82511561239b5782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315611de6578181015183820152602001611dce565b50805460018160011615610100020316600290046000825580601f106124085750610c07565b601f016020900490600052602060002090810190610c0791906124a4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061246757805160ff1916838001178555612494565b82800160010185558215612494579182015b82811115612494578251825591602001919060010190612479565b506124a09291506124a4565b5090565b5b808211156124a057600081556001016124a556fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732315061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d696e7465724275726e65725061757365723a206d75737420686176652070617573657220726f6c6520746f2070617573654552433732314d696e7465724275726e65725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e7061757365416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b654552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c664552433732314d696e7465724275726e65725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e74a264697066735822122084c0d32473289cdd1ce4c384bc89eb2328e8db805e87912dd9b4fed479bf846164736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80636352211e1161011a578063a22cb465116100ad578063d3fc98641161007c578063d3fc98641461069c578063d539139314610757578063d547741f1461075f578063e63ab1e91461078b578063e985e9c514610793576101fb565b8063a22cb4651461056e578063b88d4fde1461059c578063c87b56dd14610662578063ca15c8731461067f576101fb565b80639010d07c116100e95780639010d07c1461050f57806391d148541461053257806395d89b411461055e578063a217fddf14610566576101fb565b80636352211e146104bc5780636c0360eb146104d957806370a08231146104e15780638456cb5914610507576101fb565b80632f745c591161019257806342966c681161016157806342966c681461044e5780634e0df3f61461046b5780634f6ccce7146104975780635c975abb146104b4576101fb565b80632f745c59146103b857806336568abe146103e45780633f4ba83a1461041057806342842e0e14610418576101fb565b806318160ddd116101ce57806318160ddd1461031f57806323b872dd14610339578063248a9ca31461036f5780632f2ff15d1461038c576101fb565b806301ffc9a71461020057806306fdde031461023b578063081812fc146102b8578063095ea7b3146102f1575b600080fd5b6102276004803603602081101561021657600080fd5b50356001600160e01b0319166107c1565b604080519115158252519081900360200190f35b6102436107e4565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027d578181015183820152602001610265565b50505050905090810190601f1680156102aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d5600480360360208110156102ce57600080fd5b503561087a565b604080516001600160a01b039092168252519081900360200190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b0381351690602001356108dc565b005b6103276109b7565b60408051918252519081900360200190f35b61031d6004803603606081101561034f57600080fd5b506001600160a01b038135811691602081013590911690604001356109c8565b6103276004803603602081101561038557600080fd5b5035610a1f565b61031d600480360360408110156103a257600080fd5b50803590602001356001600160a01b0316610a34565b610327600480360360408110156103ce57600080fd5b506001600160a01b038135169060200135610aa0565b61031d600480360360408110156103fa57600080fd5b50803590602001356001600160a01b0316610acb565b61031d610b2c565b61031d6004803603606081101561042e57600080fd5b506001600160a01b03813581169160208101359091169060400135610b9d565b61031d6004803603602081101561046457600080fd5b5035610bb8565b6103276004803603604081101561048157600080fd5b50803590602001356001600160a01b0316610c0a565b610327600480360360208110156104ad57600080fd5b5035610c34565b610227610c4a565b6102d5600480360360208110156104d257600080fd5b5035610c53565b610243610c7b565b610327600480360360208110156104f757600080fd5b50356001600160a01b0316610cdc565b61031d610d44565b6102d56004803603604081101561052557600080fd5b5080359060200135610db3565b6102276004803603604081101561054857600080fd5b50803590602001356001600160a01b0316610dcb565b610243610de3565b610327610e44565b61031d6004803603604081101561058457600080fd5b506001600160a01b0381351690602001351515610e49565b61031d600480360360808110156105b257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156105ed57600080fd5b8201836020820111156105ff57600080fd5b8035906020019184600183028401116401000000008311171561062157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f4e945050505050565b6102436004803603602081101561067857600080fd5b5035610fac565b6103276004803603602081101561069557600080fd5b503561122f565b61031d600480360360608110156106b257600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156106e257600080fd5b8201836020820111156106f457600080fd5b8035906020019184600183028401116401000000008311171561071657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611246945050505050565b6103276112c1565b61031d6004803603604081101561077557600080fd5b50803590602001356001600160a01b03166112e5565b61032761133e565b610227600480360360408110156107a957600080fd5b506001600160a01b0381358116916020013516611362565b6001600160e01b0319811660009081526001602052604090205460ff165b919050565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108705780601f1061084557610100808354040283529160200191610870565b820191906000526020600020905b81548152906001019060200180831161085357829003601f168201915b5050505050905090565b6000610885826113a5565b6108c05760405162461bcd60e51b815260040180806020018281038252602c815260200180612707602c913960400191505060405180910390fd5b506000908152600560205260409020546001600160a01b031690565b60006108e782610c53565b9050806001600160a01b0316836001600160a01b0316141561093a5760405162461bcd60e51b81526004018080602001828103825260218152602001806127b76021913960400191505060405180910390fd5b806001600160a01b031661094c6113b2565b6001600160a01b0316148061096d575061096d816109686113b2565b611362565b6109a85760405162461bcd60e51b815260040180806020018281038252603881526020018061265a6038913960400191505060405180910390fd5b6109b283836113b6565b505050565b60006109c36003611424565b905090565b6109d96109d36113b2565b8261142f565b610a145760405162461bcd60e51b81526004018080602001828103825260318152602001806127d86031913960400191505060405180910390fd5b6109b28383836114d3565b60009081526020819052604090206002015490565b600082815260208190526040902060020154610a5790610a526113b2565b610dcb565b610a925760405162461bcd60e51b815260040180806020018281038252602f815260200180612507602f913960400191505060405180910390fd5b610a9c828261161f565b5050565b6001600160a01b0382166000908152600260205260408120610ac29083611688565b90505b92915050565b610ad36113b2565b6001600160a01b0316816001600160a01b031614610b225760405162461bcd60e51b815260040180806020018281038252602f815260200180612839602f913960400191505060405180910390fd5b610a9c8282611694565b610b587f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a526113b2565b610b935760405162461bcd60e51b815260040180806020018281038252603a8152602001806125f0603a913960400191505060405180910390fd5b610b9b6116fd565b565b6109b283838360405180602001604052806000815250610f4e565b610bc36109d36113b2565b610bfe5760405162461bcd60e51b81526004018080602001828103825260308152602001806128096030913960400191505060405180910390fd5b610c078161179d565b50565b6000828152602081815260408083206001600160a01b038516845260010190915290205492915050565b600080610c4260038461186a565b509392505050565b600b5460ff1690565b6000610ac5826040518060600160405280602981526020016126bc6029913960039190611886565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108705780601f1061084557610100808354040283529160200191610870565b60006001600160a01b038216610d235760405162461bcd60e51b815260040180806020018281038252602a815260200180612692602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600260205260409020610ac590611424565b610d707f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a526113b2565b610dab5760405162461bcd60e51b81526004018080602001828103825260388152602001806125b86038913960400191505060405180910390fd5b610b9b61189d565b6000828152602081905260408120610ac29083611688565b6000828152602081905260408120610ac29083611920565b60088054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108705780601f1061084557610100808354040283529160200191610870565b600081565b610e516113b2565b6001600160a01b0316826001600160a01b03161415610eb7576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060066000610ec46113b2565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610f086113b2565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b610f5f610f596113b2565b8361142f565b610f9a5760405162461bcd60e51b81526004018080602001828103825260318152602001806127d86031913960400191505060405180910390fd5b610fa684848484611935565b50505050565b6060610fb7826113a5565b610ff25760405162461bcd60e51b815260040180806020018281038252602f815260200180612788602f913960400191505060405180910390fd5b60008281526009602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156110875780601f1061105c57610100808354040283529160200191611087565b820191906000526020600020905b81548152906001019060200180831161106a57829003601f168201915b505050505090506060611098610c7b565b90508051600014156110ac575090506107df565b81511561116d5780826040516020018083805190602001908083835b602083106110e75780518252601f1990920191602091820191016110c8565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b6020831061112f5780518252601f199092019160209182019101611110565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506107df565b8061117785611987565b6040516020018083805190602001908083835b602083106111a95780518252601f19909201916020918201910161118a565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106111f15780518252601f1990920191602091820191016111d2565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6000818152602081905260408120610ac590611424565b6112727f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610a526113b2565b6112ad5760405162461bcd60e51b81526004018080602001828103825260378152602001806128686037913960400191505060405180910390fd5b6112b78383611a62565b6109b28282611b90565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b60008281526020819052604090206002015461130390610a526113b2565b610b225760405162461bcd60e51b815260040180806020018281038252603081526020018061262a6030913960400191505060405180910390fd5b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b6000610ac2836001600160a01b038416611bf3565b6000610ac5600383611c3d565b3390565b600081815260056020526040902080546001600160a01b0319166001600160a01b03841690811790915581906113eb82610c53565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610ac582611c49565b600061143a826113a5565b6114755760405162461bcd60e51b815260040180806020018281038252602c81526020018061258c602c913960400191505060405180910390fd5b600061148083610c53565b9050806001600160a01b0316846001600160a01b031614806114bb5750836001600160a01b03166114b08461087a565b6001600160a01b0316145b806114cb57506114cb8185611362565b949350505050565b826001600160a01b03166114e682610c53565b6001600160a01b03161461152b5760405162461bcd60e51b815260040180806020018281038252602981526020018061275f6029913960400191505060405180910390fd5b6001600160a01b0382166115705760405162461bcd60e51b81526004018080602001828103825260248152602001806125686024913960400191505060405180910390fd5b61157b838383611c4d565b6115866000826113b6565b6001600160a01b03831660009081526002602052604090206115a89082611c58565b506001600160a01b03821660009081526002602052604090206115cb9082611c64565b506115d860038284611c70565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008281526020819052604090206116379082611390565b15610a9c576116446113b2565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610ac28383611c86565b60008281526020819052604090206116ac9082611cea565b15610a9c576116b96113b2565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b611705610c4a565b61174d576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b600b805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6117806113b2565b604080516001600160a01b039092168252519081900360200190a1565b60006117a882610c53565b90506117b681600084611c4d565b6117c16000836113b6565b60008281526009602052604090205460026000196101006001841615020190911604156117ff5760008281526009602052604081206117ff916123e2565b6001600160a01b03811660009081526002602052604090206118219083611c58565b5061182d600383611cff565b5060405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60008080806118798686611d0b565b9097909650945050505050565b6000611893848484611d86565b90505b9392505050565b6118a5610c4a565b156118ea576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600b805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117806113b2565b6000610ac2836001600160a01b038416611e50565b6119408484846114d3565b61194c84848484611e68565b610fa65760405162461bcd60e51b81526004018080602001828103825260328152602001806125366032913960400191505060405180910390fd5b6060816119ac57506040805180820190915260018152600360fc1b60208201526107df565b8160005b81156119c457600101600a820491506119b0565b60608167ffffffffffffffff811180156119dd57600080fd5b506040519080825280601f01601f191660200182016040528015611a08576020820181803683370190505b50859350905060001982015b8315611a5957600a840660300160f81b82828060019003935081518110611a3757fe5b60200101906001600160f81b031916908160001a905350600a84049350611a14565b50949350505050565b6001600160a01b038216611abd576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b611ac6816113a5565b15611b18576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b611b2460008383611c4d565b6001600160a01b0382166000908152600260205260409020611b469082611c64565b50611b5360038284611c70565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b611b99826113a5565b611bd45760405162461bcd60e51b815260040180806020018281038252602c815260200180612733602c913960400191505060405180910390fd5b600082815260096020908152604090912082516109b292840190612426565b6000611bff8383611e50565b611c3557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ac5565b506000610ac5565b6000610ac28383611e50565b5490565b6109b2838383611fd0565b6000610ac2838361201f565b6000610ac28383611bf3565b600061189384846001600160a01b0385166120e5565b81546000908210611cc85760405162461bcd60e51b81526004018080602001828103825260228152602001806124ba6022913960400191505060405180910390fd5b826000018281548110611cd757fe5b9060005260206000200154905092915050565b6000610ac2836001600160a01b03841661201f565b6000610ac2838361217c565b815460009081908310611d4f5760405162461bcd60e51b81526004018080602001828103825260228152602001806126e56022913960400191505060405180910390fd5b6000846000018481548110611d6057fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008281526001840160205260408120548281611e215760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611de6578181015183820152602001611dce565b50505050905090810190601f168015611e135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50846000016001820381548110611e3457fe5b9060005260206000209060020201600101549150509392505050565b60009081526001919091016020526040902054151590565b6000611e7c846001600160a01b0316612250565b611e88575060016114cb565b6060611f96630a85bd0160e11b611e9d6113b2565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611f04578181015183820152602001611eec565b50505050905090810190601f168015611f315780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001612536603291396001600160a01b0388169190612256565b90506000818060200190516020811015611faf57600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b611fdb8383836109b2565b611fe3610c4a565b156109b25760405162461bcd60e51b815260040180806020018281038252602b8152602001806124dc602b913960400191505060405180910390fd5b600081815260018301602052604081205480156120db578354600019808301919081019060009087908390811061205257fe5b906000526020600020015490508087600001848154811061206f57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061209f57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610ac5565b6000915050610ac5565b60008281526001840160205260408120548061214a575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055611896565b8285600001600183038154811061215d57fe5b9060005260206000209060020201600101819055506000915050611896565b600081815260018301602052604081205480156120db57835460001980830191908101906000908790839081106121af57fe5b90600052602060002090600202019050808760000184815481106121cf57fe5b60009182526020808320845460029093020191825560019384015491840191909155835482528983019052604090209084019055865487908061220e57fe5b6000828152602080822060026000199094019384020182815560019081018390559290935588815289820190925260408220919091559450610ac59350505050565b3b151590565b606061189384846000858561226a85612250565b6122bb576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106122fa5780518252601f1990920191602091820191016122db565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461235c576040519150601f19603f3d011682016040523d82523d6000602084013e612361565b606091505b509150915061237182828661237c565b979650505050505050565b6060831561238b575081611896565b82511561239b5782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315611de6578181015183820152602001611dce565b50805460018160011615610100020316600290046000825580601f106124085750610c07565b601f016020900490600052602060002090810190610c0791906124a4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061246757805160ff1916838001178555612494565b82800160010185558215612494579182015b82811115612494578251825591602001919060010190612479565b506124a09291506124a4565b5090565b5b808211156124a057600081556001016124a556fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732315061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d696e7465724275726e65725061757365723a206d75737420686176652070617573657220726f6c6520746f2070617573654552433732314d696e7465724275726e65725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e7061757365416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b654552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c664552433732314d696e7465724275726e65725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e74a264697066735822122084c0d32473289cdd1ce4c384bc89eb2328e8db805e87912dd9b4fed479bf846164736f6c634300060c0033",
  "immutableReferences": {},
  "sourceMap": "543:2317:39:-:0;;;1017:292;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1017:292:39;;;;;;;;;;-1:-1:-1;1017:292:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1017:292:39;;;;;;;;;;-1:-1:-1;1017:292:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1017:292:39;;;;;;;;;;-1:-1:-1;1017:292:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1017:292:39;;-1:-1:-1;1108:4:39;;-1:-1:-1;1114:6:39;;-1:-1:-1;768:40:2;-1:-1:-1;;;768:18:2;:40::i;:::-;3651:13:20;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;3674:17:20;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;3779:40:20;-1:-1:-1;;;3779:18:20;:40::i;:::-;3829:49;-1:-1:-1;;;3829:18:20;:49::i;:::-;3888:51;-1:-1:-1;;;3888:18:20;:51::i;:::-;-1:-1:-1;;935:7:32;:15;;-1:-1:-1;;935:15:32;;;1132:44:39::1;945:5:32::0;1163:12:39::1;:10;:12::i;:::-;1132:10;:44::i;:::-;1187:37;679:24;1211:12;:10;:12::i;1187:37::-;1234;747:24;1258:12;:10;:12::i;1234:37::-;1282:20;1294:7:::0;1282:11:::1;:20::i;:::-;1017:292:::0;;;543:2317;;1507:198:2;-1:-1:-1;;;;;;1590:25:2;;;;;1582:66;;;;;-1:-1:-1;;;1582:66:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1658:33:2;;;;;1694:4;1658:33;;;;;;;;:40;;-1:-1:-1;;1658:40:2;;;;;;1507:198::o;598:104:28:-;685:10;598:104;:::o;6708:110:53:-;6786:25;6797:4;6803:7;6786:10;:25::i;:::-;6708:110;;:::o;14873:98:20:-;14945:19;;;;:8;;:19;;;;;:::i;7025:184:53:-;7098:6;:12;;;;;;;;;;;:33;;7123:7;;7098:24;;;;;:33;;:::i;:::-;7094:109;;;7179:12;:10;:12::i;:::-;-1:-1:-1;;;;;7152:40:53;7170:7;-1:-1:-1;;;;;7152:40:53;7164:4;7152:40;;;;;;;;;;7025:184;;:::o;6429:150:31:-;6499:4;6522:50;6527:3;-1:-1:-1;;;;;6547:23:31;;6522:4;:50::i;:::-;6515:57;;6429:150;;;;;:::o;1640:404::-;1703:4;1724:21;1734:3;1739:5;1724:9;:21::i;:::-;1719:319;;-1:-1:-1;1761:23:31;;;;;;;;:11;:23;;;;;;;;;;;;;1941:18;;1919:19;;;:12;;;:19;;;;;;:40;;;;1973:11;;1719:319;-1:-1:-1;2022:5:31;2015:12;;3805:127;3878:4;3901:19;;;:12;;;;;:19;;;;;;:24;;;3805:127::o;543:2317:39:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;543:2317:39;;;-1:-1:-1;543:2317:39;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "543:2317:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:148:2;;;;;;;;;;;;;;;;-1:-1:-1;965:148:2;-1:-1:-1;;;;;;965:148:2;;:::i;:::-;;;;;;;;;;;;;;;;;;4517:98:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7222:217;;;;;;;;;;;;;;;;-1:-1:-1;7222:217:20;;:::i;:::-;;;;-1:-1:-1;;;;;7222:217:20;;;;;;;;;;;;;;6766:395;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6766:395:20;;;;;;;;:::i;:::-;;6260:208;;;:::i;:::-;;;;;;;;;;;;;;;;8086:300;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8086:300:20;;;;;;;;;;;;;;;;;:::i;4402:112:53:-;;;;;;;;;;;;;;;;-1:-1:-1;4402:112:53;;:::i;4764:223::-;;;;;;;;;;;;;;;;-1:-1:-1;4764:223:53;;;;;;-1:-1:-1;;;;;4764:223:53;;:::i;6029:160:20:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6029:160:20;;;;;;;;:::i;5938:205:53:-;;;;;;;;;;;;;;;;-1:-1:-1;5938:205:53;;;;;;-1:-1:-1;;;;;5938:205:53;;:::i;2507:168:39:-;;;:::i;8452:149:20:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8452:149:20;;;;;;;;;;;;;;;;;:::i;455:241:21:-;;;;;;;;;;;;;;;;-1:-1:-1;455:241:21;;:::i;4045:176:53:-;;;;;;;;;;;;;;;;-1:-1:-1;4045:176:53;;;;;;-1:-1:-1;;;;;4045:176:53;;:::i;6540:169:20:-;;;;;;;;;;;;;;;;-1:-1:-1;6540:169:20;;:::i;1052:84:32:-;;;:::i;4280:175:20:-;;;;;;;;;;;;;;;;-1:-1:-1;4280:175:20;;:::i;5855:95::-;;;:::i;4005:218::-;;;;;;;;;;;;;;;;-1:-1:-1;4005:218:20;-1:-1:-1;;;;;4005:218:20;;:::i;2137:162:39:-;;;:::i;3824:136:53:-;;;;;;;;;;;;;;;;-1:-1:-1;3824:136:53;;;;;;;:::i;2809:137::-;;;;;;;;;;;;;;;;-1:-1:-1;2809:137:53;;;;;;-1:-1:-1;;;;;2809:137:53;;:::i;4679:102:20:-;;;:::i;1999:49:53:-;;;:::i;7506:290:20:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7506:290:20;;;;;;;;;;:::i;8667:282::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8667:282:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8667:282:20;;-1:-1:-1;8667:282:20;;-1:-1:-1;;;;;8667:282:20:i;4847:776::-;;;;;;;;;;;;;;;;-1:-1:-1;4847:776:20;;:::i;3114:125:53:-;;;;;;;;;;;;;;;;-1:-1:-1;3114:125:53;;:::i;1676:257:39:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1676:257:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1676:257:39;;-1:-1:-1;1676:257:39;;-1:-1:-1;;;;;1676:257:39:i;641:62::-;;;:::i;5221:226:53:-;;;;;;;;;;;;;;;;-1:-1:-1;5221:226:53;;;;;;-1:-1:-1;;;;;5221:226:53;;:::i;709:62:39:-;;;:::i;7862:162:20:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7862:162:20;;;;;;;;;;:::i;965:148:2:-;-1:-1:-1;;;;;;1073:33:2;;1050:4;1073:33;;;:20;:33;;;;;;;;965:148;;;;:::o;4517:98:20:-;4603:5;4596:12;;;;;;;;-1:-1:-1;;4596:12:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4571:13;;4596:12;;4603:5;;4596:12;;4603:5;4596:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4517:98;:::o;7222:217::-;7298:7;7325:16;7333:7;7325;:16::i;:::-;7317:73;;;;-1:-1:-1;;;7317:73:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7408:24:20;;;;:15;:24;;;;;;-1:-1:-1;;;;;7408:24:20;;7222:217::o;6766:395::-;6846:13;6862:23;6877:7;6862:14;:23::i;:::-;6846:39;;6909:5;-1:-1:-1;;;;;6903:11:20;:2;-1:-1:-1;;;;;6903:11:20;;;6895:57;;;;-1:-1:-1;;;6895:57:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6987:5;-1:-1:-1;;;;;6971:21:20;:12;:10;:12::i;:::-;-1:-1:-1;;;;;6971:21:20;;:69;;;;6996:44;7020:5;7027:12;:10;:12::i;:::-;6996:23;:44::i;:::-;6963:159;;;;-1:-1:-1;;;6963:159:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7133:21;7142:2;7146:7;7133:8;:21::i;:::-;6766:395;;;:::o;6260:208::-;6321:7;6440:21;:12;:19;:21::i;:::-;6433:28;;6260:208;:::o;8086:300::-;8245:41;8264:12;:10;:12::i;:::-;8278:7;8245:18;:41::i;:::-;8237:103;;;;-1:-1:-1;;;8237:103:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8351:28;8361:4;8367:2;8371:7;8351:9;:28::i;4402:112:53:-;4459:7;4485:12;;;;;;;;;;:22;;;;4402:112::o;4764:223::-;4855:6;:12;;;;;;;;;;:22;;;4847:45;;4879:12;:10;:12::i;:::-;4847:7;:45::i;:::-;4839:105;;;;-1:-1:-1;;;4839:105:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4955:25;4966:4;4972:7;4955:10;:25::i;:::-;4764:223;;:::o;6029:160:20:-;-1:-1:-1;;;;;6152:20:20;;6126:7;6152:20;;;:13;:20;;;;;:30;;6176:5;6152:23;:30::i;:::-;6145:37;;6029:160;;;;;:::o;5938:205:53:-;6035:12;:10;:12::i;:::-;-1:-1:-1;;;;;6024:23:53;:7;-1:-1:-1;;;;;6024:23:53;;6016:83;;;;-1:-1:-1;;;6016:83:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6110:26;6122:4;6128:7;6110:11;:26::i;2507:168:39:-;2551:34;747:24;2572:12;:10;:12::i;2551:34::-;2543:105;;;;-1:-1:-1;;;2543:105:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2658:10;:8;:10::i;:::-;2507:168::o;8452:149:20:-;8555:39;8572:4;8578:2;8582:7;8555:39;;;;;;;;;;;;:16;:39::i;455:241:21:-;571:41;590:12;:10;:12::i;571:41::-;563:102;;;;-1:-1:-1;;;563:102:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;675:14;681:7;675:5;:14::i;:::-;455:241;:::o;4045:176:53:-;4125:7;4151:12;;;;;;;;;;;-1:-1:-1;;;;;4196:16:53;;4151:63;;:36;;:63;;;;;;4045:176;;;;:::o;6540:169:20:-;6615:7;;6656:22;:12;6672:5;6656:15;:22::i;:::-;-1:-1:-1;6634:44:20;6540:169;-1:-1:-1;;;6540:169:20:o;1052:84:32:-;1122:7;;;;1052:84;:::o;4280:175:20:-;4352:7;4378:70;4395:7;4378:70;;;;;;;;;;;;;;;;;:12;;:70;:16;:70::i;5855:95::-;5935:8;5928:15;;;;;;;;-1:-1:-1;;5928:15:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5903:13;;5928:15;;5935:8;;5928:15;;5935:8;5928:15;;;;;;;;;;;;;;;;;;;;;;;;4005:218;4077:7;-1:-1:-1;;;;;4104:19:20;;4096:74;;;;-1:-1:-1;;;4096:74:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4187:20:20;;;;;;:13;:20;;;;;:29;;:27;:29::i;2137:162:39:-;2179:34;747:24;2200:12;:10;:12::i;2179:34::-;2171:103;;;;-1:-1:-1;;;2171:103:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2284:8;:6;:8::i;3824:136:53:-;3897:7;3923:12;;;;;;;;;;:30;;3947:5;3923:23;:30::i;2809:137::-;2878:4;2901:12;;;;;;;;;;:38;;2931:7;2901:29;:38::i;4679:102:20:-;4767:7;4760:14;;;;;;;;-1:-1:-1;;4760:14:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4735:13;;4760:14;;4767:7;;4760:14;;4767:7;4760:14;;;;;;;;;;;;;;;;;;;;;;;;1999:49:53;2044:4;1999:49;:::o;7506:290:20:-;7620:12;:10;:12::i;:::-;-1:-1:-1;;;;;7608:24:20;:8;-1:-1:-1;;;;;7608:24:20;;;7600:62;;;;;-1:-1:-1;;;7600:62:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;7718:8;7673:18;:32;7692:12;:10;:12::i;:::-;-1:-1:-1;;;;;7673:32:20;;;;;;;;;;;;;;;;;-1:-1:-1;7673:32:20;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;7673:53:20;;;;;;;;;;;7756:12;:10;:12::i;:::-;-1:-1:-1;;;;;7741:48:20;;7780:8;7741:48;;;;;;;;;;;;;;;;;;;;7506:290;;:::o;8667:282::-;8798:41;8817:12;:10;:12::i;:::-;8831:7;8798:18;:41::i;:::-;8790:103;;;;-1:-1:-1;;;8790:103:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8903:39;8917:4;8923:2;8927:7;8936:5;8903:13;:39::i;:::-;8667:282;;;;:::o;4847:776::-;4920:13;4953:16;4961:7;4953;:16::i;:::-;4945:76;;;;-1:-1:-1;;;4945:76:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5058:19;;;;:10;:19;;;;;;;;;5032:45;;;;;;-1:-1:-1;;5032:45:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;:45;;;5058:19;5032:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5087:18;5108:9;:7;:9::i;:::-;5087:30;;5196:4;5190:18;5212:1;5190:23;5186:70;;;-1:-1:-1;5236:9:20;-1:-1:-1;5229:16:20;;5186:70;5358:23;;:27;5354:106;;5432:4;5438:9;5415:33;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5415:33:20;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5415:33:20;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5415:33:20;;;;;;;;;;;;;-1:-1:-1;;5415:33:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5401:48;;;;;;5354:106;5590:4;5596:18;:7;:16;:18::i;:::-;5573:42;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5573:42:20;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5573:42:20;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5573:42:20;;;;;;;;;;;;;-1:-1:-1;;5573:42:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5559:57;;;;4847:776;;;:::o;3114:125:53:-;3177:7;3203:12;;;;;;;;;;:29;;:27;:29::i;1676:257:39:-;1765:34;679:24;1786:12;:10;:12::i;1765:34::-;1757:102;;;;-1:-1:-1;;;1757:102:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1870:18;1876:2;1880:7;1870:5;:18::i;:::-;1898:28;1911:7;1920:5;1898:12;:28::i;641:62::-;679:24;641:62;:::o;5221:226:53:-;5313:6;:12;;;;;;;;;;:22;;;5305:45;;5337:12;:10;:12::i;5305:45::-;5297:106;;;;-1:-1:-1;;;5297:106:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;709:62:39;747:24;709:62;:::o;7862:162:20:-;-1:-1:-1;;;;;7982:25:20;;;7959:4;7982:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7862:162::o;6429:150:31:-;6499:4;6522:50;6527:3;-1:-1:-1;;;;;6547:23:31;;6522:4;:50::i;10383:125:20:-;10448:4;10471:30;:12;10493:7;10471:21;:30::i;598:104:28:-;685:10;598:104;:::o;16225:189:20:-;16299:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;16299:29:20;-1:-1:-1;;;;;16299:29:20;;;;;;;;:24;;16352:23;16299:24;16352:14;:23::i;:::-;-1:-1:-1;;;;;16343:46:20;;;;;;;;;;;16225:189;;:::o;7820:121:30:-;7889:7;7915:19;7923:3;7915:7;:19::i;10666:351:20:-;10759:4;10783:16;10791:7;10783;:16::i;:::-;10775:73;;;;-1:-1:-1;;;10775:73:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10858:13;10874:23;10889:7;10874:14;:23::i;:::-;10858:39;;10926:5;-1:-1:-1;;;;;10915:16:20;:7;-1:-1:-1;;;;;10915:16:20;;:51;;;;10959:7;-1:-1:-1;;;;;10935:31:20;:20;10947:7;10935:11;:20::i;:::-;-1:-1:-1;;;;;10935:31:20;;10915:51;:94;;;;10970:39;10994:5;11001:7;10970:23;:39::i;:::-;10907:103;10666:351;-1:-1:-1;;;;10666:351:20:o;13707:584::-;13831:4;-1:-1:-1;;;;;13804:31:20;:23;13819:7;13804:14;:23::i;:::-;-1:-1:-1;;;;;13804:31:20;;13796:85;;;;-1:-1:-1;;;13796:85:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13917:16:20;;13909:65;;;;-1:-1:-1;;;13909:65:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13985:39;14006:4;14012:2;14016:7;13985:20;:39::i;:::-;14086:29;14103:1;14107:7;14086:8;:29::i;:::-;-1:-1:-1;;;;;14126:19:20;;;;;;:13;:19;;;;;:35;;14153:7;14126:26;:35::i;:::-;-1:-1:-1;;;;;;14171:17:20;;;;;;:13;:17;;;;;:30;;14193:7;14171:21;:30::i;:::-;-1:-1:-1;14212:29:20;:12;14229:7;14238:2;14212:16;:29::i;:::-;;14276:7;14272:2;-1:-1:-1;;;;;14257:27:20;14266:4;-1:-1:-1;;;;;14257:27:20;;;;;;;;;;;13707:584;;;:::o;7025:184:53:-;7098:6;:12;;;;;;;;;;:33;;7123:7;7098:24;:33::i;:::-;7094:109;;;7179:12;:10;:12::i;:::-;-1:-1:-1;;;;;7152:40:53;7170:7;-1:-1:-1;;;;;7152:40:53;7164:4;7152:40;;;;;;;;;;7025:184;;:::o;9250:135:31:-;9321:7;9355:22;9359:3;9371:5;9355:3;:22::i;7215:188:53:-;7289:6;:12;;;;;;;;;;:36;;7317:7;7289:27;:36::i;:::-;7285:112;;;7373:12;:10;:12::i;:::-;-1:-1:-1;;;;;7346:40:53;7364:7;-1:-1:-1;;;;;7346:40:53;7358:4;7346:40;;;;;;;;;;7215:188;;:::o;2064:117:32:-;1631:8;:6;:8::i;:::-;1623:41;;;;;-1:-1:-1;;;1623:41:32;;;;;;;;;;;;-1:-1:-1;;;1623:41:32;;;;;;;;;;;;;;;2122:7:::1;:15:::0;;-1:-1:-1;;2122:15:32::1;::::0;;2152:22:::1;2161:12;:10;:12::i;:::-;2152:22;::::0;;-1:-1:-1;;;;;2152:22:32;;::::1;::::0;;;;;;;::::1;::::0;;::::1;2064:117::o:0;12856:527:20:-;12915:13;12931:23;12946:7;12931:14;:23::i;:::-;12915:39;;12983:48;13004:5;13019:1;13023:7;12983:20;:48::i;:::-;13069:29;13086:1;13090:7;13069:8;:29::i;:::-;13154:19;;;;:10;:19;;;;;13148:33;;-1:-1:-1;;13148:33:20;;;;;;;;;;;:38;13144:95;;13209:19;;;;:10;:19;;;;;13202:26;;;:::i;:::-;-1:-1:-1;;;;;13249:20:20;;;;;;:13;:20;;;;;:36;;13277:7;13249:27;:36::i;:::-;-1:-1:-1;13296:28:20;:12;13316:7;13296:19;:28::i;:::-;-1:-1:-1;13340:36:20;;13368:7;;13364:1;;-1:-1:-1;;;;;13340:36:20;;;;;13364:1;;13340:36;12856:527;;:::o;8269:233:30:-;8349:7;;;;8408:22;8412:3;8424:5;8408:3;:22::i;:::-;8377:53;;;;-1:-1:-1;8269:233:30;-1:-1:-1;;;;;8269:233:30:o;9522:211::-;9629:7;9679:44;9684:3;9704;9710:12;9679:4;:44::i;:::-;9671:53;-1:-1:-1;9522:211:30;;;;;;:::o;1817:115:32:-;1366:8;:6;:8::i;:::-;1365:9;1357:38;;;;;-1:-1:-1;;;1357:38:32;;;;;;;;;;;;-1:-1:-1;;;1357:38:32;;;;;;;;;;;;;;;1876:7:::1;:14:::0;;-1:-1:-1;;1876:14:32::1;1886:4;1876:14;::::0;;1905:20:::1;1912:12;:10;:12::i;6984:165:31:-:0;7064:4;7087:55;7097:3;-1:-1:-1;;;;;7117:23:31;;7087:9;:55::i;9811:269:20:-;9924:28;9934:4;9940:2;9944:7;9924:9;:28::i;:::-;9970:48;9993:4;9999:2;10003:7;10012:5;9970:22;:48::i;:::-;9962:111;;;;-1:-1:-1;;;9962:111:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;210:725:33;266:13;483:10;479:51;;-1:-1:-1;509:10:33;;;;;;;;;;;;-1:-1:-1;;;509:10:33;;;;;;479:51;554:5;539:12;593:75;600:9;;593:75;;625:8;;655:2;647:10;;;;593:75;;;677:19;709:6;699:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;699:17:33;-1:-1:-1;769:5:33;;-1:-1:-1;677:39:33;-1:-1:-1;;;742:10:33;;784:114;791:9;;784:114;;859:2;852:4;:9;847:2;:14;834:29;;816:6;823:7;;;;;;;816:15;;;;;;;;;;;:47;-1:-1:-1;;;;;816:47:33;;;;;;;;-1:-1:-1;885:2:33;877:10;;;;784:114;;;-1:-1:-1;921:6:33;210:725;-1:-1:-1;;;;210:725:33:o;12246:393:20:-;-1:-1:-1;;;;;12325:16:20;;12317:61;;;;;-1:-1:-1;;;12317:61:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12397:16;12405:7;12397;:16::i;:::-;12396:17;12388:58;;;;;-1:-1:-1;;;12388:58:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;12457:45;12486:1;12490:2;12494:7;12457:20;:45::i;:::-;-1:-1:-1;;;;;12513:17:20;;;;;;:13;:17;;;;;:30;;12535:7;12513:21;:30::i;:::-;-1:-1:-1;12554:29:20;:12;12571:7;12580:2;12554:16;:29::i;:::-;-1:-1:-1;12599:33:20;;12624:7;;-1:-1:-1;;;;;12599:33:20;;;12616:1;;12599:33;;12616:1;;12599:33;12246:393;;:::o;14438:212::-;14537:16;14545:7;14537;:16::i;:::-;14529:73;;;;-1:-1:-1;;;14529:73:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14612:19;;;;:10;:19;;;;;;;;:31;;;;;;;;:::i;1640:404:31:-;1703:4;1724:21;1734:3;1739:5;1724:9;:21::i;:::-;1719:319;;-1:-1:-1;1761:23:31;;;;;;;;:11;:23;;;;;;;;;;;;;1941:18;;1919:19;;;:12;;;:19;;;;;;:40;;;;1973:11;;1719:319;-1:-1:-1;2022:5:31;2015:12;;7588:149:30;7672:4;7695:35;7705:3;7725;7695:9;:35::i;4491:108::-;4573:19;;4491:108::o;2681:177:39:-;2806:45;2833:4;2839:2;2843:7;2806:26;:45::i;8365:135:31:-;8435:4;8458:35;8466:3;8486:5;8458:7;:35::i;8068:129::-;8135:4;8158:32;8163:3;8183:5;8158:4;:32::i;7027:183:30:-;7116:4;7139:64;7144:3;7164;-1:-1:-1;;;;;7178:23:30;;7139:4;:64::i;4452:201:31:-;4546:18;;4519:7;;4546:26;-1:-1:-1;4538:73:31;;;;-1:-1:-1;;;4538:73:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4628:3;:11;;4640:5;4628:18;;;;;;;;;;;;;;;;4621:25;;4452:201;;;;:::o;6747:156::-;6820:4;6843:53;6851:3;-1:-1:-1;;;;;6871:23:31;;6843:7;:53::i;7369:140:30:-;7446:4;7469:33;7477:3;7497;7469:7;:33::i;4942:274::-;5045:19;;5009:7;;;;5045:27;-1:-1:-1;5037:74:30;;;;-1:-1:-1;;;5037:74:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5122:22;5147:3;:12;;5160:5;5147:19;;;;;;;;;;;;;;;;;;5122:44;;5184:5;:10;;;5196:5;:12;;;5176:33;;;;;4942:274;;;;;:::o;6403:315::-;6497:7;6535:17;;;:12;;;:17;;;;;;6585:12;6570:13;6562:36;;;;-1:-1:-1;;;6562:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6651:3;:12;;6675:1;6664:8;:12;6651:26;;;;;;;;;;;;;;;;;;:33;;;6644:40;;;6403:315;;;;;:::o;3805:127:31:-;3878:4;3901:19;;;:12;;;;;:19;;;;;;:24;;;3805:127::o;15524:589:20:-;15644:4;15669:15;:2;-1:-1:-1;;;;;15669:13:20;;:15::i;:::-;15664:58;;-1:-1:-1;15707:4:20;15700:11;;15664:58;15731:23;15757:246;-1:-1:-1;;;15868:12:20;:10;:12::i;:::-;15894:4;15912:7;15933:5;15773:175;;;;;;-1:-1:-1;;;;;15773:175:20;;;;;;-1:-1:-1;;;;;15773:175:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15773:175:20;;;;;;;-1:-1:-1;;;;;15773:175:20;;;;;;;;;;;15757:246;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15757:15:20;;;:246;:15;:246::i;:::-;15731:272;;16013:13;16040:10;16029:32;;;;;;;;;;;;;;;-1:-1:-1;16029:32:20;-1:-1:-1;;;;;;16079:26:20;-1:-1:-1;;;16079:26:20;;-1:-1:-1;;;15524:589:20;;;;;;:::o;595:237:22:-;704:45;731:4;737:2;741:7;704:26;:45::i;:::-;769:8;:6;:8::i;:::-;768:9;760:65;;;;-1:-1:-1;;;760:65:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2212:1512:31;2278:4;2415:19;;;:12;;;:19;;;;;;2449:15;;2445:1273;;2878:18;;-1:-1:-1;;2830:14:31;;;;2878:22;;;;2806:21;;2878:3;;:22;;3160;;;;;;;;;;;;;;3140:42;;3303:9;3274:3;:11;;3286:13;3274:26;;;;;;;;;;;;;;;;;;;:38;;;;3378:23;;;3420:1;3378:12;;;:23;;;;;;3404:17;;;3378:43;;3527:17;;3378:3;;3527:17;;;;;;;;;;;;;;;;;;;;;;3619:3;:12;;:19;3632:5;3619:19;;;;;;;;;;;3612:26;;;3660:4;3653:11;;;;;;;;2445:1273;3702:5;3695:12;;;;;1836:678:30;1912:4;2045:17;;;:12;;;:17;;;;;;2077:13;2073:435;;-1:-1:-1;;2161:38:30;;;;;;;;;;;;;;;;;;2143:57;;;;;;;;:12;:57;;;;;;;;;;;;;;;;;;;;;;;;2355:19;;2335:17;;;:12;;;:17;;;;;;;:39;2388:11;;2073:435;2466:5;2430:3;:12;;2454:1;2443:8;:12;2430:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2492:5;2485:12;;;;;2682:1517;2746:4;2879:17;;;:12;;;:17;;;;;;2911:13;;2907:1286;;3337:19;;-1:-1:-1;;3291:12:30;;;;3337:23;;;;3267:21;;3337:3;;:23;;3629;;;;;;;;;;;;;;;;3600:52;;3774:9;3744:3;:12;;3757:13;3744:27;;;;;;;;;;;;;;;;:39;;:27;;;;;:39;;;;;;;;;;;;;;;3862:14;;3849:28;;:12;;;:28;;;;;3880:17;;;3849:48;;4003:18;;3849:3;;4003:18;;;;;;;;;;;;;;-1:-1:-1;;4003:18:30;;;;;;;;;;;;;;;;;;;;;4096:17;;;:12;;;:17;;;;;;4089:24;;;;4003:18;-1:-1:-1;4128:11:30;;-1:-1:-1;;;;4128:11:30;726:413:27;1086:20;1124:8;;;726:413::o;3581:193::-;3684:12;3715:52;3737:6;3745:4;3751:1;3754:12;3684;4858:18;4869:6;4858:10;:18::i;:::-;4850:60;;;;;-1:-1:-1;;;4850:60:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;4981:12;4995:23;5022:6;-1:-1:-1;;;;;5022:11:27;5042:5;5050:4;5022:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5022:33:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:75;;;;5072:52;5090:7;5099:10;5111:12;5072:17;:52::i;:::-;5065:59;4608:523;-1:-1:-1;;;;;;;4608:523:27:o;7091:725::-;7206:12;7234:7;7230:580;;;-1:-1:-1;7264:10:27;7257:17;;7230:580;7375:17;;:21;7371:429;;7633:10;7627:17;7693:15;7680:10;7676:2;7672:19;7665:44;7582:145;7765:20;;-1:-1:-1;;;7765:20:27;;;;;;;;;;;;;;;;;7772:12;;7765:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;",
  "source": "// SPDX-License-Identifier: LGPL-3.0-only\npragma solidity 0.6.12;\n\n// This is adapted from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.0.0/contracts/presets/ERC721PresetMinterPauserAutoId.sol\n\nimport \"./utils/AccessControl.sol\";\nimport \"@openzeppelin/contracts/GSN/Context.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721Burnable.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721Pausable.sol\";\n\n\ncontract ERC721MinterBurnerPauser is Context, AccessControl, ERC721Burnable, ERC721Pausable {\n    bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n    bytes32 public constant PAUSER_ROLE = keccak256(\"PAUSER_ROLE\");\n\n    /**\n     * @dev Grants `DEFAULT_ADMIN_ROLE` and `MINTER_ROLE`to the account that\n     * deploys the contract.\n     *\n     * Token URIs will be autogenerated based on `baseURI` and their token IDs.\n     * See {ERC721-tokenURI}.\n     */\n    constructor(string memory name, string memory symbol, string memory baseURI) public ERC721(name, symbol) {\n        _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\n\n        _setupRole(MINTER_ROLE, _msgSender());\n        _setupRole(PAUSER_ROLE, _msgSender());\n\n        _setBaseURI(baseURI);\n    }\n\n    /**\n     * @dev Creates a new token for `to`. Its token ID will be automatically\n     * assigned (and available on the emitted {Transfer} event), and the token\n     * URI autogenerated based on the base URI passed at construction.\n     *\n     * See {ERC721-_mint}.\n     *\n     * Requirements:\n     *\n     * - the caller must have the `MINTER_ROLE`.\n     */\n    function mint(address to, uint256 tokenId, string memory _data) public {\n        require(hasRole(MINTER_ROLE, _msgSender()), \"ERC721MinterBurnerPauser: must have minter role to mint\");\n\n        _mint(to, tokenId);\n        _setTokenURI(tokenId, _data);\n    }\n\n    /**\n     * @dev Pauses all token transfers.\n     *\n     * See {ERC721Pausable} and {Pausable-_pause}.\n     *\n     * Requirements:\n     *\n     * - the caller must have the `PAUSER_ROLE`.\n     */\n    function pause() public {\n        require(hasRole(PAUSER_ROLE, _msgSender()), \"ERC721MinterBurnerPauser: must have pauser role to pause\");\n        _pause();\n    }\n\n    /**\n     * @dev Unpauses all token transfers.\n     *\n     * See {ERC721Pausable} and {Pausable-_unpause}.\n     *\n     * Requirements:\n     *\n     * - the caller must have the `PAUSER_ROLE`.\n     */\n    function unpause() public {\n        require(hasRole(PAUSER_ROLE, _msgSender()), \"ERC721MinterBurnerPauser: must have pauser role to unpause\");\n        _unpause();\n    }\n\n    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal override(ERC721, ERC721Pausable) {\n        super._beforeTokenTransfer(from, to, tokenId);\n    }\n}\n",
  "sourcePath": "/home/sigo/w/deer/ethsub/packages/sol/contracts/ERC721MinterBurnerPauser.sol",
  "ast": {
    "absolutePath": "project:/contracts/ERC721MinterBurnerPauser.sol",
    "exportedSymbols": {
      "ERC721MinterBurnerPauser": [
        7900
      ]
    },
    "id": 7901,
    "license": "LGPL-3.0-only",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7753,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "42:23:39"
      },
      {
        "absolutePath": "project:/contracts/utils/AccessControl.sol",
        "file": "./utils/AccessControl.sol",
        "id": 7754,
        "nodeType": "ImportDirective",
        "scope": 7901,
        "sourceUnit": 10150,
        "src": "212:35:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/GSN/Context.sol",
        "file": "@openzeppelin/contracts/GSN/Context.sol",
        "id": 7755,
        "nodeType": "ImportDirective",
        "scope": 7901,
        "sourceUnit": 3,
        "src": "248:49:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/Counters.sol",
        "file": "@openzeppelin/contracts/utils/Counters.sol",
        "id": 7756,
        "nodeType": "ImportDirective",
        "scope": 7901,
        "sourceUnit": 4892,
        "src": "298:52:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
        "file": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
        "id": 7757,
        "nodeType": "ImportDirective",
        "scope": 7901,
        "sourceUnit": 4264,
        "src": "351:57:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721Burnable.sol",
        "file": "@openzeppelin/contracts/token/ERC721/ERC721Burnable.sol",
        "id": 7758,
        "nodeType": "ImportDirective",
        "scope": 7901,
        "sourceUnit": 4294,
        "src": "409:65:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721Pausable.sol",
        "file": "@openzeppelin/contracts/token/ERC721/ERC721Pausable.sol",
        "id": 7759,
        "nodeType": "ImportDirective",
        "scope": 7901,
        "sourceUnit": 4331,
        "src": "475:65:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7760,
              "name": "Context",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4841,
              "src": "580:7:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Context_$4841",
                "typeString": "contract Context"
              }
            },
            "id": 7761,
            "nodeType": "InheritanceSpecifier",
            "src": "580:7:39"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7762,
              "name": "AccessControl",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10149,
              "src": "589:13:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AccessControl_$10149",
                "typeString": "contract AccessControl"
              }
            },
            "id": 7763,
            "nodeType": "InheritanceSpecifier",
            "src": "589:13:39"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7764,
              "name": "ERC721Burnable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4293,
              "src": "604:14:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC721Burnable_$4293",
                "typeString": "contract ERC721Burnable"
              }
            },
            "id": 7765,
            "nodeType": "InheritanceSpecifier",
            "src": "604:14:39"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7766,
              "name": "ERC721Pausable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4330,
              "src": "620:14:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC721Pausable_$4330",
                "typeString": "contract ERC721Pausable"
              }
            },
            "id": 7767,
            "nodeType": "InheritanceSpecifier",
            "src": "620:14:39"
          }
        ],
        "contractDependencies": [
          342,
          582,
          4263,
          4293,
          4330,
          4446,
          4477,
          4504,
          4841,
          6035,
          10149
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7900,
        "linearizedBaseContracts": [
          7900,
          4330,
          6035,
          4293,
          4263,
          4477,
          4504,
          4446,
          342,
          582,
          10149,
          4841
        ],
        "name": "ERC721MinterBurnerPauser",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "functionSelector": "d5391393",
            "id": 7772,
            "mutability": "constant",
            "name": "MINTER_ROLE",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7900,
            "src": "641:62:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 7768,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "641:7:39",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "4d494e5445525f524f4c45",
                  "id": 7770,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "689:13:39",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",
                    "typeString": "literal_string \"MINTER_ROLE\""
                  },
                  "value": "MINTER_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",
                    "typeString": "literal_string \"MINTER_ROLE\""
                  }
                ],
                "id": 7769,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "679:9:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 7771,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "679:24:39",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "functionSelector": "e63ab1e9",
            "id": 7777,
            "mutability": "constant",
            "name": "PAUSER_ROLE",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7900,
            "src": "709:62:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 7773,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "709:7:39",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "5041555345525f524f4c45",
                  "id": 7775,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "757:13:39",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a",
                    "typeString": "literal_string \"PAUSER_ROLE\""
                  },
                  "value": "PAUSER_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a",
                    "typeString": "literal_string \"PAUSER_ROLE\""
                  }
                ],
                "id": 7774,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "747:9:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 7776,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "747:24:39",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 7813,
              "nodeType": "Block",
              "src": "1122:187:39",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7792,
                        "name": "DEFAULT_ADMIN_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9884,
                        "src": "1143:18:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7793,
                          "name": "_msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4829,
                          "src": "1163:10:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                            "typeString": "function () view returns (address payable)"
                          }
                        },
                        "id": 7794,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1163:12:39",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 7791,
                      "name": "_setupRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10084,
                      "src": "1132:10:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 7795,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1132:44:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7796,
                  "nodeType": "ExpressionStatement",
                  "src": "1132:44:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7798,
                        "name": "MINTER_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7772,
                        "src": "1198:11:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7799,
                          "name": "_msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4829,
                          "src": "1211:10:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                            "typeString": "function () view returns (address payable)"
                          }
                        },
                        "id": 7800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1211:12:39",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 7797,
                      "name": "_setupRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10084,
                      "src": "1187:10:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 7801,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1187:37:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7802,
                  "nodeType": "ExpressionStatement",
                  "src": "1187:37:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7804,
                        "name": "PAUSER_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7777,
                        "src": "1245:11:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7805,
                          "name": "_msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4829,
                          "src": "1258:10:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                            "typeString": "function () view returns (address payable)"
                          }
                        },
                        "id": 7806,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1258:12:39",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 7803,
                      "name": "_setupRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10084,
                      "src": "1234:10:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 7807,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1234:37:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7808,
                  "nodeType": "ExpressionStatement",
                  "src": "1234:37:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7810,
                        "name": "baseURI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7784,
                        "src": "1294:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7809,
                      "name": "_setBaseURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4169,
                      "src": "1282:11:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory)"
                      }
                    },
                    "id": 7811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1282:20:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7812,
                  "nodeType": "ExpressionStatement",
                  "src": "1282:20:39"
                }
              ]
            },
            "documentation": {
              "id": 7778,
              "nodeType": "StructuredDocumentation",
              "src": "778:234:39",
              "text": " @dev Grants `DEFAULT_ADMIN_ROLE` and `MINTER_ROLE`to the account that\n deploys the contract.\n Token URIs will be autogenerated based on `baseURI` and their token IDs.\n See {ERC721-tokenURI}."
            },
            "id": 7814,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7787,
                    "name": "name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7780,
                    "src": "1108:4:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 7788,
                    "name": "symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7782,
                    "src": "1114:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 7789,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7786,
                  "name": "ERC721",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4263,
                  "src": "1101:6:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ERC721_$4263_$",
                    "typeString": "type(contract ERC721)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1101:20:39"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7785,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7780,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7814,
                  "src": "1029:18:39",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7779,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1029:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7782,
                  "mutability": "mutable",
                  "name": "symbol",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7814,
                  "src": "1049:20:39",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7781,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1049:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7784,
                  "mutability": "mutable",
                  "name": "baseURI",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7814,
                  "src": "1071:21:39",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7783,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1071:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1028:65:39"
            },
            "returnParameters": {
              "id": 7790,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1122:0:39"
            },
            "scope": 7900,
            "src": "1017:292:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7843,
              "nodeType": "Block",
              "src": "1747:186:39",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7826,
                            "name": "MINTER_ROLE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7772,
                            "src": "1773:11:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 7827,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4829,
                              "src": "1786:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 7828,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1786:12:39",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 7825,
                          "name": "hasRole",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9921,
                          "src": "1765:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) view returns (bool)"
                          }
                        },
                        "id": 7829,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1765:34:39",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552433732314d696e7465724275726e65725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e74",
                        "id": 7830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1801:57:39",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_fbb88e79a49efb2e1963453dcba8a0bb7672d1ecdb586ecdcaf92cd077d9b059",
                          "typeString": "literal_string \"ERC721MinterBurnerPauser: must have minter role to mint\""
                        },
                        "value": "ERC721MinterBurnerPauser: must have minter role to mint"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_fbb88e79a49efb2e1963453dcba8a0bb7672d1ecdb586ecdcaf92cd077d9b059",
                          "typeString": "literal_string \"ERC721MinterBurnerPauser: must have minter role to mint\""
                        }
                      ],
                      "id": 7824,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1757:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7831,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1757:102:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7832,
                  "nodeType": "ExpressionStatement",
                  "src": "1757:102:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7834,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7817,
                        "src": "1876:2:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7835,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7819,
                        "src": "1880:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7833,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3995,
                      "src": "1870:5:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 7836,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1870:18:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7837,
                  "nodeType": "ExpressionStatement",
                  "src": "1870:18:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7839,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7819,
                        "src": "1911:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7840,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7821,
                        "src": "1920:5:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7838,
                      "name": "_setTokenURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4158,
                      "src": "1898:12:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,string memory)"
                      }
                    },
                    "id": 7841,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1898:28:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7842,
                  "nodeType": "ExpressionStatement",
                  "src": "1898:28:39"
                }
              ]
            },
            "documentation": {
              "id": 7815,
              "nodeType": "StructuredDocumentation",
              "src": "1315:356:39",
              "text": " @dev Creates a new token for `to`. Its token ID will be automatically\n assigned (and available on the emitted {Transfer} event), and the token\n URI autogenerated based on the base URI passed at construction.\n See {ERC721-_mint}.\n Requirements:\n - the caller must have the `MINTER_ROLE`."
            },
            "functionSelector": "d3fc9864",
            "id": 7844,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7822,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7817,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7844,
                  "src": "1690:10:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7816,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1690:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7819,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7844,
                  "src": "1702:15:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7818,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1702:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7821,
                  "mutability": "mutable",
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7844,
                  "src": "1719:19:39",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7820,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1719:6:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1689:50:39"
            },
            "returnParameters": {
              "id": 7823,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1747:0:39"
            },
            "scope": 7900,
            "src": "1676:257:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7860,
              "nodeType": "Block",
              "src": "2161:138:39",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7850,
                            "name": "PAUSER_ROLE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7777,
                            "src": "2187:11:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 7851,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4829,
                              "src": "2200:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 7852,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2200:12:39",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 7849,
                          "name": "hasRole",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9921,
                          "src": "2179:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) view returns (bool)"
                          }
                        },
                        "id": 7853,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2179:34:39",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552433732314d696e7465724275726e65725061757365723a206d75737420686176652070617573657220726f6c6520746f207061757365",
                        "id": 7854,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2215:58:39",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5cca52a226d2352c1699faa1c18cabcd3a3bcb290db415b8c76f7b8b0fc95a01",
                          "typeString": "literal_string \"ERC721MinterBurnerPauser: must have pauser role to pause\""
                        },
                        "value": "ERC721MinterBurnerPauser: must have pauser role to pause"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5cca52a226d2352c1699faa1c18cabcd3a3bcb290db415b8c76f7b8b0fc95a01",
                          "typeString": "literal_string \"ERC721MinterBurnerPauser: must have pauser role to pause\""
                        }
                      ],
                      "id": 7848,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2171:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2171:103:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7856,
                  "nodeType": "ExpressionStatement",
                  "src": "2171:103:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 7857,
                      "name": "_pause",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6018,
                      "src": "2284:6:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 7858,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2284:8:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7859,
                  "nodeType": "ExpressionStatement",
                  "src": "2284:8:39"
                }
              ]
            },
            "documentation": {
              "id": 7845,
              "nodeType": "StructuredDocumentation",
              "src": "1939:193:39",
              "text": " @dev Pauses all token transfers.\n See {ERC721Pausable} and {Pausable-_pause}.\n Requirements:\n - the caller must have the `PAUSER_ROLE`."
            },
            "functionSelector": "8456cb59",
            "id": 7861,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "pause",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7846,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2151:2:39"
            },
            "returnParameters": {
              "id": 7847,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2161:0:39"
            },
            "scope": 7900,
            "src": "2137:162:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7877,
              "nodeType": "Block",
              "src": "2533:142:39",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7867,
                            "name": "PAUSER_ROLE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7777,
                            "src": "2559:11:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 7868,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4829,
                              "src": "2572:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 7869,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2572:12:39",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 7866,
                          "name": "hasRole",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9921,
                          "src": "2551:7:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) view returns (bool)"
                          }
                        },
                        "id": 7870,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2551:34:39",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4552433732314d696e7465724275726e65725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e7061757365",
                        "id": 7871,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2587:60:39",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5f40890df14beab2daebcc96e5978949a2a2f1765dd62a68329d160b4ecc314c",
                          "typeString": "literal_string \"ERC721MinterBurnerPauser: must have pauser role to unpause\""
                        },
                        "value": "ERC721MinterBurnerPauser: must have pauser role to unpause"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5f40890df14beab2daebcc96e5978949a2a2f1765dd62a68329d160b4ecc314c",
                          "typeString": "literal_string \"ERC721MinterBurnerPauser: must have pauser role to unpause\""
                        }
                      ],
                      "id": 7865,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2543:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7872,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2543:105:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7873,
                  "nodeType": "ExpressionStatement",
                  "src": "2543:105:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 7874,
                      "name": "_unpause",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6034,
                      "src": "2658:8:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 7875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2658:10:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7876,
                  "nodeType": "ExpressionStatement",
                  "src": "2658:10:39"
                }
              ]
            },
            "documentation": {
              "id": 7862,
              "nodeType": "StructuredDocumentation",
              "src": "2305:197:39",
              "text": " @dev Unpauses all token transfers.\n See {ERC721Pausable} and {Pausable-_unpause}.\n Requirements:\n - the caller must have the `PAUSER_ROLE`."
            },
            "functionSelector": "3f4ba83a",
            "id": 7878,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "unpause",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7863,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2523:2:39"
            },
            "returnParameters": {
              "id": 7864,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2533:0:39"
            },
            "scope": 7900,
            "src": "2507:168:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              4262,
              4329
            ],
            "body": {
              "id": 7898,
              "nodeType": "Block",
              "src": "2796:62:39",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7893,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7880,
                        "src": "2833:4:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7894,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7882,
                        "src": "2839:2:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7895,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7884,
                        "src": "2843:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7890,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "2806:5:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_ERC721MinterBurnerPauser_$7900",
                          "typeString": "contract super ERC721MinterBurnerPauser"
                        }
                      },
                      "id": 7892,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_beforeTokenTransfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4329,
                      "src": "2806:26:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 7896,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2806:45:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7897,
                  "nodeType": "ExpressionStatement",
                  "src": "2806:45:39"
                }
              ]
            },
            "documentation": null,
            "id": 7899,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_beforeTokenTransfer",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 7888,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 7886,
                  "name": "ERC721",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4263,
                  "src": "2772:6:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC721_$4263",
                    "typeString": "contract ERC721"
                  }
                },
                {
                  "contractScope": null,
                  "id": 7887,
                  "name": "ERC721Pausable",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4330,
                  "src": "2780:14:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC721Pausable_$4330",
                    "typeString": "contract ERC721Pausable"
                  }
                }
              ],
              "src": "2763:32:39"
            },
            "parameters": {
              "id": 7885,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7880,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7899,
                  "src": "2711:12:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7879,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2711:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7882,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7899,
                  "src": "2725:10:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7881,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2725:7:39",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7884,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7899,
                  "src": "2737:15:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7883,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2737:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2710:43:39"
            },
            "returnParameters": {
              "id": 7889,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2796:0:39"
            },
            "scope": 7900,
            "src": "2681:177:39",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 7901,
        "src": "543:2317:39"
      }
    ],
    "src": "42:2819:39"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "project:/contracts/ERC721MinterBurnerPauser.sol",
      "exportedSymbols": {
        "ERC721MinterBurnerPauser": [
          7900
        ]
      },
      "license": "LGPL-3.0-only"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.6",
            ".12"
          ]
        },
        "id": 7753,
        "name": "PragmaDirective",
        "src": "42:23:39"
      },
      {
        "attributes": {
          "SourceUnit": 10150,
          "absolutePath": "project:/contracts/utils/AccessControl.sol",
          "file": "./utils/AccessControl.sol",
          "scope": 7901,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 7754,
        "name": "ImportDirective",
        "src": "212:35:39"
      },
      {
        "attributes": {
          "SourceUnit": 3,
          "absolutePath": "@openzeppelin/contracts/GSN/Context.sol",
          "file": "@openzeppelin/contracts/GSN/Context.sol",
          "scope": 7901,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 7755,
        "name": "ImportDirective",
        "src": "248:49:39"
      },
      {
        "attributes": {
          "SourceUnit": 4892,
          "absolutePath": "@openzeppelin/contracts/utils/Counters.sol",
          "file": "@openzeppelin/contracts/utils/Counters.sol",
          "scope": 7901,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 7756,
        "name": "ImportDirective",
        "src": "298:52:39"
      },
      {
        "attributes": {
          "SourceUnit": 4264,
          "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
          "file": "@openzeppelin/contracts/token/ERC721/ERC721.sol",
          "scope": 7901,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 7757,
        "name": "ImportDirective",
        "src": "351:57:39"
      },
      {
        "attributes": {
          "SourceUnit": 4294,
          "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721Burnable.sol",
          "file": "@openzeppelin/contracts/token/ERC721/ERC721Burnable.sol",
          "scope": 7901,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 7758,
        "name": "ImportDirective",
        "src": "409:65:39"
      },
      {
        "attributes": {
          "SourceUnit": 4331,
          "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721Pausable.sol",
          "file": "@openzeppelin/contracts/token/ERC721/ERC721Pausable.sol",
          "scope": 7901,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 7759,
        "name": "ImportDirective",
        "src": "475:65:39"
      },
      {
        "attributes": {
          "abstract": false,
          "contractDependencies": [
            342,
            582,
            4263,
            4293,
            4330,
            4446,
            4477,
            4504,
            4841,
            6035,
            10149
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            7900,
            4330,
            6035,
            4293,
            4263,
            4477,
            4504,
            4446,
            342,
            582,
            10149,
            4841
          ],
          "name": "ERC721MinterBurnerPauser",
          "scope": 7901
        },
        "children": [
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "Context",
                  "referencedDeclaration": 4841,
                  "type": "contract Context"
                },
                "id": 7760,
                "name": "UserDefinedTypeName",
                "src": "580:7:39"
              }
            ],
            "id": 7761,
            "name": "InheritanceSpecifier",
            "src": "580:7:39"
          },
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AccessControl",
                  "referencedDeclaration": 10149,
                  "type": "contract AccessControl"
                },
                "id": 7762,
                "name": "UserDefinedTypeName",
                "src": "589:13:39"
              }
            ],
            "id": 7763,
            "name": "InheritanceSpecifier",
            "src": "589:13:39"
          },
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "ERC721Burnable",
                  "referencedDeclaration": 4293,
                  "type": "contract ERC721Burnable"
                },
                "id": 7764,
                "name": "UserDefinedTypeName",
                "src": "604:14:39"
              }
            ],
            "id": 7765,
            "name": "InheritanceSpecifier",
            "src": "604:14:39"
          },
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "ERC721Pausable",
                  "referencedDeclaration": 4330,
                  "type": "contract ERC721Pausable"
                },
                "id": 7766,
                "name": "UserDefinedTypeName",
                "src": "620:14:39"
              }
            ],
            "id": 7767,
            "name": "InheritanceSpecifier",
            "src": "620:14:39"
          },
          {
            "attributes": {
              "constant": true,
              "functionSelector": "d5391393",
              "mutability": "constant",
              "name": "MINTER_ROLE",
              "overrides": null,
              "scope": 7900,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 7768,
                "name": "ElementaryTypeName",
                "src": "641:7:39"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": false,
                  "lValueRequested": false,
                  "names": [
                    null
                  ],
                  "tryCall": false,
                  "type": "bytes32",
                  "type_conversion": false
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6",
                          "typeString": "literal_string \"MINTER_ROLE\""
                        }
                      ],
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": -8,
                      "type": "function (bytes memory) pure returns (bytes32)",
                      "value": "keccak256"
                    },
                    "id": 7769,
                    "name": "Identifier",
                    "src": "679:9:39"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "4d494e5445525f524f4c45",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"MINTER_ROLE\"",
                      "value": "MINTER_ROLE"
                    },
                    "id": 7770,
                    "name": "Literal",
                    "src": "689:13:39"
                  }
                ],
                "id": 7771,
                "name": "FunctionCall",
                "src": "679:24:39"
              }
            ],
            "id": 7772,
            "name": "VariableDeclaration",
            "src": "641:62:39"
          },
          {
            "attributes": {
              "constant": true,
              "functionSelector": "e63ab1e9",
              "mutability": "constant",
              "name": "PAUSER_ROLE",
              "overrides": null,
              "scope": 7900,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 7773,
                "name": "ElementaryTypeName",
                "src": "709:7:39"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": false,
                  "lValueRequested": false,
                  "names": [
                    null
                  ],
                  "tryCall": false,
                  "type": "bytes32",
                  "type_conversion": false
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a",
                          "typeString": "literal_string \"PAUSER_ROLE\""
                        }
                      ],
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": -8,
                      "type": "function (bytes memory) pure returns (bytes32)",
                      "value": "keccak256"
                    },
                    "id": 7774,
                    "name": "Identifier",
                    "src": "747:9:39"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "5041555345525f524f4c45",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"PAUSER_ROLE\"",
                      "value": "PAUSER_ROLE"
                    },
                    "id": 7775,
                    "name": "Literal",
                    "src": "757:13:39"
                  }
                ],
                "id": 7776,
                "name": "FunctionCall",
                "src": "747:24:39"
              }
            ],
            "id": 7777,
            "name": "VariableDeclaration",
            "src": "709:62:39"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "name": "",
              "overrides": null,
              "scope": 7900,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Grants `DEFAULT_ADMIN_ROLE` and `MINTER_ROLE`to the account that\n deploys the contract.\n Token URIs will be autogenerated based on `baseURI` and their token IDs.\n See {ERC721-tokenURI}."
                },
                "id": 7778,
                "name": "StructuredDocumentation",
                "src": "778:234:39"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "name",
                      "overrides": null,
                      "scope": 7814,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 7779,
                        "name": "ElementaryTypeName",
                        "src": "1029:6:39"
                      }
                    ],
                    "id": 7780,
                    "name": "VariableDeclaration",
                    "src": "1029:18:39"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "symbol",
                      "overrides": null,
                      "scope": 7814,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 7781,
                        "name": "ElementaryTypeName",
                        "src": "1049:6:39"
                      }
                    ],
                    "id": 7782,
                    "name": "VariableDeclaration",
                    "src": "1049:20:39"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "baseURI",
                      "overrides": null,
                      "scope": 7814,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 7783,
                        "name": "ElementaryTypeName",
                        "src": "1071:6:39"
                      }
                    ],
                    "id": 7784,
                    "name": "VariableDeclaration",
                    "src": "1071:21:39"
                  }
                ],
                "id": 7785,
                "name": "ParameterList",
                "src": "1028:65:39"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 7790,
                "name": "ParameterList",
                "src": "1122:0:39"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 4263,
                      "type": "type(contract ERC721)",
                      "value": "ERC721"
                    },
                    "id": 7786,
                    "name": "Identifier",
                    "src": "1101:6:39"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 7780,
                      "type": "string memory",
                      "value": "name"
                    },
                    "id": 7787,
                    "name": "Identifier",
                    "src": "1108:4:39"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 7782,
                      "type": "string memory",
                      "value": "symbol"
                    },
                    "id": 7788,
                    "name": "Identifier",
                    "src": "1114:6:39"
                  }
                ],
                "id": 7789,
                "name": "ModifierInvocation",
                "src": "1101:20:39"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10084,
                              "type": "function (bytes32,address)",
                              "value": "_setupRole"
                            },
                            "id": 7791,
                            "name": "Identifier",
                            "src": "1132:10:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9884,
                              "type": "bytes32",
                              "value": "DEFAULT_ADMIN_ROLE"
                            },
                            "id": 7792,
                            "name": "Identifier",
                            "src": "1143:18:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4829,
                                  "type": "function () view returns (address payable)",
                                  "value": "_msgSender"
                                },
                                "id": 7793,
                                "name": "Identifier",
                                "src": "1163:10:39"
                              }
                            ],
                            "id": 7794,
                            "name": "FunctionCall",
                            "src": "1163:12:39"
                          }
                        ],
                        "id": 7795,
                        "name": "FunctionCall",
                        "src": "1132:44:39"
                      }
                    ],
                    "id": 7796,
                    "name": "ExpressionStatement",
                    "src": "1132:44:39"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10084,
                              "type": "function (bytes32,address)",
                              "value": "_setupRole"
                            },
                            "id": 7797,
                            "name": "Identifier",
                            "src": "1187:10:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7772,
                              "type": "bytes32",
                              "value": "MINTER_ROLE"
                            },
                            "id": 7798,
                            "name": "Identifier",
                            "src": "1198:11:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4829,
                                  "type": "function () view returns (address payable)",
                                  "value": "_msgSender"
                                },
                                "id": 7799,
                                "name": "Identifier",
                                "src": "1211:10:39"
                              }
                            ],
                            "id": 7800,
                            "name": "FunctionCall",
                            "src": "1211:12:39"
                          }
                        ],
                        "id": 7801,
                        "name": "FunctionCall",
                        "src": "1187:37:39"
                      }
                    ],
                    "id": 7802,
                    "name": "ExpressionStatement",
                    "src": "1187:37:39"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10084,
                              "type": "function (bytes32,address)",
                              "value": "_setupRole"
                            },
                            "id": 7803,
                            "name": "Identifier",
                            "src": "1234:10:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7777,
                              "type": "bytes32",
                              "value": "PAUSER_ROLE"
                            },
                            "id": 7804,
                            "name": "Identifier",
                            "src": "1245:11:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4829,
                                  "type": "function () view returns (address payable)",
                                  "value": "_msgSender"
                                },
                                "id": 7805,
                                "name": "Identifier",
                                "src": "1258:10:39"
                              }
                            ],
                            "id": 7806,
                            "name": "FunctionCall",
                            "src": "1258:12:39"
                          }
                        ],
                        "id": 7807,
                        "name": "FunctionCall",
                        "src": "1234:37:39"
                      }
                    ],
                    "id": 7808,
                    "name": "ExpressionStatement",
                    "src": "1234:37:39"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4169,
                              "type": "function (string memory)",
                              "value": "_setBaseURI"
                            },
                            "id": 7809,
                            "name": "Identifier",
                            "src": "1282:11:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7784,
                              "type": "string memory",
                              "value": "baseURI"
                            },
                            "id": 7810,
                            "name": "Identifier",
                            "src": "1294:7:39"
                          }
                        ],
                        "id": 7811,
                        "name": "FunctionCall",
                        "src": "1282:20:39"
                      }
                    ],
                    "id": 7812,
                    "name": "ExpressionStatement",
                    "src": "1282:20:39"
                  }
                ],
                "id": 7813,
                "name": "Block",
                "src": "1122:187:39"
              }
            ],
            "id": 7814,
            "name": "FunctionDefinition",
            "src": "1017:292:39"
          },
          {
            "attributes": {
              "functionSelector": "d3fc9864",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "mint",
              "overrides": null,
              "scope": 7900,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Creates a new token for `to`. Its token ID will be automatically\n assigned (and available on the emitted {Transfer} event), and the token\n URI autogenerated based on the base URI passed at construction.\n See {ERC721-_mint}.\n Requirements:\n - the caller must have the `MINTER_ROLE`."
                },
                "id": 7815,
                "name": "StructuredDocumentation",
                "src": "1315:356:39"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "to",
                      "overrides": null,
                      "scope": 7844,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 7816,
                        "name": "ElementaryTypeName",
                        "src": "1690:7:39"
                      }
                    ],
                    "id": 7817,
                    "name": "VariableDeclaration",
                    "src": "1690:10:39"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenId",
                      "overrides": null,
                      "scope": 7844,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 7818,
                        "name": "ElementaryTypeName",
                        "src": "1702:7:39"
                      }
                    ],
                    "id": 7819,
                    "name": "VariableDeclaration",
                    "src": "1702:15:39"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_data",
                      "overrides": null,
                      "scope": 7844,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 7820,
                        "name": "ElementaryTypeName",
                        "src": "1719:6:39"
                      }
                    ],
                    "id": 7821,
                    "name": "VariableDeclaration",
                    "src": "1719:19:39"
                  }
                ],
                "id": 7822,
                "name": "ParameterList",
                "src": "1689:50:39"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 7823,
                "name": "ParameterList",
                "src": "1747:0:39"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_fbb88e79a49efb2e1963453dcba8a0bb7672d1ecdb586ecdcaf92cd077d9b059",
                                  "typeString": "literal_string \"ERC721MinterBurnerPauser: must have minter role to mint\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 7824,
                            "name": "Identifier",
                            "src": "1757:7:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9921,
                                  "type": "function (bytes32,address) view returns (bool)",
                                  "value": "hasRole"
                                },
                                "id": 7825,
                                "name": "Identifier",
                                "src": "1765:7:39"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7772,
                                  "type": "bytes32",
                                  "value": "MINTER_ROLE"
                                },
                                "id": 7826,
                                "name": "Identifier",
                                "src": "1773:11:39"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4829,
                                      "type": "function () view returns (address payable)",
                                      "value": "_msgSender"
                                    },
                                    "id": 7827,
                                    "name": "Identifier",
                                    "src": "1786:10:39"
                                  }
                                ],
                                "id": 7828,
                                "name": "FunctionCall",
                                "src": "1786:12:39"
                              }
                            ],
                            "id": 7829,
                            "name": "FunctionCall",
                            "src": "1765:34:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4552433732314d696e7465724275726e65725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e74",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"ERC721MinterBurnerPauser: must have minter role to mint\"",
                              "value": "ERC721MinterBurnerPauser: must have minter role to mint"
                            },
                            "id": 7830,
                            "name": "Literal",
                            "src": "1801:57:39"
                          }
                        ],
                        "id": 7831,
                        "name": "FunctionCall",
                        "src": "1757:102:39"
                      }
                    ],
                    "id": 7832,
                    "name": "ExpressionStatement",
                    "src": "1757:102:39"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3995,
                              "type": "function (address,uint256)",
                              "value": "_mint"
                            },
                            "id": 7833,
                            "name": "Identifier",
                            "src": "1870:5:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7817,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 7834,
                            "name": "Identifier",
                            "src": "1876:2:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7819,
                              "type": "uint256",
                              "value": "tokenId"
                            },
                            "id": 7835,
                            "name": "Identifier",
                            "src": "1880:7:39"
                          }
                        ],
                        "id": 7836,
                        "name": "FunctionCall",
                        "src": "1870:18:39"
                      }
                    ],
                    "id": 7837,
                    "name": "ExpressionStatement",
                    "src": "1870:18:39"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4158,
                              "type": "function (uint256,string memory)",
                              "value": "_setTokenURI"
                            },
                            "id": 7838,
                            "name": "Identifier",
                            "src": "1898:12:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7819,
                              "type": "uint256",
                              "value": "tokenId"
                            },
                            "id": 7839,
                            "name": "Identifier",
                            "src": "1911:7:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7821,
                              "type": "string memory",
                              "value": "_data"
                            },
                            "id": 7840,
                            "name": "Identifier",
                            "src": "1920:5:39"
                          }
                        ],
                        "id": 7841,
                        "name": "FunctionCall",
                        "src": "1898:28:39"
                      }
                    ],
                    "id": 7842,
                    "name": "ExpressionStatement",
                    "src": "1898:28:39"
                  }
                ],
                "id": 7843,
                "name": "Block",
                "src": "1747:186:39"
              }
            ],
            "id": 7844,
            "name": "FunctionDefinition",
            "src": "1676:257:39"
          },
          {
            "attributes": {
              "functionSelector": "8456cb59",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "pause",
              "overrides": null,
              "scope": 7900,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Pauses all token transfers.\n See {ERC721Pausable} and {Pausable-_pause}.\n Requirements:\n - the caller must have the `PAUSER_ROLE`."
                },
                "id": 7845,
                "name": "StructuredDocumentation",
                "src": "1939:193:39"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 7846,
                "name": "ParameterList",
                "src": "2151:2:39"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 7847,
                "name": "ParameterList",
                "src": "2161:0:39"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_5cca52a226d2352c1699faa1c18cabcd3a3bcb290db415b8c76f7b8b0fc95a01",
                                  "typeString": "literal_string \"ERC721MinterBurnerPauser: must have pauser role to pause\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 7848,
                            "name": "Identifier",
                            "src": "2171:7:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9921,
                                  "type": "function (bytes32,address) view returns (bool)",
                                  "value": "hasRole"
                                },
                                "id": 7849,
                                "name": "Identifier",
                                "src": "2179:7:39"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7777,
                                  "type": "bytes32",
                                  "value": "PAUSER_ROLE"
                                },
                                "id": 7850,
                                "name": "Identifier",
                                "src": "2187:11:39"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4829,
                                      "type": "function () view returns (address payable)",
                                      "value": "_msgSender"
                                    },
                                    "id": 7851,
                                    "name": "Identifier",
                                    "src": "2200:10:39"
                                  }
                                ],
                                "id": 7852,
                                "name": "FunctionCall",
                                "src": "2200:12:39"
                              }
                            ],
                            "id": 7853,
                            "name": "FunctionCall",
                            "src": "2179:34:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4552433732314d696e7465724275726e65725061757365723a206d75737420686176652070617573657220726f6c6520746f207061757365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"ERC721MinterBurnerPauser: must have pauser role to pause\"",
                              "value": "ERC721MinterBurnerPauser: must have pauser role to pause"
                            },
                            "id": 7854,
                            "name": "Literal",
                            "src": "2215:58:39"
                          }
                        ],
                        "id": 7855,
                        "name": "FunctionCall",
                        "src": "2171:103:39"
                      }
                    ],
                    "id": 7856,
                    "name": "ExpressionStatement",
                    "src": "2171:103:39"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6018,
                              "type": "function ()",
                              "value": "_pause"
                            },
                            "id": 7857,
                            "name": "Identifier",
                            "src": "2284:6:39"
                          }
                        ],
                        "id": 7858,
                        "name": "FunctionCall",
                        "src": "2284:8:39"
                      }
                    ],
                    "id": 7859,
                    "name": "ExpressionStatement",
                    "src": "2284:8:39"
                  }
                ],
                "id": 7860,
                "name": "Block",
                "src": "2161:138:39"
              }
            ],
            "id": 7861,
            "name": "FunctionDefinition",
            "src": "2137:162:39"
          },
          {
            "attributes": {
              "functionSelector": "3f4ba83a",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "unpause",
              "overrides": null,
              "scope": 7900,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Unpauses all token transfers.\n See {ERC721Pausable} and {Pausable-_unpause}.\n Requirements:\n - the caller must have the `PAUSER_ROLE`."
                },
                "id": 7862,
                "name": "StructuredDocumentation",
                "src": "2305:197:39"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 7863,
                "name": "ParameterList",
                "src": "2523:2:39"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 7864,
                "name": "ParameterList",
                "src": "2533:0:39"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_5f40890df14beab2daebcc96e5978949a2a2f1765dd62a68329d160b4ecc314c",
                                  "typeString": "literal_string \"ERC721MinterBurnerPauser: must have pauser role to unpause\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 7865,
                            "name": "Identifier",
                            "src": "2543:7:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9921,
                                  "type": "function (bytes32,address) view returns (bool)",
                                  "value": "hasRole"
                                },
                                "id": 7866,
                                "name": "Identifier",
                                "src": "2551:7:39"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7777,
                                  "type": "bytes32",
                                  "value": "PAUSER_ROLE"
                                },
                                "id": 7867,
                                "name": "Identifier",
                                "src": "2559:11:39"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4829,
                                      "type": "function () view returns (address payable)",
                                      "value": "_msgSender"
                                    },
                                    "id": 7868,
                                    "name": "Identifier",
                                    "src": "2572:10:39"
                                  }
                                ],
                                "id": 7869,
                                "name": "FunctionCall",
                                "src": "2572:12:39"
                              }
                            ],
                            "id": 7870,
                            "name": "FunctionCall",
                            "src": "2551:34:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4552433732314d696e7465724275726e65725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e7061757365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"ERC721MinterBurnerPauser: must have pauser role to unpause\"",
                              "value": "ERC721MinterBurnerPauser: must have pauser role to unpause"
                            },
                            "id": 7871,
                            "name": "Literal",
                            "src": "2587:60:39"
                          }
                        ],
                        "id": 7872,
                        "name": "FunctionCall",
                        "src": "2543:105:39"
                      }
                    ],
                    "id": 7873,
                    "name": "ExpressionStatement",
                    "src": "2543:105:39"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6034,
                              "type": "function ()",
                              "value": "_unpause"
                            },
                            "id": 7874,
                            "name": "Identifier",
                            "src": "2658:8:39"
                          }
                        ],
                        "id": 7875,
                        "name": "FunctionCall",
                        "src": "2658:10:39"
                      }
                    ],
                    "id": 7876,
                    "name": "ExpressionStatement",
                    "src": "2658:10:39"
                  }
                ],
                "id": 7877,
                "name": "Block",
                "src": "2533:142:39"
              }
            ],
            "id": 7878,
            "name": "FunctionDefinition",
            "src": "2507:168:39"
          },
          {
            "attributes": {
              "baseFunctions": [
                4262,
                4329
              ],
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_beforeTokenTransfer",
              "scope": 7900,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "ERC721",
                      "referencedDeclaration": 4263,
                      "type": "contract ERC721"
                    },
                    "id": 7886,
                    "name": "UserDefinedTypeName",
                    "src": "2772:6:39"
                  },
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "ERC721Pausable",
                      "referencedDeclaration": 4330,
                      "type": "contract ERC721Pausable"
                    },
                    "id": 7887,
                    "name": "UserDefinedTypeName",
                    "src": "2780:14:39"
                  }
                ],
                "id": 7888,
                "name": "OverrideSpecifier",
                "src": "2763:32:39"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "from",
                      "overrides": null,
                      "scope": 7899,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 7879,
                        "name": "ElementaryTypeName",
                        "src": "2711:7:39"
                      }
                    ],
                    "id": 7880,
                    "name": "VariableDeclaration",
                    "src": "2711:12:39"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "to",
                      "overrides": null,
                      "scope": 7899,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 7881,
                        "name": "ElementaryTypeName",
                        "src": "2725:7:39"
                      }
                    ],
                    "id": 7882,
                    "name": "VariableDeclaration",
                    "src": "2725:10:39"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenId",
                      "overrides": null,
                      "scope": 7899,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 7883,
                        "name": "ElementaryTypeName",
                        "src": "2737:7:39"
                      }
                    ],
                    "id": 7884,
                    "name": "VariableDeclaration",
                    "src": "2737:15:39"
                  }
                ],
                "id": 7885,
                "name": "ParameterList",
                "src": "2710:43:39"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 7889,
                "name": "ParameterList",
                "src": "2796:0:39"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_beforeTokenTransfer",
                              "referencedDeclaration": 4329,
                              "type": "function (address,address,uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -25,
                                  "type": "contract super ERC721MinterBurnerPauser",
                                  "value": "super"
                                },
                                "id": 7890,
                                "name": "Identifier",
                                "src": "2806:5:39"
                              }
                            ],
                            "id": 7892,
                            "name": "MemberAccess",
                            "src": "2806:26:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7880,
                              "type": "address",
                              "value": "from"
                            },
                            "id": 7893,
                            "name": "Identifier",
                            "src": "2833:4:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7882,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 7894,
                            "name": "Identifier",
                            "src": "2839:2:39"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7884,
                              "type": "uint256",
                              "value": "tokenId"
                            },
                            "id": 7895,
                            "name": "Identifier",
                            "src": "2843:7:39"
                          }
                        ],
                        "id": 7896,
                        "name": "FunctionCall",
                        "src": "2806:45:39"
                      }
                    ],
                    "id": 7897,
                    "name": "ExpressionStatement",
                    "src": "2806:45:39"
                  }
                ],
                "id": 7898,
                "name": "Block",
                "src": "2796:62:39"
              }
            ],
            "id": 7899,
            "name": "FunctionDefinition",
            "src": "2681:177:39"
          }
        ],
        "id": 7900,
        "name": "ContractDefinition",
        "src": "543:2317:39"
      }
    ],
    "id": 7901,
    "name": "SourceUnit",
    "src": "42:2819:39"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.3",
  "updatedAt": "2021-11-29T02:07:34.244Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "approve(address,uint256)": {
        "details": "See {IERC721-approve}."
      },
      "balanceOf(address)": {
        "details": "See {IERC721-balanceOf}."
      },
      "baseURI()": {
        "details": "Returns the base URI set via {_setBaseURI}. This will be automatically added as a prefix in {tokenURI} to each token's URI, or to the token ID if no specific URI is set for that token ID."
      },
      "burn(uint256)": {
        "details": "Burns `tokenId`. See {ERC721-_burn}. Requirements: - The caller must own `tokenId` or be an approved operator."
      },
      "constructor": {
        "details": "Grants `DEFAULT_ADMIN_ROLE` and `MINTER_ROLE`to the account that deploys the contract. Token URIs will be autogenerated based on `baseURI` and their token IDs. See {ERC721-tokenURI}."
      },
      "getApproved(uint256)": {
        "details": "See {IERC721-getApproved}."
      },
      "getRoleAdmin(bytes32)": {
        "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
      },
      "getRoleMember(bytes32,uint256)": {
        "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information."
      },
      "getRoleMemberCount(bytes32)": {
        "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role."
      },
      "getRoleMemberIndex(bytes32,address)": {
        "details": "Returns the index of the account that have `role`."
      },
      "grantRole(bytes32,address)": {
        "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."
      },
      "hasRole(bytes32,address)": {
        "details": "Returns `true` if `account` has been granted `role`."
      },
      "isApprovedForAll(address,address)": {
        "details": "See {IERC721-isApprovedForAll}."
      },
      "mint(address,uint256,string)": {
        "details": "Creates a new token for `to`. Its token ID will be automatically assigned (and available on the emitted {Transfer} event), and the token URI autogenerated based on the base URI passed at construction. See {ERC721-_mint}. Requirements: - the caller must have the `MINTER_ROLE`."
      },
      "name()": {
        "details": "See {IERC721Metadata-name}."
      },
      "ownerOf(uint256)": {
        "details": "See {IERC721-ownerOf}."
      },
      "pause()": {
        "details": "Pauses all token transfers. See {ERC721Pausable} and {Pausable-_pause}. Requirements: - the caller must have the `PAUSER_ROLE`."
      },
      "paused()": {
        "details": "Returns true if the contract is paused, and false otherwise."
      },
      "renounceRole(bytes32,address)": {
        "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`."
      },
      "revokeRole(bytes32,address)": {
        "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."
      },
      "safeTransferFrom(address,address,uint256)": {
        "details": "See {IERC721-safeTransferFrom}."
      },
      "safeTransferFrom(address,address,uint256,bytes)": {
        "details": "See {IERC721-safeTransferFrom}."
      },
      "setApprovalForAll(address,bool)": {
        "details": "See {IERC721-setApprovalForAll}."
      },
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas."
      },
      "symbol()": {
        "details": "See {IERC721Metadata-symbol}."
      },
      "tokenByIndex(uint256)": {
        "details": "See {IERC721Enumerable-tokenByIndex}."
      },
      "tokenOfOwnerByIndex(address,uint256)": {
        "details": "See {IERC721Enumerable-tokenOfOwnerByIndex}."
      },
      "tokenURI(uint256)": {
        "details": "See {IERC721Metadata-tokenURI}."
      },
      "totalSupply()": {
        "details": "See {IERC721Enumerable-totalSupply}."
      },
      "transferFrom(address,address,uint256)": {
        "details": "See {IERC721-transferFrom}."
      },
      "unpause()": {
        "details": "Unpauses all token transfers. See {ERC721Pausable} and {Pausable-_unpause}. Requirements: - the caller must have the `PAUSER_ROLE`."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}