{
  "_format": "hh-sol-artifact-1",
  "contractName": "GoodDollar",
  "sourceName": "contracts/token/GoodDollar.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "previousAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "beacon",
          "type": "address"
        }
      ],
      "name": "BeaconUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "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": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "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": "_minter",
          "type": "address"
        }
      ],
      "name": "addMinter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_pauser",
          "type": "address"
        }
      ],
      "name": "addPauser",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "burnFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feeRecipient",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "formula",
      "outputs": [
        {
          "internalType": "contract IFeesFormula",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "getFees",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "fee",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "senderPays",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "getFees",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "fee",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "senderPays",
          "type": "bool"
        }
      ],
      "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": "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": [],
      "name": "identity",
      "outputs": [
        {
          "internalType": "contract IIdentity",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_cap",
          "type": "uint256"
        },
        {
          "internalType": "contract IFeesFormula",
          "name": "_formula",
          "type": "address"
        },
        {
          "internalType": "contract IIdentity",
          "name": "_identity",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_feeRecipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_minter",
          "type": "address"
        }
      ],
      "name": "isMinter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_pauser",
          "type": "address"
        }
      ],
      "name": "isPauser",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "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": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceMinter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "_feeRecipient",
          "type": "address"
        }
      ],
      "name": "setFeeRecipient",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IFeesFormula",
          "name": "_formula",
          "type": "address"
        }
      ],
      "name": "setFormula",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IIdentityV2",
          "name": "_identity",
          "type": "address"
        }
      ],
      "name": "setIdentity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "transferAndCall",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "upgradeTo",
      "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"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b506080516139cb61004c60003960008181610a9601528181610ad601528181610ef701528181610f370152610faf01526139cb6000f3fe60806040526004361061025a5760003560e01c806301ffc9a71461025f57806306fdde0314610294578063095ea7b3146102b657806318160ddd146102d657806323b872dd146102f6578063248a9ca3146103165780632c159a1a146103365780632f2ff15d14610364578063313ce56714610386578063355274ea146103a25780633644e515146103b957806336568abe146103ce5780633659cfe6146103ee57806339364fd71461040e57806339509351146104435780633f4ba83a146104635780634000aea01461047857806340c10f191461049857806342966c68146104b857806346904840146104d857806346fbf68e146104f95780634b75f54f146105195780634cd88b761461053a5780634f1ef2861461055a57806352d1902d1461056d5780635c975abb146105825780635d5bf1781461059b57806370a08231146105bb57806379cc6790146105db5780637ecebe00146105fb57806382dc1ec41461061b5780638456cb591461063b5780638da5cb5b146106505780639010d07c1461066557806391d148541461068557806395d89b41146106a5578063983b2d56146106ba57806398650275146106da578063a217fddf146106ef578063a457c2d714610704578063a9059cbb14610724578063aa271e1a14610744578063ca15c87314610764578063d505accf14610784578063d5391393146107a4578063d547741f146107c6578063d5a06d4c146107e6578063dd62ed3e14610806578063dea7f11214610826578063e63ab1e914610846578063e74b981b14610868578063ecc06c7614610888578063f2fde38b146108a8575b600080fd5b34801561026b57600080fd5b5061027f61027a366004612ebb565b6108c8565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102a96108f3565b60405161028b9190612f35565b3480156102c257600080fd5b5061027f6102d1366004612f5d565b610986565b3480156102e257600080fd5b5061012f545b60405190815260200161028b565b34801561030257600080fd5b5061027f610311366004612f89565b61099e565b34801561032257600080fd5b506102e8610331366004612fca565b6109c4565b34801561034257600080fd5b5061029054610357906001600160a01b031681565b60405161028b9190612fe3565b34801561037057600080fd5b5061038461037f366004612ff7565b6109d9565b005b34801561039257600080fd5b506040516012815260200161028b565b3480156103ae57600080fd5b506102e86102915481565b3480156103c557600080fd5b506102e86109fa565b3480156103da57600080fd5b506103846103e9366004612ff7565b610a09565b3480156103fa57600080fd5b50610384610409366004613027565b610a8c565b34801561041a57600080fd5b5061042e610429366004613044565b610b54565b6040805192835290151560208301520161028b565b34801561044f57600080fd5b5061027f61045e366004612f5d565b610bda565b34801561046f57600080fd5b50610384610bfc565b34801561048457600080fd5b5061027f610493366004613086565b610c7a565b3480156104a457600080fd5b5061027f6104b3366004612f5d565b610d80565b3480156104c457600080fd5b506103846104d3366004612fca565b610e07565b3480156104e457600080fd5b5061028e54610357906001600160a01b031681565b34801561050557600080fd5b5061027f610514366004613027565b610e11565b34801561052557600080fd5b5061028f54610357906001600160a01b031681565b34801561054657600080fd5b506103846105553660046131b9565b610e2b565b61038461056836600461321c565b610eed565b34801561057957600080fd5b506102e8610fa2565b34801561058e57600080fd5b506101f85460ff1661027f565b3480156105a757600080fd5b506103846105b6366004613027565b611050565b3480156105c757600080fd5b506102e86105d6366004613027565b61109a565b3480156105e757600080fd5b506103846105f6366004612f5d565b6110b6565b34801561060757600080fd5b506102e8610616366004613027565b6110cb565b34801561062757600080fd5b50610384610636366004613027565b6110ea565b34801561064757600080fd5b50610384611102565b34801561065c57600080fd5b5061035761117c565b34801561067157600080fd5b50610357610680366004613275565b611184565b34801561069157600080fd5b5061027f6106a0366004612ff7565b61119c565b3480156106b157600080fd5b506102a96111c7565b3480156106c657600080fd5b506103846106d5366004613027565b6111d7565b3480156106e657600080fd5b506103846111ef565b3480156106fb57600080fd5b506102e8600081565b34801561071057600080fd5b5061027f61071f366004612f5d565b611207565b34801561073057600080fd5b5061027f61073f366004612f5d565b61128d565b34801561075057600080fd5b5061027f61075f366004613027565b6112af565b34801561077057600080fd5b506102e861077f366004612fca565b6112c9565b34801561079057600080fd5b5061038461079f366004613297565b6112e0565b3480156107b057600080fd5b506102e860008051602061395683398151915281565b3480156107d257600080fd5b506103846107e1366004612ff7565b611444565b3480156107f257600080fd5b5061042e610801366004612fca565b611460565b34801561081257600080fd5b506102e861082136600461330e565b6114e3565b34801561083257600080fd5b5061038461084136600461333c565b61150f565b34801561085257600080fd5b506102e860008051602061390f83398151915281565b34801561087457600080fd5b50610384610883366004613027565b611675565b34801561089457600080fd5b506103846108a3366004613027565b6116bf565b3480156108b457600080fd5b506103846108c3366004613027565b611709565b60006001600160e01b03198216635a05180f60e01b14806108ed57506108ed82611746565b92915050565b60606101308054610903906133f5565b80601f016020809104026020016040519081016040528092919081815260200182805461092f906133f5565b801561097c5780601f106109515761010080835404028352916020019161097c565b820191906000526020600020905b81548152906001019060200180831161095f57829003601f168201915b5050505050905090565b60003361099481858561177b565b5060019392505050565b6000806109ac8585856118a0565b90506109b9858583611a13565b9150505b9392505050565b600090815260c9602052604090206001015490565b6109e2826109c4565b6109eb81611a2c565b6109f58383611a36565b505050565b6000610a04611a58565b905090565b6001600160a01b0381163314610a7e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610a888282611ad5565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ad45760405162461bcd60e51b8152600401610a7590613429565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b06611af7565b6001600160a01b031614610b2c5760405162461bcd60e51b8152600401610a7590613463565b610b3581611b13565b60408051600080825260208201909252610b5191839190611b3a565b50565b61028f54604051631eed540360e11b815260009182916001600160a01b0390911690633ddaa80690610b8e9088908890889060040161349d565b6040805180830381865afa158015610baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bce91906134d1565b91509150935093915050565b600033610994818585610bed83836114e3565b610bf79190613513565b61177b565b610c1460008051602061390f8339815191523361119c565b610c705760405162461bcd60e51b8152602060048201526039602482015260008051602061388f83398151915260448201527876652070617573657220726f6c6520746f20756e706175736560381b6064820152608401610a75565b610c78611ca5565b565b600080610c883387876118a0565b90506000610c968783611cf2565b9050866001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16848888604051610cdf93929190613526565b60405180910390a3863b15610d7657610d2f878387878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d0092505050565b610d765760405162461bcd60e51b815260206004820152601860248201527710dbdb9d1c9858dd0819985b1b189858dac819985a5b195960421b6044820152606401610a75565b9695505050505050565b6102915460009015610dfd576102915482610d9b61012f5490565b610da59190613513565b1115610dfd5760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420696e63726561736520737570706c79206265796f6e642063616044820152600760fc1b6064820152608401610a75565b6109bd8383611dbf565b610b513382611e45565b60006108ed60008051602061390f8339815191528361119c565b600054610100900460ff1615808015610e4b5750600054600160ff909116105b80610e6c5750610e5a30611f76565b158015610e6c575060005460ff166001145b610e885760405162461bcd60e51b8152600401610a759061355c565b6000805460ff191660011790558015610eab576000805461ff0019166101001790555b610eb58383611f85565b80156109f5576000805461ff0019169055604051600181526000805160206138ef8339815191529060200160405180910390a1505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f355760405162461bcd60e51b8152600401610a7590613429565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f67611af7565b6001600160a01b031614610f8d5760405162461bcd60e51b8152600401610a7590613463565b610f9682611b13565b610a8882826001611b3a565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461103d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610a75565b506000805160206138cf83398151915290565b61105b60003361119c565b6110775760405162461bcd60e51b8152600401610a75906135aa565b61029080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0316600090815261012d602052604090205490565b6110c1823383612001565b610a888282611e45565b6001600160a01b038116600090815261019360205260408120546108ed565b610b5160008051602061390f833981519152826109d9565b61111a60008051602061390f8339815191523361119c565b6111745760405162461bcd60e51b8152602060048201526037602482015260008051602061388f83398151915260448201527676652070617573657220726f6c6520746f20706175736560481b6064820152608401610a75565b610c7861207b565b6000610a0481805b600082815260fb602052604081206109bd90836120b9565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606101318054610903906133f5565b610b51600080516020613956833981519152826109d9565b610c7860008051602061395683398151915233610a09565b6000338161121582866114e3565b9050838110156112755760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a75565b611282828686840361177b565b506001949350505050565b60008061129b3385856118a0565b90506112a78482611cf2565b949350505050565b60006108ed6000805160206139568339815191528361119c565b600081815260fb602052604081206108ed906120c5565b834211156113305760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610a75565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861135f8c6120cf565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006113ba826120f8565b905060006113ca82878787612146565b9050896001600160a01b0316816001600160a01b03161461142d5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610a75565b6114388a8a8a61177b565b50505050505050505050565b61144d826109c4565b61145681611a2c565b6109f58383611ad5565b61028f54604051631eed540360e11b815260009182916001600160a01b0390911690633ddaa8069061149a9086908590819060040161349d565b6040805180830381865afa1580156114b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114da91906134d1565b91509150915091565b6001600160a01b03918216600090815261012e6020908152604080832093909416825291909152205490565b600054610100900460ff161580801561152f5750600054600160ff909116105b80611550575061153e30611f76565b158015611550575060005460ff166001145b61156c5760405162461bcd60e51b8152600401610a759061355c565b6000805460ff19166001179055801561158f576000805461ff0019166101001790555b6115998888611f85565b61028e80546001600160a01b038086166001600160a01b031992831617909255610290805487841690831617905561028f8054928816929091169190911790556102918690556115e63390565b6001600160a01b0316826001600160a01b0316146116375761160782611709565b61161f60008051602061395683398151915233610a09565b61163760008051602061390f83398151915233610a09565b801561166b576000805461ff0019169055604051600181526000805160206138ef8339815191529060200160405180910390a15b5050505050505050565b61168060003361119c565b61169c5760405162461bcd60e51b8152600401610a75906135aa565b61028e80546001600160a01b0319166001600160a01b0392909216919091179055565b6116ca60003361119c565b6116e65760405162461bcd60e51b8152600401610a75906135aa565b61028f80546001600160a01b0319166001600160a01b0392909216919091179055565b61171460003361119c565b6117305760405162461bcd60e51b8152600401610a75906135aa565b61173b6000826109d9565b610b51600033610a09565b60006001600160e01b03198216637965db0b60e01b14806108ed57506301ffc9a760e01b6001600160e01b03198316146108ed565b6001600160a01b0383166117dd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a75565b6001600160a01b03821661183e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a75565b6001600160a01b03838116600081815261012e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008060006118b0848787610b54565b9150915060008211801561193357506102905460405163639e625760e11b81526001600160a01b039091169063c73cc4ae906118f0903390600401612fe3565b602060405180830381865afa15801561190d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193191906135cd565b155b15611a095780158061195657506119498661109a565b6119538386613513565b11155b6119a25760405162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f7567682062616c616e636520746f20706179205458206665656044820152606401610a75565b336001600160a01b038716036119cf5761028e546119c9906001600160a01b031683611cf2565b506119ea565b61028e546119e89087906001600160a01b031684611a13565b505b806119fe576119f982856135e8565b611a00565b835b925050506109bd565b5091949350505050565b600033611a21858285612001565b61128285858561216e565b610b518133612314565b611a40828261236d565b600082815260fb602052604090206109f590826123f3565b6000610a047f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611a8861015f5490565b610160546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b611adf8282612408565b600082815260fb602052604090206109f5908261246f565b6000805160206138cf833981519152546001600160a01b031690565b611b1e60003361119c565b610b515760405162461bcd60e51b8152600401610a75906135aa565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611b6d576109f583612484565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bc7575060408051601f3d908101601f19168201909252611bc4918101906135fb565b60015b611c2a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a75565b6000805160206138cf8339815191528114611c995760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a75565b506109f583838361251e565b611cad612543565b6101f8805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051611ce89190612fe3565b60405180910390a1565b60003361099481858561216e565b604051635260769b60e11b815260009084906001600160a01b0382169063a4c0ed3690611d3590339088908890600401613614565b6020604051808303816000875af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7891906135cd565b6112825760405162461bcd60e51b815260206004820152601860248201527710dbdb9d1c9858dd0811985b1b189858dac819985a5b195960421b6044820152606401610a75565b6000611dd96000805160206139568339815191523361119c565b611e325760405162461bcd60e51b8152602060048201526036602482015260008051602061388f8339815191526044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608401610a75565b611e3c838361258d565b50600192915050565b6001600160a01b038216611ea55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a75565b611eb18260008361264a565b6001600160a01b038216600090815261012d602052604090205481811015611f265760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a75565b6001600160a01b038316600081815261012d60209081526040808320868603905561012f8054879003905551858152919291600080516020613976833981519152910160405180910390a3505050565b6001600160a01b03163b151590565b600054610100900460ff16611fac5760405162461bcd60e51b8152600401610a759061363b565b611fb4612655565b611fbc612655565b611fc4612655565b611fcc612655565b611fd6828261267c565b611fde612655565b611fe66126be565b611fee612655565b611ff882826126f2565b610a8882612754565b600061200d84846114e3565b9050600019811461207557818110156120685760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a75565b612075848484840361177b565b50505050565b61208361277b565b6101f8805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611cdb3390565b60006109bd83836127c2565b60006108ed825490565b6001600160a01b0381166000908152610193602052604090208054600181018255905b50919050565b60006108ed612105611a58565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000612157878787876127ec565b91509150612164816128a6565b5095945050505050565b6001600160a01b0383166121d25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a75565b6001600160a01b0382166122345760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a75565b61223f83838361264a565b6001600160a01b038316600090815261012d6020526040902054818110156122b85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a75565b6001600160a01b03808516600081815261012d60205260408082208686039055928616808252908390208054860190559151600080516020613976833981519152906123079086815260200190565b60405180910390a3612075565b61231e828261119c565b610a885761232b816129eb565b6123368360206129fd565b604051602001612347929190613686565b60408051601f198184030181529082905262461bcd60e51b8252610a7591600401612f35565b612377828261119c565b610a8857600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556123af3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006109bd836001600160a01b038416612b98565b612412828261119c565b15610a8857600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006109bd836001600160a01b038416612be7565b61248d81611f76565b6124ef5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a75565b6000805160206138cf83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61252783612cda565b6000825111806125345750805b156109f5576120758383612d1a565b6101f85460ff16610c785760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a75565b6001600160a01b0382166125e35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a75565b6125ef6000838361264a565b8061012f60008282546126029190613513565b90915550506001600160a01b038216600081815261012d6020908152604080832080548601905551848152600080516020613976833981519152910160405180910390a35050565b6109f5838383612e0c565b600054610100900460ff16610c785760405162461bcd60e51b8152600401610a759061363b565b600054610100900460ff166126a35760405162461bcd60e51b8152600401610a759061363b565b6101306126b08382613743565b506101316109f58282613743565b600054610100900460ff166126e55760405162461bcd60e51b8152600401610a759061363b565b6101f8805460ff19169055565b600054610100900460ff166127195760405162461bcd60e51b8152600401610a759061363b565b612724600033612e73565b61273c60008051602061395683398151915233612e73565b610a8860008051602061390f83398151915233612e73565b600054610100900460ff16610b515760405162461bcd60e51b8152600401610a759061363b565b6101f85460ff1615610c785760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610a75565b60008260000182815481106127d9576127d9613802565b9060005260206000200154905092915050565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115612819575060009050600361289d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561286d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128965760006001925092505061289d565b9150600090505b94509492505050565b60008160048111156128ba576128ba613818565b036128c25750565b60018160048111156128d6576128d6613818565b0361291e5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606401610a75565b600281600481111561293257612932613818565b0361297f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610a75565b600381600481111561299357612993613818565b03610b515760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610a75565b60606108ed6001600160a01b03831660145b60606000612a0c83600261382e565b612a17906002613513565b6001600160401b03811115612a2e57612a2e61310e565b6040519080825280601f01601f191660200182016040528015612a58576020820181803683370190505b509050600360fc1b81600081518110612a7357612a73613802565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612aa257612aa2613802565b60200101906001600160f81b031916908160001a9053506000612ac684600261382e565b612ad1906001613513565b90505b6001811115612b49576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612b0557612b05613802565b1a60f81b828281518110612b1b57612b1b613802565b60200101906001600160f81b031916908160001a90535060049490941c93612b4281613845565b9050612ad4565b5083156109bd5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a75565b6000818152600183016020526040812054612bdf575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108ed565b5060006108ed565b60008181526001830160205260408120548015612cd0576000612c0b6001836135e8565b8554909150600090612c1f906001906135e8565b9050818114612c84576000866000018281548110612c3f57612c3f613802565b9060005260206000200154905080876000018481548110612c6257612c62613802565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612c9557612c9561385c565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108ed565b60009150506108ed565b612ce381612484565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612d2583611f76565b612d805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610a75565b600080846001600160a01b031684604051612d9b9190613872565b600060405180830381855af49150503d8060008114612dd6576040519150601f19603f3d011682016040523d82523d6000602084013e612ddb565b606091505b5091509150612e03828260405180606001604052806027815260200161392f60279139612e7d565b95945050505050565b6101f85460ff16156109f55760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610a75565b610a888282611a36565b60608315612e8c5750816109bd565b6109bd8383815115612ea15781518083602001fd5b8060405162461bcd60e51b8152600401610a759190612f35565b600060208284031215612ecd57600080fd5b81356001600160e01b0319811681146109bd57600080fd5b60005b83811015612f00578181015183820152602001612ee8565b50506000910152565b60008151808452612f21816020860160208601612ee5565b601f01601f19169290920160200192915050565b6020815260006109bd6020830184612f09565b6001600160a01b0381168114610b5157600080fd5b60008060408385031215612f7057600080fd5b8235612f7b81612f48565b946020939093013593505050565b600080600060608486031215612f9e57600080fd5b8335612fa981612f48565b92506020840135612fb981612f48565b929592945050506040919091013590565b600060208284031215612fdc57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561300a57600080fd5b82359150602083013561301c81612f48565b809150509250929050565b60006020828403121561303957600080fd5b81356109bd81612f48565b60008060006060848603121561305957600080fd5b83359250602084013561306b81612f48565b9150604084013561307b81612f48565b809150509250925092565b6000806000806060858703121561309c57600080fd5b84356130a781612f48565b93506020850135925060408501356001600160401b03808211156130ca57600080fd5b818701915087601f8301126130de57600080fd5b8135818111156130ed57600080fd5b8860208285010111156130ff57600080fd5b95989497505060200194505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b038084111561313e5761313e61310e565b604051601f8501601f19908116603f011681019082821181831017156131665761316661310e565b8160405280935085815286868601111561317f57600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126131aa57600080fd5b6109bd83833560208501613124565b600080604083850312156131cc57600080fd5b82356001600160401b03808211156131e357600080fd5b6131ef86838701613199565b9350602085013591508082111561320557600080fd5b5061321285828601613199565b9150509250929050565b6000806040838503121561322f57600080fd5b823561323a81612f48565b915060208301356001600160401b0381111561325557600080fd5b8301601f8101851361326657600080fd5b61321285823560208401613124565b6000806040838503121561328857600080fd5b50508035926020909101359150565b600080600080600080600060e0888a0312156132b257600080fd5b87356132bd81612f48565b965060208801356132cd81612f48565b95506040880135945060608801359350608088013560ff811681146132f157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561332157600080fd5b823561332c81612f48565b9150602083013561301c81612f48565b600080600080600080600060e0888a03121561335757600080fd5b87356001600160401b038082111561336e57600080fd5b61337a8b838c01613199565b985060208a013591508082111561339057600080fd5b5061339d8a828b01613199565b9650506040880135945060608801356133b581612f48565b935060808801356133c581612f48565b925060a08801356133d581612f48565b915060c08801356133e581612f48565b8091505092959891949750929550565b600181811c9082168061340957607f821691505b6020821081036120f257634e487b7160e01b600052602260045260246000fd5b6020808252602c908201526000805160206138af83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206138af83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b9283526001600160a01b03918216602084015216604082015260600190565b805180151581146134cc57600080fd5b919050565b600080604083850312156134e457600080fd5b825191506134f4602084016134bc565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108ed576108ed6134fd565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b6000602082840312156135df57600080fd5b6109bd826134bc565b818103818111156108ed576108ed6134fd565b60006020828403121561360d57600080fd5b5051919050565b60018060a01b0384168152826020820152606060408201526000612e036060830184612f09565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516136b8816017850160208801612ee5565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516136e9816028840160208801612ee5565b01602801949350505050565b601f8211156109f557600081815260208120601f850160051c8101602086101561371c5750805b601f850160051c820191505b8181101561373b57828155600101613728565b505050505050565b81516001600160401b0381111561375c5761375c61310e565b6137708161376a84546133f5565b846136f5565b602080601f8311600181146137a5576000841561378d5750858301515b600019600386901b1c1916600185901b17855561373b565b600085815260208120601f198616915b828110156137d4578886015182559484019460019091019084016137b5565b50858210156137f25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b80820281158282048414176108ed576108ed6134fd565b600081613854576138546134fd565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60008251613884818460208701612ee5565b919091019291505056fe45524332305072657365744d696e7465725061757365723a206d75737420686146756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249865d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122004196c4c9c17185b480a67e28e9e3e3d1323e0e314ca5f30d6ee93101c3a497864736f6c63430008130033",
  "deployedBytecode": "0x60806040526004361061025a5760003560e01c806301ffc9a71461025f57806306fdde0314610294578063095ea7b3146102b657806318160ddd146102d657806323b872dd146102f6578063248a9ca3146103165780632c159a1a146103365780632f2ff15d14610364578063313ce56714610386578063355274ea146103a25780633644e515146103b957806336568abe146103ce5780633659cfe6146103ee57806339364fd71461040e57806339509351146104435780633f4ba83a146104635780634000aea01461047857806340c10f191461049857806342966c68146104b857806346904840146104d857806346fbf68e146104f95780634b75f54f146105195780634cd88b761461053a5780634f1ef2861461055a57806352d1902d1461056d5780635c975abb146105825780635d5bf1781461059b57806370a08231146105bb57806379cc6790146105db5780637ecebe00146105fb57806382dc1ec41461061b5780638456cb591461063b5780638da5cb5b146106505780639010d07c1461066557806391d148541461068557806395d89b41146106a5578063983b2d56146106ba57806398650275146106da578063a217fddf146106ef578063a457c2d714610704578063a9059cbb14610724578063aa271e1a14610744578063ca15c87314610764578063d505accf14610784578063d5391393146107a4578063d547741f146107c6578063d5a06d4c146107e6578063dd62ed3e14610806578063dea7f11214610826578063e63ab1e914610846578063e74b981b14610868578063ecc06c7614610888578063f2fde38b146108a8575b600080fd5b34801561026b57600080fd5b5061027f61027a366004612ebb565b6108c8565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102a96108f3565b60405161028b9190612f35565b3480156102c257600080fd5b5061027f6102d1366004612f5d565b610986565b3480156102e257600080fd5b5061012f545b60405190815260200161028b565b34801561030257600080fd5b5061027f610311366004612f89565b61099e565b34801561032257600080fd5b506102e8610331366004612fca565b6109c4565b34801561034257600080fd5b5061029054610357906001600160a01b031681565b60405161028b9190612fe3565b34801561037057600080fd5b5061038461037f366004612ff7565b6109d9565b005b34801561039257600080fd5b506040516012815260200161028b565b3480156103ae57600080fd5b506102e86102915481565b3480156103c557600080fd5b506102e86109fa565b3480156103da57600080fd5b506103846103e9366004612ff7565b610a09565b3480156103fa57600080fd5b50610384610409366004613027565b610a8c565b34801561041a57600080fd5b5061042e610429366004613044565b610b54565b6040805192835290151560208301520161028b565b34801561044f57600080fd5b5061027f61045e366004612f5d565b610bda565b34801561046f57600080fd5b50610384610bfc565b34801561048457600080fd5b5061027f610493366004613086565b610c7a565b3480156104a457600080fd5b5061027f6104b3366004612f5d565b610d80565b3480156104c457600080fd5b506103846104d3366004612fca565b610e07565b3480156104e457600080fd5b5061028e54610357906001600160a01b031681565b34801561050557600080fd5b5061027f610514366004613027565b610e11565b34801561052557600080fd5b5061028f54610357906001600160a01b031681565b34801561054657600080fd5b506103846105553660046131b9565b610e2b565b61038461056836600461321c565b610eed565b34801561057957600080fd5b506102e8610fa2565b34801561058e57600080fd5b506101f85460ff1661027f565b3480156105a757600080fd5b506103846105b6366004613027565b611050565b3480156105c757600080fd5b506102e86105d6366004613027565b61109a565b3480156105e757600080fd5b506103846105f6366004612f5d565b6110b6565b34801561060757600080fd5b506102e8610616366004613027565b6110cb565b34801561062757600080fd5b50610384610636366004613027565b6110ea565b34801561064757600080fd5b50610384611102565b34801561065c57600080fd5b5061035761117c565b34801561067157600080fd5b50610357610680366004613275565b611184565b34801561069157600080fd5b5061027f6106a0366004612ff7565b61119c565b3480156106b157600080fd5b506102a96111c7565b3480156106c657600080fd5b506103846106d5366004613027565b6111d7565b3480156106e657600080fd5b506103846111ef565b3480156106fb57600080fd5b506102e8600081565b34801561071057600080fd5b5061027f61071f366004612f5d565b611207565b34801561073057600080fd5b5061027f61073f366004612f5d565b61128d565b34801561075057600080fd5b5061027f61075f366004613027565b6112af565b34801561077057600080fd5b506102e861077f366004612fca565b6112c9565b34801561079057600080fd5b5061038461079f366004613297565b6112e0565b3480156107b057600080fd5b506102e860008051602061395683398151915281565b3480156107d257600080fd5b506103846107e1366004612ff7565b611444565b3480156107f257600080fd5b5061042e610801366004612fca565b611460565b34801561081257600080fd5b506102e861082136600461330e565b6114e3565b34801561083257600080fd5b5061038461084136600461333c565b61150f565b34801561085257600080fd5b506102e860008051602061390f83398151915281565b34801561087457600080fd5b50610384610883366004613027565b611675565b34801561089457600080fd5b506103846108a3366004613027565b6116bf565b3480156108b457600080fd5b506103846108c3366004613027565b611709565b60006001600160e01b03198216635a05180f60e01b14806108ed57506108ed82611746565b92915050565b60606101308054610903906133f5565b80601f016020809104026020016040519081016040528092919081815260200182805461092f906133f5565b801561097c5780601f106109515761010080835404028352916020019161097c565b820191906000526020600020905b81548152906001019060200180831161095f57829003601f168201915b5050505050905090565b60003361099481858561177b565b5060019392505050565b6000806109ac8585856118a0565b90506109b9858583611a13565b9150505b9392505050565b600090815260c9602052604090206001015490565b6109e2826109c4565b6109eb81611a2c565b6109f58383611a36565b505050565b6000610a04611a58565b905090565b6001600160a01b0381163314610a7e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610a888282611ad5565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ad45760405162461bcd60e51b8152600401610a7590613429565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b06611af7565b6001600160a01b031614610b2c5760405162461bcd60e51b8152600401610a7590613463565b610b3581611b13565b60408051600080825260208201909252610b5191839190611b3a565b50565b61028f54604051631eed540360e11b815260009182916001600160a01b0390911690633ddaa80690610b8e9088908890889060040161349d565b6040805180830381865afa158015610baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bce91906134d1565b91509150935093915050565b600033610994818585610bed83836114e3565b610bf79190613513565b61177b565b610c1460008051602061390f8339815191523361119c565b610c705760405162461bcd60e51b8152602060048201526039602482015260008051602061388f83398151915260448201527876652070617573657220726f6c6520746f20756e706175736560381b6064820152608401610a75565b610c78611ca5565b565b600080610c883387876118a0565b90506000610c968783611cf2565b9050866001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16848888604051610cdf93929190613526565b60405180910390a3863b15610d7657610d2f878387878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d0092505050565b610d765760405162461bcd60e51b815260206004820152601860248201527710dbdb9d1c9858dd0819985b1b189858dac819985a5b195960421b6044820152606401610a75565b9695505050505050565b6102915460009015610dfd576102915482610d9b61012f5490565b610da59190613513565b1115610dfd5760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420696e63726561736520737570706c79206265796f6e642063616044820152600760fc1b6064820152608401610a75565b6109bd8383611dbf565b610b513382611e45565b60006108ed60008051602061390f8339815191528361119c565b600054610100900460ff1615808015610e4b5750600054600160ff909116105b80610e6c5750610e5a30611f76565b158015610e6c575060005460ff166001145b610e885760405162461bcd60e51b8152600401610a759061355c565b6000805460ff191660011790558015610eab576000805461ff0019166101001790555b610eb58383611f85565b80156109f5576000805461ff0019169055604051600181526000805160206138ef8339815191529060200160405180910390a1505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f355760405162461bcd60e51b8152600401610a7590613429565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f67611af7565b6001600160a01b031614610f8d5760405162461bcd60e51b8152600401610a7590613463565b610f9682611b13565b610a8882826001611b3a565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461103d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610a75565b506000805160206138cf83398151915290565b61105b60003361119c565b6110775760405162461bcd60e51b8152600401610a75906135aa565b61029080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0316600090815261012d602052604090205490565b6110c1823383612001565b610a888282611e45565b6001600160a01b038116600090815261019360205260408120546108ed565b610b5160008051602061390f833981519152826109d9565b61111a60008051602061390f8339815191523361119c565b6111745760405162461bcd60e51b8152602060048201526037602482015260008051602061388f83398151915260448201527676652070617573657220726f6c6520746f20706175736560481b6064820152608401610a75565b610c7861207b565b6000610a0481805b600082815260fb602052604081206109bd90836120b9565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606101318054610903906133f5565b610b51600080516020613956833981519152826109d9565b610c7860008051602061395683398151915233610a09565b6000338161121582866114e3565b9050838110156112755760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a75565b611282828686840361177b565b506001949350505050565b60008061129b3385856118a0565b90506112a78482611cf2565b949350505050565b60006108ed6000805160206139568339815191528361119c565b600081815260fb602052604081206108ed906120c5565b834211156113305760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610a75565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861135f8c6120cf565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006113ba826120f8565b905060006113ca82878787612146565b9050896001600160a01b0316816001600160a01b03161461142d5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610a75565b6114388a8a8a61177b565b50505050505050505050565b61144d826109c4565b61145681611a2c565b6109f58383611ad5565b61028f54604051631eed540360e11b815260009182916001600160a01b0390911690633ddaa8069061149a9086908590819060040161349d565b6040805180830381865afa1580156114b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114da91906134d1565b91509150915091565b6001600160a01b03918216600090815261012e6020908152604080832093909416825291909152205490565b600054610100900460ff161580801561152f5750600054600160ff909116105b80611550575061153e30611f76565b158015611550575060005460ff166001145b61156c5760405162461bcd60e51b8152600401610a759061355c565b6000805460ff19166001179055801561158f576000805461ff0019166101001790555b6115998888611f85565b61028e80546001600160a01b038086166001600160a01b031992831617909255610290805487841690831617905561028f8054928816929091169190911790556102918690556115e63390565b6001600160a01b0316826001600160a01b0316146116375761160782611709565b61161f60008051602061395683398151915233610a09565b61163760008051602061390f83398151915233610a09565b801561166b576000805461ff0019169055604051600181526000805160206138ef8339815191529060200160405180910390a15b5050505050505050565b61168060003361119c565b61169c5760405162461bcd60e51b8152600401610a75906135aa565b61028e80546001600160a01b0319166001600160a01b0392909216919091179055565b6116ca60003361119c565b6116e65760405162461bcd60e51b8152600401610a75906135aa565b61028f80546001600160a01b0319166001600160a01b0392909216919091179055565b61171460003361119c565b6117305760405162461bcd60e51b8152600401610a75906135aa565b61173b6000826109d9565b610b51600033610a09565b60006001600160e01b03198216637965db0b60e01b14806108ed57506301ffc9a760e01b6001600160e01b03198316146108ed565b6001600160a01b0383166117dd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a75565b6001600160a01b03821661183e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a75565b6001600160a01b03838116600081815261012e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008060006118b0848787610b54565b9150915060008211801561193357506102905460405163639e625760e11b81526001600160a01b039091169063c73cc4ae906118f0903390600401612fe3565b602060405180830381865afa15801561190d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193191906135cd565b155b15611a095780158061195657506119498661109a565b6119538386613513565b11155b6119a25760405162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f7567682062616c616e636520746f20706179205458206665656044820152606401610a75565b336001600160a01b038716036119cf5761028e546119c9906001600160a01b031683611cf2565b506119ea565b61028e546119e89087906001600160a01b031684611a13565b505b806119fe576119f982856135e8565b611a00565b835b925050506109bd565b5091949350505050565b600033611a21858285612001565b61128285858561216e565b610b518133612314565b611a40828261236d565b600082815260fb602052604090206109f590826123f3565b6000610a047f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611a8861015f5490565b610160546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b611adf8282612408565b600082815260fb602052604090206109f5908261246f565b6000805160206138cf833981519152546001600160a01b031690565b611b1e60003361119c565b610b515760405162461bcd60e51b8152600401610a75906135aa565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611b6d576109f583612484565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bc7575060408051601f3d908101601f19168201909252611bc4918101906135fb565b60015b611c2a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a75565b6000805160206138cf8339815191528114611c995760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a75565b506109f583838361251e565b611cad612543565b6101f8805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051611ce89190612fe3565b60405180910390a1565b60003361099481858561216e565b604051635260769b60e11b815260009084906001600160a01b0382169063a4c0ed3690611d3590339088908890600401613614565b6020604051808303816000875af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7891906135cd565b6112825760405162461bcd60e51b815260206004820152601860248201527710dbdb9d1c9858dd0811985b1b189858dac819985a5b195960421b6044820152606401610a75565b6000611dd96000805160206139568339815191523361119c565b611e325760405162461bcd60e51b8152602060048201526036602482015260008051602061388f8339815191526044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608401610a75565b611e3c838361258d565b50600192915050565b6001600160a01b038216611ea55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a75565b611eb18260008361264a565b6001600160a01b038216600090815261012d602052604090205481811015611f265760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a75565b6001600160a01b038316600081815261012d60209081526040808320868603905561012f8054879003905551858152919291600080516020613976833981519152910160405180910390a3505050565b6001600160a01b03163b151590565b600054610100900460ff16611fac5760405162461bcd60e51b8152600401610a759061363b565b611fb4612655565b611fbc612655565b611fc4612655565b611fcc612655565b611fd6828261267c565b611fde612655565b611fe66126be565b611fee612655565b611ff882826126f2565b610a8882612754565b600061200d84846114e3565b9050600019811461207557818110156120685760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a75565b612075848484840361177b565b50505050565b61208361277b565b6101f8805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611cdb3390565b60006109bd83836127c2565b60006108ed825490565b6001600160a01b0381166000908152610193602052604090208054600181018255905b50919050565b60006108ed612105611a58565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000612157878787876127ec565b91509150612164816128a6565b5095945050505050565b6001600160a01b0383166121d25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a75565b6001600160a01b0382166122345760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a75565b61223f83838361264a565b6001600160a01b038316600090815261012d6020526040902054818110156122b85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a75565b6001600160a01b03808516600081815261012d60205260408082208686039055928616808252908390208054860190559151600080516020613976833981519152906123079086815260200190565b60405180910390a3612075565b61231e828261119c565b610a885761232b816129eb565b6123368360206129fd565b604051602001612347929190613686565b60408051601f198184030181529082905262461bcd60e51b8252610a7591600401612f35565b612377828261119c565b610a8857600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556123af3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006109bd836001600160a01b038416612b98565b612412828261119c565b15610a8857600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006109bd836001600160a01b038416612be7565b61248d81611f76565b6124ef5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a75565b6000805160206138cf83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61252783612cda565b6000825111806125345750805b156109f5576120758383612d1a565b6101f85460ff16610c785760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a75565b6001600160a01b0382166125e35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a75565b6125ef6000838361264a565b8061012f60008282546126029190613513565b90915550506001600160a01b038216600081815261012d6020908152604080832080548601905551848152600080516020613976833981519152910160405180910390a35050565b6109f5838383612e0c565b600054610100900460ff16610c785760405162461bcd60e51b8152600401610a759061363b565b600054610100900460ff166126a35760405162461bcd60e51b8152600401610a759061363b565b6101306126b08382613743565b506101316109f58282613743565b600054610100900460ff166126e55760405162461bcd60e51b8152600401610a759061363b565b6101f8805460ff19169055565b600054610100900460ff166127195760405162461bcd60e51b8152600401610a759061363b565b612724600033612e73565b61273c60008051602061395683398151915233612e73565b610a8860008051602061390f83398151915233612e73565b600054610100900460ff16610b515760405162461bcd60e51b8152600401610a759061363b565b6101f85460ff1615610c785760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610a75565b60008260000182815481106127d9576127d9613802565b9060005260206000200154905092915050565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115612819575060009050600361289d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561286d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128965760006001925092505061289d565b9150600090505b94509492505050565b60008160048111156128ba576128ba613818565b036128c25750565b60018160048111156128d6576128d6613818565b0361291e5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606401610a75565b600281600481111561293257612932613818565b0361297f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610a75565b600381600481111561299357612993613818565b03610b515760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610a75565b60606108ed6001600160a01b03831660145b60606000612a0c83600261382e565b612a17906002613513565b6001600160401b03811115612a2e57612a2e61310e565b6040519080825280601f01601f191660200182016040528015612a58576020820181803683370190505b509050600360fc1b81600081518110612a7357612a73613802565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612aa257612aa2613802565b60200101906001600160f81b031916908160001a9053506000612ac684600261382e565b612ad1906001613513565b90505b6001811115612b49576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612b0557612b05613802565b1a60f81b828281518110612b1b57612b1b613802565b60200101906001600160f81b031916908160001a90535060049490941c93612b4281613845565b9050612ad4565b5083156109bd5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a75565b6000818152600183016020526040812054612bdf575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108ed565b5060006108ed565b60008181526001830160205260408120548015612cd0576000612c0b6001836135e8565b8554909150600090612c1f906001906135e8565b9050818114612c84576000866000018281548110612c3f57612c3f613802565b9060005260206000200154905080876000018481548110612c6257612c62613802565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612c9557612c9561385c565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108ed565b60009150506108ed565b612ce381612484565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612d2583611f76565b612d805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610a75565b600080846001600160a01b031684604051612d9b9190613872565b600060405180830381855af49150503d8060008114612dd6576040519150601f19603f3d011682016040523d82523d6000602084013e612ddb565b606091505b5091509150612e03828260405180606001604052806027815260200161392f60279139612e7d565b95945050505050565b6101f85460ff16156109f55760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610a75565b610a888282611a36565b60608315612e8c5750816109bd565b6109bd8383815115612ea15781518083602001fd5b8060405162461bcd60e51b8152600401610a759190612f35565b600060208284031215612ecd57600080fd5b81356001600160e01b0319811681146109bd57600080fd5b60005b83811015612f00578181015183820152602001612ee8565b50506000910152565b60008151808452612f21816020860160208601612ee5565b601f01601f19169290920160200192915050565b6020815260006109bd6020830184612f09565b6001600160a01b0381168114610b5157600080fd5b60008060408385031215612f7057600080fd5b8235612f7b81612f48565b946020939093013593505050565b600080600060608486031215612f9e57600080fd5b8335612fa981612f48565b92506020840135612fb981612f48565b929592945050506040919091013590565b600060208284031215612fdc57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806040838503121561300a57600080fd5b82359150602083013561301c81612f48565b809150509250929050565b60006020828403121561303957600080fd5b81356109bd81612f48565b60008060006060848603121561305957600080fd5b83359250602084013561306b81612f48565b9150604084013561307b81612f48565b809150509250925092565b6000806000806060858703121561309c57600080fd5b84356130a781612f48565b93506020850135925060408501356001600160401b03808211156130ca57600080fd5b818701915087601f8301126130de57600080fd5b8135818111156130ed57600080fd5b8860208285010111156130ff57600080fd5b95989497505060200194505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b038084111561313e5761313e61310e565b604051601f8501601f19908116603f011681019082821181831017156131665761316661310e565b8160405280935085815286868601111561317f57600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126131aa57600080fd5b6109bd83833560208501613124565b600080604083850312156131cc57600080fd5b82356001600160401b03808211156131e357600080fd5b6131ef86838701613199565b9350602085013591508082111561320557600080fd5b5061321285828601613199565b9150509250929050565b6000806040838503121561322f57600080fd5b823561323a81612f48565b915060208301356001600160401b0381111561325557600080fd5b8301601f8101851361326657600080fd5b61321285823560208401613124565b6000806040838503121561328857600080fd5b50508035926020909101359150565b600080600080600080600060e0888a0312156132b257600080fd5b87356132bd81612f48565b965060208801356132cd81612f48565b95506040880135945060608801359350608088013560ff811681146132f157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561332157600080fd5b823561332c81612f48565b9150602083013561301c81612f48565b600080600080600080600060e0888a03121561335757600080fd5b87356001600160401b038082111561336e57600080fd5b61337a8b838c01613199565b985060208a013591508082111561339057600080fd5b5061339d8a828b01613199565b9650506040880135945060608801356133b581612f48565b935060808801356133c581612f48565b925060a08801356133d581612f48565b915060c08801356133e581612f48565b8091505092959891949750929550565b600181811c9082168061340957607f821691505b6020821081036120f257634e487b7160e01b600052602260045260246000fd5b6020808252602c908201526000805160206138af83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206138af83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b9283526001600160a01b03918216602084015216604082015260600190565b805180151581146134cc57600080fd5b919050565b600080604083850312156134e457600080fd5b825191506134f4602084016134bc565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108ed576108ed6134fd565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b6000602082840312156135df57600080fd5b6109bd826134bc565b818103818111156108ed576108ed6134fd565b60006020828403121561360d57600080fd5b5051919050565b60018060a01b0384168152826020820152606060408201526000612e036060830184612f09565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516136b8816017850160208801612ee5565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516136e9816028840160208801612ee5565b01602801949350505050565b601f8211156109f557600081815260208120601f850160051c8101602086101561371c5750805b601f850160051c820191505b8181101561373b57828155600101613728565b505050505050565b81516001600160401b0381111561375c5761375c61310e565b6137708161376a84546133f5565b846136f5565b602080601f8311600181146137a5576000841561378d5750858301515b600019600386901b1c1916600185901b17855561373b565b600085815260208120601f198616915b828110156137d4578886015182559484019460019091019084016137b5565b50858210156137f25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b80820281158282048414176108ed576108ed6134fd565b600081613854576138546134fd565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60008251613884818460208701612ee5565b919091019291505056fe45524332305072657365744d696e7465725061757365723a206d75737420686146756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249865d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122004196c4c9c17185b480a67e28e9e3e3d1323e0e314ca5f30d6ee93101c3a497864736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
