{
  "_format": "hh-sol-artifact-1",
  "contractName": "RelayerRewardsPoolV1",
  "sourceName": "contracts/deprecated/V1/RelayerRewardsPoolV1.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AccessControlBadConfirmation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "neededRole",
          "type": "bytes32"
        }
      ],
      "name": "AccessControlUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "AddressEmptyCode",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "ERC1967InvalidImplementation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1967NonPayable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedInnerCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "parameter",
          "type": "string"
        }
      ],
      "name": "InvalidParameter",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "NoRewardsToClaim",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "RelayerAlreadyRegistered",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "RelayerNotRegistered",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "RewardsAlreadyClaimed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "RoundNotEnded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TransferFailed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UUPSUnauthorizedCallContext",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "slot",
          "type": "bytes32"
        }
      ],
      "name": "UUPSUnsupportedProxiableUUID",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "UnauthorizedUnregister",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        }
      ],
      "name": "B3TRAddressUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newWeight",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldWeight",
          "type": "uint256"
        }
      ],
      "name": "ClaimWeightUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newBlocks",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldBlocks",
          "type": "uint256"
        }
      ],
      "name": "EarlyAccessBlocksUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        }
      ],
      "name": "EmissionsAddressUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "userCount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTotalActions",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTotalWeightedActions",
          "type": "uint256"
        }
      ],
      "name": "ExpectedActionsReduced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newFee",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldFee",
          "type": "uint256"
        }
      ],
      "name": "FeeCapUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "actionCount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "weight",
          "type": "uint256"
        }
      ],
      "name": "RelayerActionRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newDenominator",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldDenominator",
          "type": "uint256"
        }
      ],
      "name": "RelayerFeeDenominatorUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newFee",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldFee",
          "type": "uint256"
        }
      ],
      "name": "RelayerFeePercentageUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "RelayerRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RelayerRewardsClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "RelayerUnregistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalRewards",
          "type": "uint256"
        }
      ],
      "name": "RewardsDeposited",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalAutoVoteUsers",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalActions",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalWeightedActions",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "numRelayers",
          "type": "uint256"
        }
      ],
      "name": "TotalAutoVotingActionsSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newWeight",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldWeight",
          "type": "uint256"
        }
      ],
      "name": "VoteWeightUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        }
      ],
      "name": "XAllocationVotingAddressUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "POOL_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UPGRADER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UPGRADE_INTERFACE_VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "totalReward",
          "type": "uint256"
        }
      ],
      "name": "calculateRelayerFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "claimRewards",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "claimableRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "completedWeightedActions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getB3trAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getClaimWeight",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getEarlyAccessBlocks",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getEmissionsAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getFeeCap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "getMissedAutoVotingUsersCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRegisteredRelayers",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRelayerFeeDenominator",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRelayerFeePercentage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "getTotalRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVoteWeight",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getXAllocationVotingAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "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": "admin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "upgrader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "b3trAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "emissionsAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "xAllocationVotingAddress",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "isClaimEarlyAccessActive",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "isRegisteredRelayer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "isRewardClaimable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "isVoteEarlyAccessActive",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "userCount",
          "type": "uint256"
        }
      ],
      "name": "reduceExpectedActionsForRound",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "registerRelayer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "enum RelayerActionV1",
          "name": "action",
          "type": "uint8"
        }
      ],
      "name": "registerRelayerAction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "callerConfirmation",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "b3trAddress",
          "type": "address"
        }
      ],
      "name": "setB3TRAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newWeight",
          "type": "uint256"
        }
      ],
      "name": "setClaimWeight",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "blocks",
          "type": "uint256"
        }
      ],
      "name": "setEarlyAccessBlocks",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "emissionsAddress",
          "type": "address"
        }
      ],
      "name": "setEmissionsAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newFeeCap",
          "type": "uint256"
        }
      ],
      "name": "setFeeCap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newDenominator",
          "type": "uint256"
        }
      ],
      "name": "setRelayerFeeDenominator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newFeePercentage",
          "type": "uint256"
        }
      ],
      "name": "setRelayerFeePercentage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalAutoVotingUsers",
          "type": "uint256"
        }
      ],
      "name": "setTotalActionsForRound",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newWeight",
          "type": "uint256"
        }
      ],
      "name": "setVoteWeight",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "xAllocationVotingAddress",
          "type": "address"
        }
      ],
      "name": "setXAllocationVotingAddress",
      "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": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "totalActions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "totalRelayerActions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "totalRelayerWeightedActions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        }
      ],
      "name": "totalWeightedActions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "unregisterRelayer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "validateClaimDuringEarlyAccess",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "roundId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "validateVoteDuringEarlyAccess",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516137a26200010460003960008181612ce401528181612d0d0152612e5501526137a26000f3fe6080604052600436106102705760003560e01c806301ffc9a7146102755780631459457a146102aa57806314d92307146102cc578063189ca316146102ec5780631bc3a6731461030c578063241f9e2b1461032e578063248a9ca31461035c57806324a697a31461037c57806325d3155e1461039c5780632f2ff15d146103b1578063338111e7146103d157806336568abe146103f157806336a7c134146104115780633bb18a76146104265780633d009cee1461044657806347b0b33e1461046657806348c2bd78146104865780634f1ef286146104a65780634f6981ee146104b957806352d1902d146104d957806354fd4d50146104ee578063552164ee1461052157806356f1612f1461054157806357181609146105615780635ae1cd14146105815780635f72790a146105a157806362f29478146105c1578063675d0f8d146105d65780636bb07c73146105f65780636c7b69cb146106165780636cf88e73146106365780637f5e98bd14610656578063855302011461066b57806389a96d351461068b5780638d2340a0146106ab57806391d14854146106c05780639858b78a146106e0578063a217fddf14610700578063ac4aa16b14610715578063ad3cb1cc14610737578063b7fe075a14610768578063b8f6dba71461077d578063be9412df1461079f578063d428cffc146107b4578063d547741f146107c9578063d5684392146107e9578063d94290e514610809578063dc404a0e14610829578063df171b0c14610849578063e2bbb15814610869578063e5ed920b14610889578063e78168b5146108a9578063e7dfe672146108c9578063f5e57b39146108e9578063f72c0d8b14610909575b600080fd5b34801561028157600080fd5b5061029561029036600461314b565b61092b565b60405190151581526020015b60405180910390f35b3480156102b657600080fd5b506102ca6102c5366004613191565b610962565b005b3480156102d857600080fd5b506102ca6102e73660046131f6565b610d6c565b3480156102f857600080fd5b506102ca610307366004613211565b610f92565b34801561031857600080fd5b5061032161106e565b6040516102a1919061322a565b34801561033a57600080fd5b5061034e61034936600461323e565b61108c565b6040519081526020016102a1565b34801561036857600080fd5b5061034e610377366004613211565b6110c1565b34801561038857600080fd5b506102ca610397366004613211565b6110e1565b3480156103a857600080fd5b50610321611171565b3480156103bd57600080fd5b506102ca6103cc366004613268565b61118f565b3480156103dd57600080fd5b5061034e6103ec36600461323e565b6111b1565b3480156103fd57600080fd5b506102ca61040c366004613268565b6112dd565b34801561041d57600080fd5b5061034e611315565b34801561043257600080fd5b506102ca6104413660046131f6565b61132a565b34801561045257600080fd5b50610295610461366004613211565b611424565b34801561047257600080fd5b506102ca6104813660046131f6565b6114de565b34801561049257600080fd5b506102956104a1366004613211565b6115c7565b6102ca6104b43660046132aa565b611664565b3480156104c557600080fd5b5061034e6104d4366004613211565b611683565b3480156104e557600080fd5b5061034e611701565b3480156104fa57600080fd5b506040805180820190915260018152603160f81b60208201525b6040516102a1919061338f565b34801561052d57600080fd5b5061034e61053c366004613211565b61171e565b34801561054d57600080fd5b506102ca61055c3660046131f6565b61173e565b34801561056d57600080fd5b506102ca61057c3660046131f6565b611827565b34801561058d57600080fd5b506102ca61059c3660046133c2565b611919565b3480156105ad57600080fd5b506102ca6105bc3660046133fe565b611a70565b3480156105cd57600080fd5b5061034e611b76565b3480156105e257600080fd5b506102ca6105f1366004613211565b611b8b565b34801561060257600080fd5b506102ca610611366004613211565b611c7d565b34801561062257600080fd5b506102ca610631366004613268565b611d57565b34801561064257600080fd5b506102ca610651366004613420565b611fd9565b34801561066257600080fd5b5061034e6121a5565b34801561067757600080fd5b5061034e610686366004613211565b6121ba565b34801561069757600080fd5b506102ca6106a6366004613211565b6121da565b3480156106b757600080fd5b506103216122ce565b3480156106cc57600080fd5b506102956106db366004613268565b6122e9565b3480156106ec57600080fd5b5061034e6106fb36600461323e565b61231f565b34801561070c57600080fd5b5061034e600081565b34801561072157600080fd5b5061072a612354565b6040516102a19190613473565b34801561074357600080fd5b50610514604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561077457600080fd5b5061034e6123c0565b34801561078957600080fd5b5061034e60008051602061368d83398151915281565b3480156107ab57600080fd5b5061034e6123d5565b3480156107c057600080fd5b5061034e6123ea565b3480156107d557600080fd5b506102ca6107e4366004613268565b6123ff565b3480156107f557600080fd5b506102956108043660046131f6565b61241b565b34801561081557600080fd5b506102ca610824366004613211565b61244b565b34801561083557600080fd5b5061034e610844366004613211565b61251a565b34801561085557600080fd5b5061034e610864366004613211565b612564565b34801561087557600080fd5b506102ca6108843660046133fe565b612584565b34801561089557600080fd5b506102ca6108a43660046133c2565b61270f565b3480156108b557600080fd5b5061034e6108c4366004613211565b61285f565b3480156108d557600080fd5b506102ca6108e43660046133fe565b61287f565b3480156108f557600080fd5b50610295610904366004613211565b612ae9565b34801561091557600080fd5b5061034e6000805160206136ad83398151915281565b60006001600160e01b03198216637965db0b60e01b148061095c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600061096c612b2d565b805490915060ff600160401b82041615906001600160401b03166000811580156109935750825b90506000826001600160401b031660011480156109af5750303b155b9050811580156109bd575080155b156109db5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610a0457845460ff60401b1916600160401b1785555b6001600160a01b038a16610a785760405162461bcd60e51b815260206004820152603060248201527f52656c6179657252657761726473506f6f6c3a2061646d696e2063616e6e6f7460448201526f206265207a65726f206164647265737360801b60648201526084015b60405180910390fd5b6001600160a01b038916610aea5760405162461bcd60e51b815260206004820152603360248201527f52656c6179657252657761726473506f6f6c3a2075706772616465722063616e6044820152726e6f74206265207a65726f206164647265737360681b6064820152608401610a6f565b6001600160a01b038816610b585760405162461bcd60e51b815260206004820152602f60248201527f52656c6179657252657761726473506f6f6c3a20623374722063616e6e6f742060448201526e6265207a65726f206164647265737360881b6064820152608401610a6f565b6001600160a01b038716610bcb5760405162461bcd60e51b815260206004820152603460248201527f52656c6179657252657761726473506f6f6c3a20656d697373696f6e732063616044820152736e6e6f74206265207a65726f206164647265737360601b6064820152608401610a6f565b6001600160a01b038616610c465760405162461bcd60e51b815260206004820152603c60248201527f52656c6179657252657761726473506f6f6c3a2078416c6c6f636174696f6e5660448201527b6f74696e672063616e6e6f74206265207a65726f206164647265737360201b6064820152608401610a6f565b610c4e612b51565b610c56612b5b565b610c5e612b51565b610c6960008b612b6b565b50610c826000805160206136ad8339815191528a612b6b565b50610c9b60008051602061368d8339815191528b612b6b565b506000610ca6612c0c565b80546001600160a01b03808c166001600160a01b0319928316178355600180840180548d8416908516179055600284018054928c1692909316919091179091556003600b830155600c820155600a60108201556064601182015568056bc75e2d63100000601282015562069780600f90910155508315610d6057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6001600160a01b0381163314801590610d9a5750610d9860008051602061368d833981519152336122e9565b155b8015610dae5750610dac6000336122e9565b155b15610ddd57604051630147b5b160e31b81523360048201526001600160a01b0382166024820152604401610a6f565b6000610de7612c0c565b6001600160a01b0383166000908152600d8201602052604090205490915060ff16610e27578160405163138cb58960e31b8152600401610a6f919061322a565b6001600160a01b0382166000908152600d820160205260408120805460ff191690555b600e820154811015610f5957826001600160a01b031682600e018281548110610e7557610e756134c0565b6000918252602090912001546001600160a01b031603610f4757600e82018054610ea1906001906134ec565b81548110610eb157610eb16134c0565b600091825260209091200154600e830180546001600160a01b039092169183908110610edf57610edf6134c0565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600e01805480610f2057610f206134ff565b600082815260209020810160001990810180546001600160a01b0319169055019055610f59565b80610f5181613515565b915050610e4a565b506040516001600160a01b038316907f490a66cc56c789979052c7052fc0c10a6c4627d8e6165caec80db97a4c38352190600090a25050565b60008051602061368d833981519152610fab81336122e9565b80610fbc5750610fbc6000336122e9565b610fd85760405162461bcd60e51b8152600401610a6f9061352e565b81600003611016576040516305519d6f60e51b815260206004820152600a6024820152691d9bdd1955d95a59da1d60b21b6044820152606401610a6f565b6000611020612c0c565b600b8101805490859055604051919250907fc6d810f6c3aa465110416db0d540c72fcfe818503d1580fd90df38a482f81af890611060908690849061358b565b60405180910390a150505050565b600080611079612c0c565b600201546001600160a01b031692915050565b600080611097612c0c565b6000938452600401602090815260408085206001600160a01b039690961685529490525050205490565b6000806110cc612c30565b60009384526020525050604090206001015490565b60008051602061368d8339815191526110fa81336122e9565b8061110b575061110b6000336122e9565b6111275760405162461bcd60e51b8152600401610a6f9061352e565b6000611131612c0c565b600f8101805490859055604051919250907f9f49ab705704ba5579e12282116057bb42856ad21fc913b1786bf1effc722b8d90611060908690849061358b565b60008061117c612c0c565b600101546001600160a01b031692915050565b611198826110c1565b6111a181612c54565b6111ab8383612b6b565b50505050565b6000806111bc612c0c565b604051631e804e7760e11b8152600481018590529091503090633d009cee90602401602060405180830381865afa1580156111fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121f9190613599565b61122d57600091505061095c565b600083815260088201602090815260408083206001600160a01b038816845290915290205460ff161561126457600091505061095c565b600083815260058201602090815260408083206001600160a01b038816845282528083205486845260078501835281842054600386019093529220548215806112ab575081155b156112bd57600094505050505061095c565b816112c884836135bb565b6112d291906135d2565b979650505050505050565b6001600160a01b03811633146113065760405163334bd91960e11b815260040160405180910390fd5b6113108282612c61565b505050565b600080611320612c0c565b6012015492915050565b60008051602061368d83398151915261134381336122e9565b8061135457506113546000336122e9565b6113705760405162461bcd60e51b8152600401610a6f9061352e565b6001600160a01b0382166113c2576040516305519d6f60e51b815260206004820152601860248201527778416c6c6f636174696f6e566f74696e674164647265737360401b6044820152606401610a6f565b60006113cc612c0c565b6002810180546001600160a01b038681166001600160a01b03198316811790935560405193945016918291907f897acaec25783ce4cf8ff29c16715e089a40d285e2e5d6fcf567af00f471425990600090a350505050565b60008061142f612c0c565b600181015460405163e52ef17f60e01b8152600481018690529192506001600160a01b03169063e52ef17f90602401602060405180830381865afa925050508015611497575060408051601f3d908101601f1916820190925261149491810190613599565b60015b6114a45750600092915050565b806114b3575060009392505050565b506000928352600781016020908152604080852054600a909301909152909220549190911015919050565b60008051602061368d8339815191526114f781336122e9565b8061150857506115086000336122e9565b6115245760405162461bcd60e51b8152600401610a6f9061352e565b6001600160a01b038216611569576040516305519d6f60e51b815260206004820152600b60248201526a623374724164647265737360a81b6044820152606401610a6f565b6000611573612c0c565b80546001600160a01b038581166001600160a01b03198316811784556040519394509116918291907fb3061a8192d243178b0fd92d1809bc86c3fa3b177c046cf74974c45c32cd25e090600090a350505050565b6000806115d2612c0c565b60028101546040516368377f6d60e11b8152600481018690529192506000916001600160a01b039091169063d06efeda906024015b602060405180830381865afa158015611624573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164891906135f4565b905081600f01548161165a919061360d565b4310949350505050565b61166c612cd9565b61167582612d7e565b61167f8282612d96565b5050565b60008061168e612c0c565b6000848152600782016020908152604080832054600a850190925290912054919250908181106116c357506000949350505050565b60006116cf82846134ec565b9050600084600c015485600b01546116e7919061360d565b905060006116f582846135d2565b98975050505050505050565b600061170b612e4a565b506000805160206136cd83398151915290565b600080611729612c0c565b60009384526003016020525050604090205490565b6001600160a01b038116611765576040516305519d6f60e51b8152600401610a6f90613620565b600061176f612c0c565b6001600160a01b0383166000908152600d8201602052604090205490915060ff16156117b05781604051634df9fbcf60e01b8152600401610a6f919061322a565b6001600160a01b0382166000818152600d830160209081526040808320805460ff19166001908117909155600e860180549182018155845291832090910180546001600160a01b03191684179055517fc3b80e866c8bfbccbded69771f510856bb44660d40a0b760d9f0781728543e4e9190a25050565b60008051602061368d83398151915261184081336122e9565b8061185157506118516000336122e9565b61186d5760405162461bcd60e51b8152600401610a6f9061352e565b6001600160a01b0382166118b7576040516305519d6f60e51b815260206004820152601060248201526f656d697373696f6e734164647265737360801b6044820152606401610a6f565b60006118c1612c0c565b6001810180546001600160a01b038681166001600160a01b03198316811790935560405193945016918291907fee0bb99897b3f409686cb6e56601a38cea38e9e00d9b28752b3be7b28ea8b0ad90600090a350505050565b6000611923612c0c565b905061192e84612ae9565b6119385750505050565b826001600160a01b0316826001600160a01b0316036119d25760405162461bcd60e51b815260206004820152605c602482015260008051602061370d83398151915260448201527f75736572732063616e6e6f7420636c61696d20666f72207468656d73656c766560648201527b1cc8191d5c9a5b99c819585c9b1e481858d8d95cdcc81c195c9a5bd960221b608482015260a401610a6f565b6001600160a01b0382166000908152600d8201602052604090205460ff166111ab5760405162461bcd60e51b8152602060048201526057602482015260008051602061374d83398151915260448201527f74206120726567697374657265642072656c6179657220647572696e6720636c606482015276185a5b4819585c9b1e481858d8d95cdcc81c195c9a5bd9604a1b608482015260a401610a6f565b60008051602061368d833981519152611a8981336122e9565b80611a9a5750611a9a6000336122e9565b611ab65760405162461bcd60e51b8152600401610a6f9061352e565b6000611ac0612c0c565b9050611acd8360026135bb565b6000858152600683016020526040902055600c810154600b820154611af2919061360d565b611afc90846135bb565b600085815260078301602081815260408084208590556006860182529283902054918152600e85015483518881529182019290925291820192909252606081019190915284907f0cfbd04f27dfdd7116e3d63de583a7cc8a337032164396bb6d7cac1deffbe415906080015b60405180910390a250505050565b600080611b81612c0c565b600f015492915050565b60008051602061368d833981519152611ba481336122e9565b80611bb55750611bb56000336122e9565b611bd15760405162461bcd60e51b8152600401610a6f9061352e565b600082118015611be2575060328211155b611c335760405162461bcd60e51b815260206004820152602e602482015260008051602061372d83398151915260448201526d3e203020616e64203c3d2035302560901b6064820152608401610a6f565b6000611c3d612c0c565b60108101805490859055604051919250907f27af4d4dc613005fec6b04e77e25da6e4959b86d30ed1919104596e9211198ee90611060908690849061358b565b60008051602061368d833981519152611c9681336122e9565b80611ca75750611ca76000336122e9565b611cc35760405162461bcd60e51b8152600401610a6f9061352e565b60008211611d0d5760405162461bcd60e51b8152602060048201526023602482015260008051602061372d83398151915260448201526203e20360ec1b6064820152608401610a6f565b6000611d17612c0c565b60128101805490859055604051919250907f3fbd83025056799b6fe5bc1a011ec202bfc22364cb9adb116bb3c71cf47990a690611060908690849061358b565b611d5f612e93565b6000611d69612c0c565b600181015460405163e52ef17f60e01b8152600481018690529192506001600160a01b03169063e52ef17f90602401602060405180830381865afa158015611db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd99190613599565b611df95760405163652d87c560e01b815260048101849052602401610a6f565b600083815260088201602090815260408083206001600160a01b038616845290915290205460ff1615611e4357818360405163ae19b57760e01b8152600401610a6f929190613641565b60405163338111e760e01b8152600090309063338111e790611e6b9086908890600401613641565b602060405180830381865afa158015611e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eac91906135f4565b905080600003611ed3578284604051634c8463db60e01b8152600401610a6f929190613641565b600084815260088301602090815260408083206001600160a01b038088168552925291829020805460ff191660011790558354915163a9059cbb60e01b815291169063a9059cbb90611f2b9086908590600401613641565b6020604051808303816000875af1158015611f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6e9190613599565b611f8b576040516312171d8360e31b815260040160405180910390fd5b83836001600160a01b03167f930b7d519086654efd667eab36b878a04585f80f21637ea555a4317bdc53197383604051611fc791815260200190565b60405180910390a3505061167f612ec9565b60008051602061368d833981519152611ff281336122e9565b8061200357506120036000336122e9565b61201f5760405162461bcd60e51b8152600401610a6f9061352e565b6001600160a01b038516612046576040516305519d6f60e51b8152600401610a6f90613620565b6000612050612c0c565b90506000808460018111156120675761206761365a565b146120765781600c015461207c565b81600b01545b600086815260048401602090815260408083206001600160a01b038c16845290915281208054929350906120af83613515565b9091555050600085815260098301602052604081208054916120d083613515565b9091555050600085815260058301602090815260408083206001600160a01b038b1684529091528120805483929061210990849061360d565b90915550506000858152600a830160205260408120805483929061212e90849061360d565b9091555050600085815260048301602090815260408083206001600160a01b038b811680865291909352928190205490518893928a1692917f8ba2985939970b62349519dc163ea364f1724ad045a94aa004922836e951700d916121949190879061358b565b60405180910390a450505050505050565b6000806121b0612c0c565b6011015492915050565b6000806121c5612c0c565b60009384526006016020525050604090205490565b60008051602061368d8339815191526121f381336122e9565b8061220457506122046000336122e9565b6122205760405162461bcd60e51b8152600401610a6f9061352e565b600082116122845760405162461bcd60e51b815260206004820152602b60248201527f52656c6179657252657761726473506f6f6c3a2044656e6f6d696e61746f722060448201526a06d757374206265203e20360ac1b6064820152608401610a6f565b600061228e612c0c565b60118101805490859055604051919250907f9e1a0a1bebf6adfae16d1d3786df0b65ff4af6055dbefbc87da9529a239b9bf790611060908690849061358b565b6000806122d9612c0c565b546001600160a01b031692915050565b6000806122f4612c30565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b60008061232a612c0c565b6000938452600501602090815260408085206001600160a01b039690961685529490525050205490565b60606000612360612c0c565b600e81018054604080516020808402820181019092528281529394508301828280156123b557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612397575b505050505091505090565b6000806123cb612c0c565b6010015492915050565b6000806123e0612c0c565b600c015492915050565b6000806123f5612c0c565b600b015492915050565b612408826110c1565b61241181612c54565b6111ab8383612c61565b600080612426612c0c565b6001600160a01b039093166000908152600d9093016020525050604090205460ff1690565b60008051602061368d83398151915261246481336122e9565b8061247557506124756000336122e9565b6124915760405162461bcd60e51b8152600401610a6f9061352e565b816000036124d0576040516305519d6f60e51b815260206004820152600b60248201526a18db185a5b55d95a59da1d60aa1b6044820152606401610a6f565b60006124da612c0c565b600c8101805490859055604051919250907fac463d979acc1ce3fe80c999b5375a1630b37589687e2a327a1d659787696c6e90611060908690849061358b565b600080612525612c0c565b601081015460118201549192509060008161254084886135bb565b61254a91906135d2565b905061255a818560120154612eda565b9695505050505050565b60008061256f612c0c565b6000938452600a016020525050604090205490565b60008051602061368d83398151915261259d81336122e9565b806125ae57506125ae6000336122e9565b6125ca5760405162461bcd60e51b8152600401610a6f9061352e565b82600003612604576040516305519d6f60e51b8152602060048201526006602482015265185b5bdd5b9d60d21b6044820152606401610a6f565b600061260e612c0c565b80546040516323b872dd60e01b8152336004820152306024820152604481018790529192506001600160a01b0316906323b872dd906064016020604051808303816000875af1158015612665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126899190613599565b6126a6576040516312171d8360e31b815260040160405180910390fd5b6000838152600382016020526040812080548692906126c690849061360d565b909155505060008381526003820160205260409081902054905184917fc47834cdb0191cfa2b90f6ae336198ff404f06226170200c57ab15ade0510ae691611b6891889161358b565b6000612719612c0c565b9050612724846115c7565b61272e5750505050565b826001600160a01b0316826001600160a01b0316036127c75760405162461bcd60e51b815260206004820152605b602482015260008051602061370d83398151915260448201527f75736572732063616e6e6f7420766f746520666f72207468656d73656c76657360648201527a08191d5c9a5b99c819585c9b1e481858d8d95cdcc81c195c9a5bd9602a1b608482015260a401610a6f565b6001600160a01b0382166000908152600d8201602052604090205460ff166111ab5760405162461bcd60e51b8152602060048201526051602482015260008051602061374d83398151915260448201527f74206120726567697374657265642072656c6179657220647572696e672065616064820152701c9b1e481858d8d95cdcc81c195c9a5bd9607a1b608482015260a401610a6f565b60008061286a612c0c565b60009384526007016020525050604090205490565b60008051602061368d83398151915261289881336122e9565b806128a957506128a96000336122e9565b6128c55760405162461bcd60e51b8152600401610a6f9061352e565b81600003612902576040516305519d6f60e51b81526020600482015260096024820152681d5cd95c90dbdd5b9d60ba1b6044820152606401610a6f565b600061290c612c0c565b9050600061291b8460026135bb565b9050600082600c015483600b0154612933919061360d565b61293d90866135bb565b60008781526006850160205260409020549091508211156129b45760405162461bcd60e51b815260206004820152603d60248201526000805160206136ed83398151915260448201527f65206d6f726520616374696f6e73207468616e20617661696c61626c650000006064820152608401610a6f565b6000868152600784016020526040902054811115612a375760405162461bcd60e51b815260206004820152604660248201526000805160206136ed83398151915260448201527f65206d6f726520776569676874656420616374696f6e73207468616e20617661606482015265696c61626c6560d01b608482015260a401610a6f565b600086815260068401602052604081208054849290612a579084906134ec565b9091555050600086815260078401602052604081208054839290612a7c9084906134ec565b90915550506000868152600684016020908152604080832054600787018352928190205481518981529283019390935281019190915286907fdc97cd873d9883808c7cbb3b9fdd91ec6437deb4377e651606aff5aaa7be08379060600160405180910390a2505050505050565b600080612af4612c0c565b600281015460405163d3a368bd60e01b8152600481018690529192506000916001600160a01b039091169063d3a368bd90602401611607565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b612b59612ef2565b565b612b63612ef2565b612b59612f17565b600080612b76612c30565b9050612b8284846122e9565b612c02576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055612bb83390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061095c565b600091505061095c565b7f33676f94b2c7694b38dc9f1f29c59bfbb522294615c1bff34717ad1fa892600090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b612c5e8133612f1f565b50565b600080612c6c612c30565b9050612c7884846122e9565b15612c02576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061095c565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612d6057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612d546000805160206136cd833981519152546001600160a01b031690565b6001600160a01b031614155b15612b595760405163703e46dd60e11b815260040160405180910390fd5b6000805160206136ad83398151915261167f81612c54565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612df0575060408051601f3d908101601f19168201909252612ded918101906135f4565b60015b612e0f5781604051634c9c8ce360e01b8152600401610a6f919061322a565b6000805160206136cd8339815191528114612e4057604051632a87526960e21b815260048101829052602401610a6f565b6113108383612f4a565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b595760405163703e46dd60e11b815260040160405180910390fd5b6000612e9d612fa0565b805490915060011901612ec357604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6000612ed3612fa0565b6001905550565b6000818310612ee95781612eeb565b825b9392505050565b612efa612fc4565b612b5957604051631afcd79f60e31b815260040160405180910390fd5b612ec9612ef2565b612f2982826122e9565b61167f57808260405163e2517d3f60e01b8152600401610a6f929190613641565b612f5382612fde565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612f9857611310828261303a565b61167f6130b0565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b6000612fce612b2d565b54600160401b900460ff16919050565b806001600160a01b03163b60000361300b5780604051634c9c8ce360e01b8152600401610a6f919061322a565b6000805160206136cd83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516130579190613670565b600060405180830381855af49150503d8060008114613092576040519150601f19603f3d011682016040523d82523d6000602084013e613097565b606091505b50915091506130a78583836130cf565b95945050505050565b3415612b595760405163b398979f60e01b815260040160405180910390fd5b6060826130e4576130df82613122565b612eeb565b81511580156130fb57506001600160a01b0384163b155b1561311b5783604051639996b31560e01b8152600401610a6f919061322a565b5092915050565b8051156131325780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60006020828403121561315d57600080fd5b81356001600160e01b031981168114612eeb57600080fd5b80356001600160a01b038116811461318c57600080fd5b919050565b600080600080600060a086880312156131a957600080fd5b6131b286613175565b94506131c060208701613175565b93506131ce60408701613175565b92506131dc60608701613175565b91506131ea60808701613175565b90509295509295909350565b60006020828403121561320857600080fd5b612eeb82613175565b60006020828403121561322357600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561325157600080fd5b61325a83613175565b946020939093013593505050565b6000806040838503121561327b57600080fd5b8235915061328b60208401613175565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156132bd57600080fd5b6132c683613175565b915060208301356001600160401b03808211156132e257600080fd5b818501915085601f8301126132f657600080fd5b81358181111561330857613308613294565b604051601f8201601f19908116603f0116810190838211818310171561333057613330613294565b8160405282815288602084870101111561334957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b8381101561338657818101518382015260200161336e565b50506000910152565b60208152600082518060208401526133ae81604085016020870161336b565b601f01601f19169190910160400192915050565b6000806000606084860312156133d757600080fd5b833592506133e760208501613175565b91506133f560408501613175565b90509250925092565b6000806040838503121561341157600080fd5b50508035926020909101359150565b6000806000806080858703121561343657600080fd5b61343f85613175565b935061344d60208601613175565b92506040850135915060608501356002811061346857600080fd5b939692955090935050565b6020808252825182820181905260009190848201906040850190845b818110156134b45783516001600160a01b03168352928401929184019160010161348f565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561095c5761095c6134d6565b634e487b7160e01b600052603160045260246000fd5b600060018201613527576135276134d6565b5060010190565b6020808252603d908201527f52656c6179657252657761726473506f6f6c3a2063616c6c6572206d7573742060408201527f686176652061646d696e206f7220706f6f6c2061646d696e20726f6c65000000606082015260800190565b918252602082015260400190565b6000602082840312156135ab57600080fd5b81518015158114612eeb57600080fd5b808202811582820484141761095c5761095c6134d6565b6000826135ef57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561360657600080fd5b5051919050565b8082018082111561095c5761095c6134d6565b6020808252600790820152663932b630bcb2b960c91b604082015260600190565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052602160045260246000fd5b6000825161368281846020870161336b565b919091019291505056fe24e583e35a20f9ecfc1572e7cb66bcc18ad3cd1650ec40dbf6ad2290e553a9fa189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc52656c6179657252657761726473506f6f6c3a2063616e6e6f7420726564756352656c6179657252657761726473506f6f6c3a206175746f2d766f74696e672052656c6179657252657761726473506f6f6c3a20466565206d7573742062652052656c6179657252657761726473506f6f6c3a2063616c6c6572206973206e6fa26469706673582212205d777ac8783bae7e3c9db9c56a9d8a107baa79a500b9167eee61bdffe71e128c64736f6c63430008140033",
  "deployedBytecode": "0x6080604052600436106102705760003560e01c806301ffc9a7146102755780631459457a146102aa57806314d92307146102cc578063189ca316146102ec5780631bc3a6731461030c578063241f9e2b1461032e578063248a9ca31461035c57806324a697a31461037c57806325d3155e1461039c5780632f2ff15d146103b1578063338111e7146103d157806336568abe146103f157806336a7c134146104115780633bb18a76146104265780633d009cee1461044657806347b0b33e1461046657806348c2bd78146104865780634f1ef286146104a65780634f6981ee146104b957806352d1902d146104d957806354fd4d50146104ee578063552164ee1461052157806356f1612f1461054157806357181609146105615780635ae1cd14146105815780635f72790a146105a157806362f29478146105c1578063675d0f8d146105d65780636bb07c73146105f65780636c7b69cb146106165780636cf88e73146106365780637f5e98bd14610656578063855302011461066b57806389a96d351461068b5780638d2340a0146106ab57806391d14854146106c05780639858b78a146106e0578063a217fddf14610700578063ac4aa16b14610715578063ad3cb1cc14610737578063b7fe075a14610768578063b8f6dba71461077d578063be9412df1461079f578063d428cffc146107b4578063d547741f146107c9578063d5684392146107e9578063d94290e514610809578063dc404a0e14610829578063df171b0c14610849578063e2bbb15814610869578063e5ed920b14610889578063e78168b5146108a9578063e7dfe672146108c9578063f5e57b39146108e9578063f72c0d8b14610909575b600080fd5b34801561028157600080fd5b5061029561029036600461314b565b61092b565b60405190151581526020015b60405180910390f35b3480156102b657600080fd5b506102ca6102c5366004613191565b610962565b005b3480156102d857600080fd5b506102ca6102e73660046131f6565b610d6c565b3480156102f857600080fd5b506102ca610307366004613211565b610f92565b34801561031857600080fd5b5061032161106e565b6040516102a1919061322a565b34801561033a57600080fd5b5061034e61034936600461323e565b61108c565b6040519081526020016102a1565b34801561036857600080fd5b5061034e610377366004613211565b6110c1565b34801561038857600080fd5b506102ca610397366004613211565b6110e1565b3480156103a857600080fd5b50610321611171565b3480156103bd57600080fd5b506102ca6103cc366004613268565b61118f565b3480156103dd57600080fd5b5061034e6103ec36600461323e565b6111b1565b3480156103fd57600080fd5b506102ca61040c366004613268565b6112dd565b34801561041d57600080fd5b5061034e611315565b34801561043257600080fd5b506102ca6104413660046131f6565b61132a565b34801561045257600080fd5b50610295610461366004613211565b611424565b34801561047257600080fd5b506102ca6104813660046131f6565b6114de565b34801561049257600080fd5b506102956104a1366004613211565b6115c7565b6102ca6104b43660046132aa565b611664565b3480156104c557600080fd5b5061034e6104d4366004613211565b611683565b3480156104e557600080fd5b5061034e611701565b3480156104fa57600080fd5b506040805180820190915260018152603160f81b60208201525b6040516102a1919061338f565b34801561052d57600080fd5b5061034e61053c366004613211565b61171e565b34801561054d57600080fd5b506102ca61055c3660046131f6565b61173e565b34801561056d57600080fd5b506102ca61057c3660046131f6565b611827565b34801561058d57600080fd5b506102ca61059c3660046133c2565b611919565b3480156105ad57600080fd5b506102ca6105bc3660046133fe565b611a70565b3480156105cd57600080fd5b5061034e611b76565b3480156105e257600080fd5b506102ca6105f1366004613211565b611b8b565b34801561060257600080fd5b506102ca610611366004613211565b611c7d565b34801561062257600080fd5b506102ca610631366004613268565b611d57565b34801561064257600080fd5b506102ca610651366004613420565b611fd9565b34801561066257600080fd5b5061034e6121a5565b34801561067757600080fd5b5061034e610686366004613211565b6121ba565b34801561069757600080fd5b506102ca6106a6366004613211565b6121da565b3480156106b757600080fd5b506103216122ce565b3480156106cc57600080fd5b506102956106db366004613268565b6122e9565b3480156106ec57600080fd5b5061034e6106fb36600461323e565b61231f565b34801561070c57600080fd5b5061034e600081565b34801561072157600080fd5b5061072a612354565b6040516102a19190613473565b34801561074357600080fd5b50610514604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561077457600080fd5b5061034e6123c0565b34801561078957600080fd5b5061034e60008051602061368d83398151915281565b3480156107ab57600080fd5b5061034e6123d5565b3480156107c057600080fd5b5061034e6123ea565b3480156107d557600080fd5b506102ca6107e4366004613268565b6123ff565b3480156107f557600080fd5b506102956108043660046131f6565b61241b565b34801561081557600080fd5b506102ca610824366004613211565b61244b565b34801561083557600080fd5b5061034e610844366004613211565b61251a565b34801561085557600080fd5b5061034e610864366004613211565b612564565b34801561087557600080fd5b506102ca6108843660046133fe565b612584565b34801561089557600080fd5b506102ca6108a43660046133c2565b61270f565b3480156108b557600080fd5b5061034e6108c4366004613211565b61285f565b3480156108d557600080fd5b506102ca6108e43660046133fe565b61287f565b3480156108f557600080fd5b50610295610904366004613211565b612ae9565b34801561091557600080fd5b5061034e6000805160206136ad83398151915281565b60006001600160e01b03198216637965db0b60e01b148061095c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600061096c612b2d565b805490915060ff600160401b82041615906001600160401b03166000811580156109935750825b90506000826001600160401b031660011480156109af5750303b155b9050811580156109bd575080155b156109db5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610a0457845460ff60401b1916600160401b1785555b6001600160a01b038a16610a785760405162461bcd60e51b815260206004820152603060248201527f52656c6179657252657761726473506f6f6c3a2061646d696e2063616e6e6f7460448201526f206265207a65726f206164647265737360801b60648201526084015b60405180910390fd5b6001600160a01b038916610aea5760405162461bcd60e51b815260206004820152603360248201527f52656c6179657252657761726473506f6f6c3a2075706772616465722063616e6044820152726e6f74206265207a65726f206164647265737360681b6064820152608401610a6f565b6001600160a01b038816610b585760405162461bcd60e51b815260206004820152602f60248201527f52656c6179657252657761726473506f6f6c3a20623374722063616e6e6f742060448201526e6265207a65726f206164647265737360881b6064820152608401610a6f565b6001600160a01b038716610bcb5760405162461bcd60e51b815260206004820152603460248201527f52656c6179657252657761726473506f6f6c3a20656d697373696f6e732063616044820152736e6e6f74206265207a65726f206164647265737360601b6064820152608401610a6f565b6001600160a01b038616610c465760405162461bcd60e51b815260206004820152603c60248201527f52656c6179657252657761726473506f6f6c3a2078416c6c6f636174696f6e5660448201527b6f74696e672063616e6e6f74206265207a65726f206164647265737360201b6064820152608401610a6f565b610c4e612b51565b610c56612b5b565b610c5e612b51565b610c6960008b612b6b565b50610c826000805160206136ad8339815191528a612b6b565b50610c9b60008051602061368d8339815191528b612b6b565b506000610ca6612c0c565b80546001600160a01b03808c166001600160a01b0319928316178355600180840180548d8416908516179055600284018054928c1692909316919091179091556003600b830155600c820155600a60108201556064601182015568056bc75e2d63100000601282015562069780600f90910155508315610d6057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6001600160a01b0381163314801590610d9a5750610d9860008051602061368d833981519152336122e9565b155b8015610dae5750610dac6000336122e9565b155b15610ddd57604051630147b5b160e31b81523360048201526001600160a01b0382166024820152604401610a6f565b6000610de7612c0c565b6001600160a01b0383166000908152600d8201602052604090205490915060ff16610e27578160405163138cb58960e31b8152600401610a6f919061322a565b6001600160a01b0382166000908152600d820160205260408120805460ff191690555b600e820154811015610f5957826001600160a01b031682600e018281548110610e7557610e756134c0565b6000918252602090912001546001600160a01b031603610f4757600e82018054610ea1906001906134ec565b81548110610eb157610eb16134c0565b600091825260209091200154600e830180546001600160a01b039092169183908110610edf57610edf6134c0565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600e01805480610f2057610f206134ff565b600082815260209020810160001990810180546001600160a01b0319169055019055610f59565b80610f5181613515565b915050610e4a565b506040516001600160a01b038316907f490a66cc56c789979052c7052fc0c10a6c4627d8e6165caec80db97a4c38352190600090a25050565b60008051602061368d833981519152610fab81336122e9565b80610fbc5750610fbc6000336122e9565b610fd85760405162461bcd60e51b8152600401610a6f9061352e565b81600003611016576040516305519d6f60e51b815260206004820152600a6024820152691d9bdd1955d95a59da1d60b21b6044820152606401610a6f565b6000611020612c0c565b600b8101805490859055604051919250907fc6d810f6c3aa465110416db0d540c72fcfe818503d1580fd90df38a482f81af890611060908690849061358b565b60405180910390a150505050565b600080611079612c0c565b600201546001600160a01b031692915050565b600080611097612c0c565b6000938452600401602090815260408085206001600160a01b039690961685529490525050205490565b6000806110cc612c30565b60009384526020525050604090206001015490565b60008051602061368d8339815191526110fa81336122e9565b8061110b575061110b6000336122e9565b6111275760405162461bcd60e51b8152600401610a6f9061352e565b6000611131612c0c565b600f8101805490859055604051919250907f9f49ab705704ba5579e12282116057bb42856ad21fc913b1786bf1effc722b8d90611060908690849061358b565b60008061117c612c0c565b600101546001600160a01b031692915050565b611198826110c1565b6111a181612c54565b6111ab8383612b6b565b50505050565b6000806111bc612c0c565b604051631e804e7760e11b8152600481018590529091503090633d009cee90602401602060405180830381865afa1580156111fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121f9190613599565b61122d57600091505061095c565b600083815260088201602090815260408083206001600160a01b038816845290915290205460ff161561126457600091505061095c565b600083815260058201602090815260408083206001600160a01b038816845282528083205486845260078501835281842054600386019093529220548215806112ab575081155b156112bd57600094505050505061095c565b816112c884836135bb565b6112d291906135d2565b979650505050505050565b6001600160a01b03811633146113065760405163334bd91960e11b815260040160405180910390fd5b6113108282612c61565b505050565b600080611320612c0c565b6012015492915050565b60008051602061368d83398151915261134381336122e9565b8061135457506113546000336122e9565b6113705760405162461bcd60e51b8152600401610a6f9061352e565b6001600160a01b0382166113c2576040516305519d6f60e51b815260206004820152601860248201527778416c6c6f636174696f6e566f74696e674164647265737360401b6044820152606401610a6f565b60006113cc612c0c565b6002810180546001600160a01b038681166001600160a01b03198316811790935560405193945016918291907f897acaec25783ce4cf8ff29c16715e089a40d285e2e5d6fcf567af00f471425990600090a350505050565b60008061142f612c0c565b600181015460405163e52ef17f60e01b8152600481018690529192506001600160a01b03169063e52ef17f90602401602060405180830381865afa925050508015611497575060408051601f3d908101601f1916820190925261149491810190613599565b60015b6114a45750600092915050565b806114b3575060009392505050565b506000928352600781016020908152604080852054600a909301909152909220549190911015919050565b60008051602061368d8339815191526114f781336122e9565b8061150857506115086000336122e9565b6115245760405162461bcd60e51b8152600401610a6f9061352e565b6001600160a01b038216611569576040516305519d6f60e51b815260206004820152600b60248201526a623374724164647265737360a81b6044820152606401610a6f565b6000611573612c0c565b80546001600160a01b038581166001600160a01b03198316811784556040519394509116918291907fb3061a8192d243178b0fd92d1809bc86c3fa3b177c046cf74974c45c32cd25e090600090a350505050565b6000806115d2612c0c565b60028101546040516368377f6d60e11b8152600481018690529192506000916001600160a01b039091169063d06efeda906024015b602060405180830381865afa158015611624573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164891906135f4565b905081600f01548161165a919061360d565b4310949350505050565b61166c612cd9565b61167582612d7e565b61167f8282612d96565b5050565b60008061168e612c0c565b6000848152600782016020908152604080832054600a850190925290912054919250908181106116c357506000949350505050565b60006116cf82846134ec565b9050600084600c015485600b01546116e7919061360d565b905060006116f582846135d2565b98975050505050505050565b600061170b612e4a565b506000805160206136cd83398151915290565b600080611729612c0c565b60009384526003016020525050604090205490565b6001600160a01b038116611765576040516305519d6f60e51b8152600401610a6f90613620565b600061176f612c0c565b6001600160a01b0383166000908152600d8201602052604090205490915060ff16156117b05781604051634df9fbcf60e01b8152600401610a6f919061322a565b6001600160a01b0382166000818152600d830160209081526040808320805460ff19166001908117909155600e860180549182018155845291832090910180546001600160a01b03191684179055517fc3b80e866c8bfbccbded69771f510856bb44660d40a0b760d9f0781728543e4e9190a25050565b60008051602061368d83398151915261184081336122e9565b8061185157506118516000336122e9565b61186d5760405162461bcd60e51b8152600401610a6f9061352e565b6001600160a01b0382166118b7576040516305519d6f60e51b815260206004820152601060248201526f656d697373696f6e734164647265737360801b6044820152606401610a6f565b60006118c1612c0c565b6001810180546001600160a01b038681166001600160a01b03198316811790935560405193945016918291907fee0bb99897b3f409686cb6e56601a38cea38e9e00d9b28752b3be7b28ea8b0ad90600090a350505050565b6000611923612c0c565b905061192e84612ae9565b6119385750505050565b826001600160a01b0316826001600160a01b0316036119d25760405162461bcd60e51b815260206004820152605c602482015260008051602061370d83398151915260448201527f75736572732063616e6e6f7420636c61696d20666f72207468656d73656c766560648201527b1cc8191d5c9a5b99c819585c9b1e481858d8d95cdcc81c195c9a5bd960221b608482015260a401610a6f565b6001600160a01b0382166000908152600d8201602052604090205460ff166111ab5760405162461bcd60e51b8152602060048201526057602482015260008051602061374d83398151915260448201527f74206120726567697374657265642072656c6179657220647572696e6720636c606482015276185a5b4819585c9b1e481858d8d95cdcc81c195c9a5bd9604a1b608482015260a401610a6f565b60008051602061368d833981519152611a8981336122e9565b80611a9a5750611a9a6000336122e9565b611ab65760405162461bcd60e51b8152600401610a6f9061352e565b6000611ac0612c0c565b9050611acd8360026135bb565b6000858152600683016020526040902055600c810154600b820154611af2919061360d565b611afc90846135bb565b600085815260078301602081815260408084208590556006860182529283902054918152600e85015483518881529182019290925291820192909252606081019190915284907f0cfbd04f27dfdd7116e3d63de583a7cc8a337032164396bb6d7cac1deffbe415906080015b60405180910390a250505050565b600080611b81612c0c565b600f015492915050565b60008051602061368d833981519152611ba481336122e9565b80611bb55750611bb56000336122e9565b611bd15760405162461bcd60e51b8152600401610a6f9061352e565b600082118015611be2575060328211155b611c335760405162461bcd60e51b815260206004820152602e602482015260008051602061372d83398151915260448201526d3e203020616e64203c3d2035302560901b6064820152608401610a6f565b6000611c3d612c0c565b60108101805490859055604051919250907f27af4d4dc613005fec6b04e77e25da6e4959b86d30ed1919104596e9211198ee90611060908690849061358b565b60008051602061368d833981519152611c9681336122e9565b80611ca75750611ca76000336122e9565b611cc35760405162461bcd60e51b8152600401610a6f9061352e565b60008211611d0d5760405162461bcd60e51b8152602060048201526023602482015260008051602061372d83398151915260448201526203e20360ec1b6064820152608401610a6f565b6000611d17612c0c565b60128101805490859055604051919250907f3fbd83025056799b6fe5bc1a011ec202bfc22364cb9adb116bb3c71cf47990a690611060908690849061358b565b611d5f612e93565b6000611d69612c0c565b600181015460405163e52ef17f60e01b8152600481018690529192506001600160a01b03169063e52ef17f90602401602060405180830381865afa158015611db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd99190613599565b611df95760405163652d87c560e01b815260048101849052602401610a6f565b600083815260088201602090815260408083206001600160a01b038616845290915290205460ff1615611e4357818360405163ae19b57760e01b8152600401610a6f929190613641565b60405163338111e760e01b8152600090309063338111e790611e6b9086908890600401613641565b602060405180830381865afa158015611e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eac91906135f4565b905080600003611ed3578284604051634c8463db60e01b8152600401610a6f929190613641565b600084815260088301602090815260408083206001600160a01b038088168552925291829020805460ff191660011790558354915163a9059cbb60e01b815291169063a9059cbb90611f2b9086908590600401613641565b6020604051808303816000875af1158015611f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6e9190613599565b611f8b576040516312171d8360e31b815260040160405180910390fd5b83836001600160a01b03167f930b7d519086654efd667eab36b878a04585f80f21637ea555a4317bdc53197383604051611fc791815260200190565b60405180910390a3505061167f612ec9565b60008051602061368d833981519152611ff281336122e9565b8061200357506120036000336122e9565b61201f5760405162461bcd60e51b8152600401610a6f9061352e565b6001600160a01b038516612046576040516305519d6f60e51b8152600401610a6f90613620565b6000612050612c0c565b90506000808460018111156120675761206761365a565b146120765781600c015461207c565b81600b01545b600086815260048401602090815260408083206001600160a01b038c16845290915281208054929350906120af83613515565b9091555050600085815260098301602052604081208054916120d083613515565b9091555050600085815260058301602090815260408083206001600160a01b038b1684529091528120805483929061210990849061360d565b90915550506000858152600a830160205260408120805483929061212e90849061360d565b9091555050600085815260048301602090815260408083206001600160a01b038b811680865291909352928190205490518893928a1692917f8ba2985939970b62349519dc163ea364f1724ad045a94aa004922836e951700d916121949190879061358b565b60405180910390a450505050505050565b6000806121b0612c0c565b6011015492915050565b6000806121c5612c0c565b60009384526006016020525050604090205490565b60008051602061368d8339815191526121f381336122e9565b8061220457506122046000336122e9565b6122205760405162461bcd60e51b8152600401610a6f9061352e565b600082116122845760405162461bcd60e51b815260206004820152602b60248201527f52656c6179657252657761726473506f6f6c3a2044656e6f6d696e61746f722060448201526a06d757374206265203e20360ac1b6064820152608401610a6f565b600061228e612c0c565b60118101805490859055604051919250907f9e1a0a1bebf6adfae16d1d3786df0b65ff4af6055dbefbc87da9529a239b9bf790611060908690849061358b565b6000806122d9612c0c565b546001600160a01b031692915050565b6000806122f4612c30565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b60008061232a612c0c565b6000938452600501602090815260408085206001600160a01b039690961685529490525050205490565b60606000612360612c0c565b600e81018054604080516020808402820181019092528281529394508301828280156123b557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612397575b505050505091505090565b6000806123cb612c0c565b6010015492915050565b6000806123e0612c0c565b600c015492915050565b6000806123f5612c0c565b600b015492915050565b612408826110c1565b61241181612c54565b6111ab8383612c61565b600080612426612c0c565b6001600160a01b039093166000908152600d9093016020525050604090205460ff1690565b60008051602061368d83398151915261246481336122e9565b8061247557506124756000336122e9565b6124915760405162461bcd60e51b8152600401610a6f9061352e565b816000036124d0576040516305519d6f60e51b815260206004820152600b60248201526a18db185a5b55d95a59da1d60aa1b6044820152606401610a6f565b60006124da612c0c565b600c8101805490859055604051919250907fac463d979acc1ce3fe80c999b5375a1630b37589687e2a327a1d659787696c6e90611060908690849061358b565b600080612525612c0c565b601081015460118201549192509060008161254084886135bb565b61254a91906135d2565b905061255a818560120154612eda565b9695505050505050565b60008061256f612c0c565b6000938452600a016020525050604090205490565b60008051602061368d83398151915261259d81336122e9565b806125ae57506125ae6000336122e9565b6125ca5760405162461bcd60e51b8152600401610a6f9061352e565b82600003612604576040516305519d6f60e51b8152602060048201526006602482015265185b5bdd5b9d60d21b6044820152606401610a6f565b600061260e612c0c565b80546040516323b872dd60e01b8152336004820152306024820152604481018790529192506001600160a01b0316906323b872dd906064016020604051808303816000875af1158015612665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126899190613599565b6126a6576040516312171d8360e31b815260040160405180910390fd5b6000838152600382016020526040812080548692906126c690849061360d565b909155505060008381526003820160205260409081902054905184917fc47834cdb0191cfa2b90f6ae336198ff404f06226170200c57ab15ade0510ae691611b6891889161358b565b6000612719612c0c565b9050612724846115c7565b61272e5750505050565b826001600160a01b0316826001600160a01b0316036127c75760405162461bcd60e51b815260206004820152605b602482015260008051602061370d83398151915260448201527f75736572732063616e6e6f7420766f746520666f72207468656d73656c76657360648201527a08191d5c9a5b99c819585c9b1e481858d8d95cdcc81c195c9a5bd9602a1b608482015260a401610a6f565b6001600160a01b0382166000908152600d8201602052604090205460ff166111ab5760405162461bcd60e51b8152602060048201526051602482015260008051602061374d83398151915260448201527f74206120726567697374657265642072656c6179657220647572696e672065616064820152701c9b1e481858d8d95cdcc81c195c9a5bd9607a1b608482015260a401610a6f565b60008061286a612c0c565b60009384526007016020525050604090205490565b60008051602061368d83398151915261289881336122e9565b806128a957506128a96000336122e9565b6128c55760405162461bcd60e51b8152600401610a6f9061352e565b81600003612902576040516305519d6f60e51b81526020600482015260096024820152681d5cd95c90dbdd5b9d60ba1b6044820152606401610a6f565b600061290c612c0c565b9050600061291b8460026135bb565b9050600082600c015483600b0154612933919061360d565b61293d90866135bb565b60008781526006850160205260409020549091508211156129b45760405162461bcd60e51b815260206004820152603d60248201526000805160206136ed83398151915260448201527f65206d6f726520616374696f6e73207468616e20617661696c61626c650000006064820152608401610a6f565b6000868152600784016020526040902054811115612a375760405162461bcd60e51b815260206004820152604660248201526000805160206136ed83398151915260448201527f65206d6f726520776569676874656420616374696f6e73207468616e20617661606482015265696c61626c6560d01b608482015260a401610a6f565b600086815260068401602052604081208054849290612a579084906134ec565b9091555050600086815260078401602052604081208054839290612a7c9084906134ec565b90915550506000868152600684016020908152604080832054600787018352928190205481518981529283019390935281019190915286907fdc97cd873d9883808c7cbb3b9fdd91ec6437deb4377e651606aff5aaa7be08379060600160405180910390a2505050505050565b600080612af4612c0c565b600281015460405163d3a368bd60e01b8152600481018690529192506000916001600160a01b039091169063d3a368bd90602401611607565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b612b59612ef2565b565b612b63612ef2565b612b59612f17565b600080612b76612c30565b9050612b8284846122e9565b612c02576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055612bb83390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061095c565b600091505061095c565b7f33676f94b2c7694b38dc9f1f29c59bfbb522294615c1bff34717ad1fa892600090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b612c5e8133612f1f565b50565b600080612c6c612c30565b9050612c7884846122e9565b15612c02576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061095c565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612d6057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612d546000805160206136cd833981519152546001600160a01b031690565b6001600160a01b031614155b15612b595760405163703e46dd60e11b815260040160405180910390fd5b6000805160206136ad83398151915261167f81612c54565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612df0575060408051601f3d908101601f19168201909252612ded918101906135f4565b60015b612e0f5781604051634c9c8ce360e01b8152600401610a6f919061322a565b6000805160206136cd8339815191528114612e4057604051632a87526960e21b815260048101829052602401610a6f565b6113108383612f4a565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b595760405163703e46dd60e11b815260040160405180910390fd5b6000612e9d612fa0565b805490915060011901612ec357604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6000612ed3612fa0565b6001905550565b6000818310612ee95781612eeb565b825b9392505050565b612efa612fc4565b612b5957604051631afcd79f60e31b815260040160405180910390fd5b612ec9612ef2565b612f2982826122e9565b61167f57808260405163e2517d3f60e01b8152600401610a6f929190613641565b612f5382612fde565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612f9857611310828261303a565b61167f6130b0565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b6000612fce612b2d565b54600160401b900460ff16919050565b806001600160a01b03163b60000361300b5780604051634c9c8ce360e01b8152600401610a6f919061322a565b6000805160206136cd83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516130579190613670565b600060405180830381855af49150503d8060008114613092576040519150601f19603f3d011682016040523d82523d6000602084013e613097565b606091505b50915091506130a78583836130cf565b95945050505050565b3415612b595760405163b398979f60e01b815260040160405180910390fd5b6060826130e4576130df82613122565b612eeb565b81511580156130fb57506001600160a01b0384163b155b1561311b5783604051639996b31560e01b8152600401610a6f919061322a565b5092915050565b8051156131325780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60006020828403121561315d57600080fd5b81356001600160e01b031981168114612eeb57600080fd5b80356001600160a01b038116811461318c57600080fd5b919050565b600080600080600060a086880312156131a957600080fd5b6131b286613175565b94506131c060208701613175565b93506131ce60408701613175565b92506131dc60608701613175565b91506131ea60808701613175565b90509295509295909350565b60006020828403121561320857600080fd5b612eeb82613175565b60006020828403121561322357600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561325157600080fd5b61325a83613175565b946020939093013593505050565b6000806040838503121561327b57600080fd5b8235915061328b60208401613175565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156132bd57600080fd5b6132c683613175565b915060208301356001600160401b03808211156132e257600080fd5b818501915085601f8301126132f657600080fd5b81358181111561330857613308613294565b604051601f8201601f19908116603f0116810190838211818310171561333057613330613294565b8160405282815288602084870101111561334957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b8381101561338657818101518382015260200161336e565b50506000910152565b60208152600082518060208401526133ae81604085016020870161336b565b601f01601f19169190910160400192915050565b6000806000606084860312156133d757600080fd5b833592506133e760208501613175565b91506133f560408501613175565b90509250925092565b6000806040838503121561341157600080fd5b50508035926020909101359150565b6000806000806080858703121561343657600080fd5b61343f85613175565b935061344d60208601613175565b92506040850135915060608501356002811061346857600080fd5b939692955090935050565b6020808252825182820181905260009190848201906040850190845b818110156134b45783516001600160a01b03168352928401929184019160010161348f565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561095c5761095c6134d6565b634e487b7160e01b600052603160045260246000fd5b600060018201613527576135276134d6565b5060010190565b6020808252603d908201527f52656c6179657252657761726473506f6f6c3a2063616c6c6572206d7573742060408201527f686176652061646d696e206f7220706f6f6c2061646d696e20726f6c65000000606082015260800190565b918252602082015260400190565b6000602082840312156135ab57600080fd5b81518015158114612eeb57600080fd5b808202811582820484141761095c5761095c6134d6565b6000826135ef57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561360657600080fd5b5051919050565b8082018082111561095c5761095c6134d6565b6020808252600790820152663932b630bcb2b960c91b604082015260600190565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052602160045260246000fd5b6000825161368281846020870161336b565b919091019291505056fe24e583e35a20f9ecfc1572e7cb66bcc18ad3cd1650ec40dbf6ad2290e553a9fa189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc52656c6179657252657761726473506f6f6c3a2063616e6e6f7420726564756352656c6179657252657761726473506f6f6c3a206175746f2d766f74696e672052656c6179657252657761726473506f6f6c3a20466565206d7573742062652052656c6179657252657761726473506f6f6c3a2063616c6c6572206973206e6fa26469706673582212205d777ac8783bae7e3c9db9c56a9d8a107baa79a500b9167eee61bdffe71e128c64736f6c63430008140033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
