{
  "_format": "hh-sol-artifact-1",
  "contractName": "MintingManager",
  "sourceName": "contracts/MintingManager.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": false,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Blocked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "BlocklistDisabled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "BlocklistEnabled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "DomainPurchase",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "tld",
          "type": "string"
        }
      ],
      "name": "NewTld",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "RemoveTld",
      "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": 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"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "recepient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "Withdrawal",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "NAME",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "addMinter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        }
      ],
      "name": "addMinters",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "addrs",
          "type": "address[]"
        }
      ],
      "name": "addProxyReaders",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "tld",
          "type": "string"
        },
        {
          "internalType": "bool",
          "name": "isExpirable",
          "type": "bool"
        }
      ],
      "name": "addTld",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "labels",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "keys",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "values",
          "type": "string[]"
        },
        {
          "internalType": "uint64",
          "name": "expiry",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "buy",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "labels",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "keys",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "values",
          "type": "string[]"
        },
        {
          "internalType": "uint64",
          "name": "expiry",
          "type": "uint64"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "buyForErc20",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "closeMinter",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cnsMintingController",
      "outputs": [
        {
          "internalType": "contract IMintingController",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cnsResolver",
      "outputs": [
        {
          "internalType": "contract IResolver",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cnsURIPrefixController",
      "outputs": [
        {
          "internalType": "contract IURIPrefixController",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "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": "contract IUNSRegistry",
          "name": "unsRegistry_",
          "type": "address"
        },
        {
          "internalType": "contract IMintingController",
          "name": "cnsMintingController_",
          "type": "address"
        },
        {
          "internalType": "contract IURIPrefixController",
          "name": "cnsURIPrefixController_",
          "type": "address"
        },
        {
          "internalType": "contract IResolver",
          "name": "cnsResolver_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "unsOperator_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "isBlocked",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "isMinter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "isTrustedForwarder",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "labels",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "keys",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "values",
          "type": "string[]"
        },
        {
          "internalType": "uint64",
          "name": "expiry",
          "type": "uint64"
        },
        {
          "internalType": "bool",
          "name": "withReverse",
          "type": "bool"
        }
      ],
      "name": "issueExpirableWithRecords",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "string[]",
          "name": "labels",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "keys",
          "type": "string[]"
        },
        {
          "internalType": "string[]",
          "name": "values",
          "type": "string[]"
        },
        {
          "internalType": "bool",
          "name": "withReverse",
          "type": "bool"
        }
      ],
      "name": "issueWithRecords",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "account",
          "type": "address"
        }
      ],
      "name": "removeMinter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        }
      ],
      "name": "removeMinters",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tld",
          "type": "uint256"
        }
      ],
      "name": "removeTld",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "expiry",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "renew",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceMinter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "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": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "revoke",
      "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 payable",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "rotateMinter",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "setForwarder",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "prefix",
          "type": "string"
        }
      ],
      "name": "setTokenURIPrefix",
      "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": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unsRegistry",
      "outputs": [
        {
          "internalType": "contract IUNSRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recepient",
          "type": "address"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recepient",
          "type": "address"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506145be806100206000396000f3fe6080604052600436106102675760003560e01c806391d1485411610144578063cc2a9a5b116100b6578063d7db74c71161007a578063d7db74c714610778578063ec5273891461078b578063f2fde38b146107ab578063f5243bc4146107cb578063f940e385146107eb578063ffa1ad741461080b57600080fd5b8063cc2a9a5b146106d6578063cc2c3fc4146106f6578063d1f5692c14610716578063d539139314610736578063d547741f1461075857600080fd5b8063a3a3f7f611610108578063a3a3f7f6146105e9578063a3f4df7e14610609578063a849d65c14610656578063aa271e1a14610676578063b0aa98c714610696578063b9998a24146106b657600080fd5b806391d148541461055f578063983b2d561461057f578063986502751461059f57806399e0dd7c146105b4578063a217fddf146105d457600080fd5b80635b6fa8db116101dd578063634486da116101a1578063634486da146104d1578063715018a6146104e457806371e2a657146104f957806381c81d35146105195780638456cb591461052c5780638da5cb5b1461054157600080fd5b80635b6fa8db1461043c5780635c975abb1461045c5780635cd7e3b3146104715780635e22cd86146104915780635fc1964f146104b157600080fd5b80633092afd51161022f5780633092afd51461034157806336568abe146103615780633f41b614146103815780633f4ba83a146103b957806351cff8d9146103ce578063572b6c05146103ee57600080fd5b806301ffc9a71461026c5780631edb948e146102a157806320c5429b146102c3578063248a9ca3146102e35780632f2ff15d14610321575b600080fd5b34801561027857600080fd5b5061028c61028736600461357a565b61083c565b60405190151581526020015b60405180910390f35b3480156102ad57600080fd5b506102c16102bc3660046135c9565b610873565b005b3480156102cf57600080fd5b506102c16102de3660046135f5565b610a1c565b3480156102ef57600080fd5b506103136102fe3660046135f5565b60009081526097602052604090206001015490565b604051908152602001610298565b34801561032d57600080fd5b506102c161033c36600461362e565b610b3f565b34801561034d57600080fd5b506102c161035c36600461365e565b610b69565b34801561036d57600080fd5b506102c161037c36600461362e565b610b7d565b34801561038d57600080fd5b5060c9546103a1906001600160a01b031681565b6040516001600160a01b039091168152602001610298565b3480156103c557600080fd5b506102c1610c0b565b3480156103da57600080fd5b506102c16103e936600461365e565b610c1d565b3480156103fa57600080fd5b5061028c61040936600461365e565b7f893ef2ea16c023f61d4f55d3e6ee3fc3f2fbfd478461323dbc2fbf919047086e546001600160a01b0390811691161490565b34801561044857600080fd5b5060cc546103a1906001600160a01b031681565b34801561046857600080fd5b5061028c610cbd565b34801561047d57600080fd5b506102c161048c3660046136cd565b610cd3565b34801561049d57600080fd5b506102c16104ac36600461378c565b610e73565b3480156104bd57600080fd5b506102c16104cc3660046138c6565b610ff8565b6102c16104df36600461365e565b611040565b3480156104f057600080fd5b506102c1611103565b34801561050557600080fd5b506102c16105143660046138c6565b611115565b6102c161052736600461365e565b61115d565b34801561053857600080fd5b506102c16111da565b34801561054d57600080fd5b506033546001600160a01b03166103a1565b34801561056b57600080fd5b5061028c61057a36600461362e565b6111ea565b34801561058b57600080fd5b506102c161059a36600461365e565b611215565b3480156105ab57600080fd5b506102c1611226565b3480156105c057600080fd5b506102c16105cf36600461399a565b611240565b3480156105e057600080fd5b50610313600081565b3480156105f557600080fd5b506102c16106043660046139db565b611327565b34801561061557600080fd5b50610649604051806040016040528060148152602001732aa7299d1026b4b73a34b7339026b0b730b3b2b960611b81525081565b6040516102989190613a81565b34801561066257600080fd5b5060cb546103a1906001600160a01b031681565b34801561068257600080fd5b5061028c61069136600461365e565b6113c2565b3480156106a257600080fd5b5061028c6106b13660046135f5565b6113dc565b3480156106c257600080fd5b506102c16106d136600461365e565b61143a565b3480156106e257600080fd5b506102c16106f1366004613a94565b61147f565b34801561070257600080fd5b5060ca546103a1906001600160a01b031681565b34801561072257600080fd5b506102c1610731366004613b16565b611604565b34801561074257600080fd5b5061031360008051602061459283398151915281565b34801561076457600080fd5b506102c161077336600461362e565b6116bb565b6102c1610786366004613b4b565b6116e0565b34801561079757600080fd5b506102c16107a63660046135f5565b61190f565b3480156107b757600080fd5b506102c16107c636600461365e565b6119d3565b3480156107d757600080fd5b506102c16107e6366004613c40565b6119ef565b3480156107f757600080fd5b506102c1610806366004613d58565b611c3e565b34801561081757600080fd5b50610649604051806040016040528060058152602001640302e382e360dc1b81525081565b60006001600160e01b03198216637965db0b60e01b148061086d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61087e610691611dba565b6108a35760405162461bcd60e51b815260040161089a90613d86565b60405180910390fd5b60c95460405163baef73e960e01b8152600481018390526000916001600160a01b03169063baef73e990602401602060405180830381865afa1580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109119190613dbb565b9050806001600160401b031660000361093c5760405162461bcd60e51b815260040161089a90613dd8565b806001600160401b0316836001600160401b0316116109a95760405162461bcd60e51b815260206004820152602360248201527f4d696e74696e674d616e616765723a204558504952595f4e4f545f455854454e60448201526211115160ea1b606482015260840161089a565b60c954604051631fb9763760e11b81526001600160401b0385166004820152602481018490526001600160a01b0390911690633f72ec6e906044015b600060405180830381600087803b1580156109ff57600080fd5b505af1158015610a13573d6000803e3d6000fd5b50505050505050565b610a27610691611dba565b610a435760405162461bcd60e51b815260040161089a90613d86565b60c95460405163baef73e960e01b8152600481018390526001600160a01b039091169063baef73e990602401602060405180830381865afa158015610a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab09190613dbb565b6001600160401b0316600003610ad85760405162461bcd60e51b815260040161089a90613dd8565b60c954604051637eee288d60e01b8152306004820152602481018390526001600160a01b0390911690637eee288d90604401600060405180830381600087803b158015610b2457600080fd5b505af1158015610b38573d6000803e3d6000fd5b5050505050565b600082815260976020526040902060010154610b5a81611dc9565b610b648383611dda565b505050565b610b71611e61565b610b7a81611eda565b50565b610b85611dba565b6001600160a01b0316816001600160a01b031614610bfd5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161089a565b610c078282611ef2565b5050565b610c13611e61565b610c1b611f77565b565b610c25611e61565b6001600160a01b038116610c3857600080fd5b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610c70573d6000803e3d6000fd5b50604080516001600160a01b03841681526020810183905260008183015290517e1a143d5b175701cb3246058ffac3d63945192075a926ff73a19930f09d587a9181900360600190a15050565b6000805160206145728339815191525460ff1690565b610cde610691611dba565b610cfa5760405162461bcd60e51b815260040161089a90613e1b565b610d048688613e5f565b60008151600214610d275760405162461bcd60e51b815260040161089a90613f29565b6000610d328361201f565b915050610d3e81612077565b610d5a5760405162461bcd60e51b815260040161089a90613f6f565b600081815260cf602052604090205460ff1615156001600160401b038316151514610d975760405162461bcd60e51b815260040161089a90613fb1565b610dba83600081518110610dad57610dad613ff7565b602002602001015161209d565b610dd65760405162461bcd60e51b815260040161089a9061400d565b610df983600081518110610dec57610dec613ff7565b6020026020010151612201565b15610e165760405162461bcd60e51b815260040161089a90614044565b610e1e610cbd565b15610e3b5760405162461bcd60e51b815260040161089a9061408a565b610e658b610e498b8d613e5f565b610e538a8c613e5f565b610e5d898b613e5f565b60008961228b565b505050505050505050505050565b610e7e610691611dba565b610e9a5760405162461bcd60e51b815260040161089a90613e1b565b610ea48789613e5f565b828151600214610ec65760405162461bcd60e51b815260040161089a90613f29565b6000610ed18361201f565b915050610edd81612077565b610ef95760405162461bcd60e51b815260040161089a90613f6f565b600081815260cf602052604090205460ff1615156001600160401b038316151514610f365760405162461bcd60e51b815260040161089a90613fb1565b610f4c83600081518110610dad57610dad613ff7565b610f685760405162461bcd60e51b815260040161089a9061400d565b610f7e83600081518110610dec57610dec613ff7565b15610f9b5760405162461bcd60e51b815260040161089a90614044565b610fa3610cbd565b15610fc05760405162461bcd60e51b815260040161089a9061408a565b610fe98c610fce8c8e613e5f565b610fd88b8d613e5f565b610fe28a8c613e5f565b898961228b565b50505050505050505050505050565b611000611e61565b60005b8151811015610c075761102e82828151811061102157611021613ff7565b6020026020010151611eda565b80611038816140ca565b915050611003565b61104b610691611dba565b6110675760405162461bcd60e51b815260040161089a90613d86565b6001600160a01b0381166110bd5760405162461bcd60e51b815260206004820152601d60248201527f4d696e746572526f6c653a2052454345495645525f49535f454d505459000000604482015260640161089a565b6110c6816126ea565b6110ce611226565b6040516001600160a01b038216903480156108fc02916000818181858888f19350505050158015610c07573d6000803e3d6000fd5b61110b611e61565b610c1b6000612702565b61111d611e61565b60005b8151811015610c075761114b82828151811061113e5761113e613ff7565b60200260200101516126ea565b80611155816140ca565b915050611120565b611168610691611dba565b6111845760405162461bcd60e51b815260040161089a90613d86565b6001600160a01b0381166110c65760405162461bcd60e51b815260206004820152601d60248201527f4d696e746572526f6c653a2052454345495645525f49535f454d505459000000604482015260640161089a565b6111e2611e61565b610c1b612754565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61121d611e61565b610b7a816126ea565b610c1b60008051602061459283398151915261037c611dba565b611248611e61565b60c954604051632678375f60e21b81526001600160a01b03909116906399e0dd7c9061127a90859085906004016140e3565b600060405180830381600087803b15801561129457600080fd5b505af11580156112a8573d6000803e3d6000fd5b505060cb546001600160a01b0316159150610c0790505760cb54604051632678375f60e21b81526001600160a01b03909116906399e0dd7c906112f190859085906004016140e3565b600060405180830381600087803b15801561130b57600080fd5b505af115801561131f573d6000803e3d6000fd5b505050505050565b61132f611dba565b6001600160a01b031661134a6033546001600160a01b031690565b6001600160a01b031614806113655750611365610691611dba565b6113815760405162461bcd60e51b815260040161089a90614112565b610b6483838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508592506127bc915050565b600061086d600080516020614592833981519152836111ea565b604080517f1ec047073e2c8b15660901dbfdb6e3ff6365bd699dd9f95dcc6eab5448bebd696020820152908101829052600090611430906060015b6040516020818303038152906040528051906020012090565b5460ff1692915050565b611442611e61565b7f893ef2ea16c023f61d4f55d3e6ee3fc3f2fbfd478461323dbc2fbf919047086e80546001600160a01b0319166001600160a01b03831617905550565b600054610100900460ff161580801561149f5750600054600160ff909116105b806114b95750303b1580156114b9575060005460ff166001145b61151c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089a565b6000805460ff19166001179055801561153f576000805461ff0019166101001790555b60c980546001600160a01b03199081166001600160a01b038a81169190911790925560ca8054821689841617905560cb8054821688841617905560cc8054821687841617905560ce805490911691851691909117905561159e826128dc565b6115a6612914565b6115ae612953565b6115b6612982565b8015610a13576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050505050565b61160c611e61565b60005b81811015610b645760c9546001600160a01b0316635096023984848481811061163a5761163a613ff7565b905060200201602081019061164f919061365e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801561169057600080fd5b505af11580156116a4573d6000803e3d6000fd5b5050505080806116b3906140ca565b91505061160f565b6000828152609760205260409020600101546116d681611dc9565b610b648383611ef2565b6116ea898b613e5f565b6000815160021461170d5760405162461bcd60e51b815260040161089a90613f29565b60006117188361201f565b91505061172481612077565b6117405760405162461bcd60e51b815260040161089a90613f6f565b600081815260cf602052604090205460ff1615156001600160401b03831615151461177d5760405162461bcd60e51b815260040161089a90613fb1565b61179383600081518110610dad57610dad613ff7565b6117af5760405162461bcd60e51b815260040161089a9061400d565b6117c583600081518110610dec57610dec613ff7565b156117e25760405162461bcd60e51b815260040161089a90614044565b6117ea610cbd565b156118075760405162461bcd60e51b815260040161089a9061408a565b61184d8e8e8e8a8a60008b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129b192505050565b8534101561189d5760405162461bcd60e51b815260206004820181905260248201527f4d696e74696e674d616e616765723a204e4f545f454e4f5547485f46554e4453604482015260640161089a565b6118af8e8e8e8e8e8e8e8d6000612b71565b853411156118ff576118bf611dba565b6001600160a01b03166108fc6118d5883461415f565b6040518115909202916000818181858888f193505050501580156118fd573d6000803e3d6000fd5b505b5050505050505050505050505050565b611917611dba565b6001600160a01b03166119326033546001600160a01b031690565b6001600160a01b0316148061194d575061194d610691611dba565b6119695760405162461bcd60e51b815260040161089a90614112565b61197281612077565b61198e5760405162461bcd60e51b815260040161089a90613f6f565b600081815260cd602052604081206119a59161352c565b60405181907f0aa1aff0f830e739d86baf0e6624d6763da02f7733575e0e463886cd062dea6a90600090a250565b6119db611e61565b6119e481612c2d565b610b7a600082612ca3565b6119f98a8c613e5f565b60008151600214611a1c5760405162461bcd60e51b815260040161089a90613f29565b6000611a278361201f565b915050611a3381612077565b611a4f5760405162461bcd60e51b815260040161089a90613f6f565b600081815260cf602052604090205460ff1615156001600160401b038316151514611a8c5760405162461bcd60e51b815260040161089a90613fb1565b611aa283600081518110610dad57610dad613ff7565b611abe5760405162461bcd60e51b815260040161089a9061400d565b611ad483600081518110610dec57610dec613ff7565b15611af15760405162461bcd60e51b815260040161089a90614044565b611af9610cbd565b15611b165760405162461bcd60e51b815260040161089a9061408a565b611b5b8f8f8f8b8a8c8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129b192505050565b866001600160a01b03166323b872dd611b72611dba565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018990526064016020604051808303816000875af1158015611bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be99190614172565b611c2d5760405162461bcd60e51b8152602060048201526015602482015274115490cc8c0e881313d5d7d31155915317d1905253605a1b604482015260640161089a565b6118fd8f8f8f8f8f8f8f8d8f612b71565b611c46611e61565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb1919061418f565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d289190614172565b611d6c5760405162461bcd60e51b8152602060048201526015602482015274115490cc8c0e881313d5d7d31155915317d1905253605a1b604482015260640161089a565b604080516001600160a01b0384811682526020820184905285168183015290517e1a143d5b175701cb3246058ffac3d63945192075a926ff73a19930f09d587a9181900360600190a1505050565b6000611dc4612cad565b905090565b610b7a81611dd5611dba565b612cf3565b611de482826111ea565b610c075760008281526097602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611e1d611dba565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611e69611dba565b6001600160a01b0316611e846033546001600160a01b031690565b6001600160a01b031614610c1b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161089a565b610b7a600080516020614592833981519152826116bb565b611efc82826111ea565b15610c075760008281526097602090815260408083206001600160a01b03851684529091529020805460ff19169055611f33611dba565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b611f7f610cbd565b611fc25760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881393d517d4105554d15160621b604482015260640161089a565b600080516020614572833981519152805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612002611dba565b6040516001600160a01b03909116815260200160405180910390a1565b805160009081905b80156120715782915061205d828561204060018561415f565b8151811061205057612050613ff7565b6020026020010151612d57565b925080612069816141a8565b915050612027565b50915091565b600081815260cd602052604081208054829190612093906141bf565b9050119050919050565b600081516000036120b057506000919050565b60208201805160f81c603081108015906120ce575060398160ff1611155b1580156120f0575060618160ff16101580156120ee5750607a8160ff1611155b155b156120ff575060009392505050565b8351600181111561216d576121218361211960018461415f565b015160f81c90565b915060308260ff161015801561213b575060398260ff1611155b15801561215d575060618260ff161015801561215b5750607a8260ff1611155b155b1561216d57506000949350505050565b60015b61217b60018361415f565b8110156121f5578381015160f81c9250602d83148015906121b1575060308360ff16101580156121af575060398360ff1611155b155b80156121d2575060618360ff16101580156121d05750607a8360ff1611155b155b156121e35750600095945050505050565b806121ed816140ca565b915050612170565b50600195945050505050565b6000806122358360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050600a8160000151111561228557612260612254826000600a612e0b565b80516020909101512090565b7fb551e0305c8163b812374b8e78b577c77f226f6f10c5ad03e52699578fbc34b81491505b50919050565b6000806122978761201f565b5060c954604051634f558e7960e01b8152600481018390529192506001600160a01b031690634f558e7990602401602060405180830381865afa1580156122e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123069190614172565b80156123f7575060c9546040516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e90602401602060405180830381865afa158015612356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237a91906141f3565b6001600160a01b031614806123f7575060c95460405163d9548e5360e01b8152600481018390526001600160a01b039091169063d9548e5390602401602060405180830381865afa1580156123d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f79190614172565b156124e8576001600160401b038416156124795760c954604051631fb9763760e11b81526001600160401b0386166004820152602481018390526001600160a01b0390911690633f72ec6e90604401600060405180830381600087803b15801561246057600080fd5b505af1158015612474573d6000803e3d6000fd5b505050505b60c954604051630fb8df0360e11b81526001600160a01b0390911690631f71be06906124b1908b908b908b908b908a90600401614265565b600060405180830381600087803b1580156124cb57600080fd5b505af11580156124df573d6000803e3d6000fd5b505050506126df565b6124f181612e4a565b6124fa87612ea9565b8015612507575086516002145b801561251a57506001600160401b038416155b156125f85760ca5487516001600160a01b039091169063c36c2125908a908a9060009061254957612549613ff7565b602090810291909101015160cc546040516001600160e01b031960e086901b1681526125839392916001600160a01b0316906004016142c4565b600060405180830381600087803b15801561259d57600080fd5b505af11580156125b1573d6000803e3d6000fd5b505050506000865111156125f35760cc54604051633a0deb9d60e21b81526001600160a01b039091169063e837ae74906124b1908990899086906004016142f9565b6126df565b60c95460405163ba5d40b760e01b81526001600160a01b039091169063ba5d40b790612630908b908b908b908b908a90600401614265565b600060405180830381600087803b15801561264a57600080fd5b505af115801561265e573d6000803e3d6000fd5b505050506001600160401b038416156126df5760c954604051631fb9763760e11b81526001600160401b0386166004820152602481018390526001600160a01b0390911690633f72ec6e90604401600060405180830381600087803b1580156126c657600080fd5b505af11580156126da573d6000803e3d6000fd5b505050505b979650505050505050565b610b7a60008051602061459283398151915282612ca3565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61275c610cbd565b156127795760405162461bcd60e51b815260040161089a9061408a565b600080516020614572833981519152805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612002611dba565b60006127c9600084612d57565b600081815260cd602052604090209091506127e48482614375565b50600081815260cf602052604090819020805460ff19168415151790555181907f4fce6f6e172b04eaa80325d8e3b0180a34945000f3e214605039e8420fdf898090612831908690613a81565b60405180910390a260c954604051634f558e7960e01b8152600481018390526001600160a01b0390911690634f558e7990602401602060405180830381865afa158015612882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a69190614172565b610b645760c9546040516307befae360e51b81526001600160a01b039091169063f7df5c60906109e59084908790600401614434565b600054610100900460ff166129035760405162461bcd60e51b815260040161089a90614455565b61290b612f03565b610b7a81612f2a565b600054610100900460ff1661293b5760405162461bcd60e51b815260040161089a90614455565b612943612f51565b61294b612f03565b610c1b612f88565b600054610100900460ff1661297a5760405162461bcd60e51b815260040161089a90614455565b610c1b612f03565b600054610100900460ff166129a95760405162461bcd60e51b815260040161089a90614455565b610c1b612fc1565b60006129c56129c08789613e5f565b61201f565b506040516bffffffffffffffffffffffff1930606090811b821660208401524660348401528b811b82166054840152606883018490526001600160c01b031960c08a901b1660888401526090830188905286901b1660b0820152909150600090612aa1908490612a9b9060c401604051602081830303815290604052805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b90613001565b9050612aac816113c2565b612b045760405162461bcd60e51b8152602060048201526024808201527f4d696e74696e674d616e616765723a205349474e45525f49535f4e4f545f4d49604482015263272a22a960e11b606482015260840161089a565b42866001600160401b031611612b665760405162461bcd60e51b815260206004820152602160248201527f4d696e74696e674d616e616765723a20455850495245445f5349474e415455526044820152604560f81b606482015260840161089a565b505050505050505050565b6000612bb88a612b818a8c613e5f565b612b8b898b613e5f565b612b95888a613e5f565b60008f6001600160a01b0316612ba9611dba565b6001600160a01b03161461228b565b9050896001600160a01b0316612bcc611dba565b6001600160a01b0316827fa545b6fd3355e8d57f8c8147bafe740545bd3ea1f94bef2576a6d532a7c3b6058686604051612c199291909182526001600160a01b0316602082015260400190565b60405180910390a450505050505050505050565b612c35611e61565b6001600160a01b038116612c9a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089a565b610b7a81612702565b610c078282611dda565b7f893ef2ea16c023f61d4f55d3e6ee3fc3f2fbfd478461323dbc2fbf919047086e546000906001600160a01b03163303612cee575060331936013560601c90565b503390565b612cfd82826111ea565b610c0757612d15816001600160a01b03166014613025565b612d20836020613025565b604051602001612d319291906144a0565b60408051601f198184030181529082905262461bcd60e51b825261089a91600401613a81565b60008151600003612daa5760405162461bcd60e51b815260206004820152601b60248201527f4d696e74696e674d616e616765723a204c4142454c5f454d5054590000000000604482015260640161089a565b8282604051602001612dbc9190614515565b60405160208183030381529060405280519060200120604051602001612dec929190918252602082015260400190565b60408051601f1981840301815291905280516020909101209392505050565b60408051808201909152600080825260208201526040518060400160405280838152602001848660200151612e409190614531565b9052949350505050565b612e53816113dc565b15612ea05760405162461bcd60e51b815260206004820152601d60248201527f4d696e74696e674d616e616765723a20544f4b454e5f424c4f434b4544000000604482015260640161089a565b610b7a816131c0565b600080612ec060008460018651612040919061415f565b60ca549091506001600160a01b031615801590612efc5750807f0f4a10a4f46c288cea365fcf45cccf0e9d901b945b9829ccdb54c10dc3cb7a6f145b9392505050565b600054610100900460ff16610c1b5760405162461bcd60e51b815260040161089a90614455565b600054610100900460ff166114425760405162461bcd60e51b815260040161089a90614455565b600054610100900460ff16612f785760405162461bcd60e51b815260040161089a90614455565b610c1b612f83611dba565b612702565b600054610100900460ff16612faf5760405162461bcd60e51b815260040161089a90614455565b610c1b6000612fbc611dba565b612ca3565b600054610100900460ff16612fe85760405162461bcd60e51b815260040161089a90614455565b600080516020614572833981519152805460ff19169055565b60008060006130108585613244565b9150915061301d81613289565b509392505050565b60606000613034836002614544565b61303f906002614531565b6001600160401b038111156130565761305661385d565b6040519080825280601f01601f191660200182016040528015613080576020820181803683370190505b509050600360fc1b8160008151811061309b5761309b613ff7565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106130ca576130ca613ff7565b60200101906001600160f81b031916908160001a90535060006130ee846002614544565b6130f9906001614531565b90505b6001811115613171576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061312d5761312d613ff7565b1a60f81b82828151811061314357613143613ff7565b60200101906001600160f81b031916908160001a90535060049490941c9361316a816141a8565b90506130fc565b508315612efc5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161089a565b604080517f1ec047073e2c8b15660901dbfdb6e3ff6365bd699dd9f95dcc6eab5448bebd6960208201529081018290526001906131ff90606001611417565b805460ff19169115159190911790556040518181527f2ce5d9351b1d590d5a066db0d2dc7602d55f092506a83a7ee8c4d78ee357d75a9060200160405180910390a150565b600080825160410361327a5760208301516040840151606085015160001a61326e8782858561343f565b94509450505050613282565b506000905060025b9250929050565b600081600481111561329d5761329d61455b565b036132a55750565b60018160048111156132b9576132b961455b565b036133065760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161089a565b600281600481111561331a5761331a61455b565b036133675760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161089a565b600381600481111561337b5761337b61455b565b036133d35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161089a565b60048160048111156133e7576133e761455b565b03610b7a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161089a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156134765750600090506003613523565b8460ff16601b1415801561348e57508460ff16601c14155b1561349f5750600090506004613523565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156134f3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661351c57600060019250925050613523565b9150600090505b94509492505050565b508054613538906141bf565b6000825580601f10613548575050565b601f016020900490600052602060002090810190610b7a91905b808211156135765760008155600101613562565b5090565b60006020828403121561358c57600080fd5b81356001600160e01b031981168114612efc57600080fd5b6001600160401b0381168114610b7a57600080fd5b80356135c4816135a4565b919050565b600080604083850312156135dc57600080fd5b82356135e7816135a4565b946020939093013593505050565b60006020828403121561360757600080fd5b5035919050565b6001600160a01b0381168114610b7a57600080fd5b80356135c48161360e565b6000806040838503121561364157600080fd5b8235915060208301356136538161360e565b809150509250929050565b60006020828403121561367057600080fd5b8135612efc8161360e565b60008083601f84011261368d57600080fd5b5081356001600160401b038111156136a457600080fd5b6020830191508360208260051b850101111561328257600080fd5b8015158114610b7a57600080fd5b60008060008060008060008060a0898b0312156136e957600080fd5b88356136f48161360e565b975060208901356001600160401b038082111561371057600080fd5b61371c8c838d0161367b565b909950975060408b013591508082111561373557600080fd5b6137418c838d0161367b565b909750955060608b013591508082111561375a57600080fd5b506137678b828c0161367b565b909450925050608089013561377b816136bf565b809150509295985092959890939650565b600080600080600080600080600060c08a8c0312156137aa57600080fd5b89356137b58161360e565b985060208a01356001600160401b03808211156137d157600080fd5b6137dd8d838e0161367b565b909a50985060408c01359150808211156137f657600080fd5b6138028d838e0161367b565b909850965060608c013591508082111561381b57600080fd5b506138288c828d0161367b565b90955093505060808a013561383c816135a4565b915060a08a013561384c816136bf565b809150509295985092959850929598565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561389b5761389b61385d565b604052919050565b60006001600160401b038211156138bc576138bc61385d565b5060051b60200190565b600060208083850312156138d957600080fd5b82356001600160401b038111156138ef57600080fd5b8301601f8101851361390057600080fd5b803561391361390e826138a3565b613873565b81815260059190911b8201830190838101908783111561393257600080fd5b928401925b828410156126df57833561394a8161360e565b82529284019290840190613937565b60008083601f84011261396b57600080fd5b5081356001600160401b0381111561398257600080fd5b60208301915083602082850101111561328257600080fd5b600080602083850312156139ad57600080fd5b82356001600160401b038111156139c357600080fd5b6139cf85828601613959565b90969095509350505050565b6000806000604084860312156139f057600080fd5b83356001600160401b03811115613a0657600080fd5b613a1286828701613959565b9094509250506020840135613a26816136bf565b809150509250925092565b60005b83811015613a4c578181015183820152602001613a34565b50506000910152565b60008151808452613a6d816020860160208601613a31565b601f01601f19169290920160200192915050565b602081526000612efc6020830184613a55565b60008060008060008060c08789031215613aad57600080fd5b8635613ab88161360e565b95506020870135613ac88161360e565b94506040870135613ad88161360e565b93506060870135613ae88161360e565b92506080870135613af88161360e565b915060a0870135613b088161360e565b809150509295509295509295565b60008060208385031215613b2957600080fd5b82356001600160401b03811115613b3f57600080fd5b6139cf8582860161367b565b600080600080600080600080600080600060e08c8e031215613b6c57600080fd5b613b758c613623565b9a506001600160401b038060208e01351115613b9057600080fd5b613ba08e60208f01358f0161367b565b909b50995060408d0135811015613bb657600080fd5b613bc68e60408f01358f0161367b565b909950975060608d0135811015613bdc57600080fd5b613bec8e60608f01358f0161367b565b9097509550613bfd60808e016135b9565b945060a08d013593508060c08e01351115613c1757600080fd5b50613c288d60c08e01358e01613959565b81935080925050509295989b509295989b9093969950565b6000806000806000806000806000806000806101008d8f031215613c6357600080fd5b613c6c8d613623565b9b506001600160401b0360208e01351115613c8657600080fd5b613c968e60208f01358f0161367b565b909b5099506001600160401b0360408e01351115613cb357600080fd5b613cc38e60408f01358f0161367b565b90995097506001600160401b0360608e01351115613ce057600080fd5b613cf08e60608f01358f0161367b565b9097509550613d0160808e016135b9565b9450613d0f60a08e01613623565b935060c08d013592506001600160401b0360e08e01351115613d3057600080fd5b613d408e60e08f01358f01613959565b81935080925050509295989b509295989b509295989b565b60008060408385031215613d6b57600080fd5b8235613d768161360e565b915060208301356136538161360e565b6020808252818101527f4d696e746572526f6c653a2043414c4c45525f49535f4e4f545f4d494e544552604082015260600190565b600060208284031215613dcd57600080fd5b8151612efc816135a4565b60208082526023908201527f4d696e74696e674d616e616765723a20544f4b454e5f4e4f545f455850495241604082015262424c4560e81b606082015260800190565b60208082526024908201527f4d696e74696e674d616e616765723a2043414c4c45525f49535f4e4f545f4d49604082015263272a22a960e11b606082015260800190565b6000613e6d61390e846138a3565b80848252602080830192508560051b850136811115613e8b57600080fd5b855b81811015613f1d5780356001600160401b0380821115613ead5760008081fd5b90880190601f3681840112613ec25760008081fd5b823582811115613ed457613ed461385d565b613ee5818301601f19168801613873565b92508083523687828601011115613efe57600091508182fd5b8087850188850137600090830187015250865250938201938201613e8d565b50919695505050505050565b60208082526026908201527f4d696e74696e674d616e616765723a20535542444f4d41494e535f4e4f545f41604082015265131313d5d15160d21b606082015260800190565b60208082526022908201527f4d696e74696e674d616e616765723a20544c445f4e4f545f5245474953544552604082015261115160f21b606082015260800190565b60208082526026908201527f4d696e74696e674d616e616765723a20544c445f455850495241424c455f4d496040820152650a69a82a886960d31b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6020808252601d908201527f4d696e74696e674d616e616765723a204c4142454c5f494e56414c4944000000604082015260600190565b60208082526026908201527f4d696e74696e674d616e616765723a20544f4b454e5f4c4142454c5f50524f4860408201526512509255115160d21b606082015260800190565b60208082526010908201526f14185d5cd8589b194e8814105554d15160821b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000600182016140dc576140dc6140b4565b5060010190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6020808252602d908201527f4d696e74696e674d616e616765723a2043414c4c45525f49535f4e4f545f4f5760408201526c2722a92fa7a92fa6a4a72a22a960991b606082015260800190565b8181038181111561086d5761086d6140b4565b60006020828403121561418457600080fd5b8151612efc816136bf565b6000602082840312156141a157600080fd5b5051919050565b6000816141b7576141b76140b4565b506000190190565b600181811c908216806141d357607f821691505b60208210810361228557634e487b7160e01b600052602260045260246000fd5b60006020828403121561420557600080fd5b8151612efc8161360e565b600081518084526020808501808196508360051b8101915082860160005b85811015614258578284038952614246848351613a55565b9885019893509084019060010161422e565b5091979650505050505050565b6001600160a01b038616815260a06020820181905260009061428990830187614210565b828103604084015261429b8187614210565b905082810360608401526142af8186614210565b91505082151560808301529695505050505050565b600060018060a01b038086168352606060208401526142e66060840186613a55565b9150808416604084015250949350505050565b60608152600061430c6060830186614210565b828103602084015261431e8186614210565b915050826040830152949350505050565b601f821115610b6457600081815260208120601f850160051c810160208610156143565750805b601f850160051c820191505b8181101561131f57828155600101614362565b81516001600160401b0381111561438e5761438e61385d565b6143a28161439c84546141bf565b8461432f565b602080601f8311600181146143d757600084156143bf5750858301515b600019600386901b1c1916600185901b17855561131f565b600085815260208120601f198616915b82811015614406578886015182559484019460019091019084016143e7565b50858210156144245787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061444d6040830184613a55565b949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516144d8816017850160208801613a31565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614509816028840160208801613a31565b01602801949350505050565b60008251614527818460208701613a31565b9190910192915050565b8082018082111561086d5761086d6140b4565b808202811582820484141761086d5761086d6140b4565b634e487b7160e01b600052602160045260246000fdfe5496787fc1ebdfeba375028c1865f13fbb1d63c0caa356ccc1b29a80f3ebd6229f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a164736f6c6343000811000a",
  "deployedBytecode": "0x6080604052600436106102675760003560e01c806391d1485411610144578063cc2a9a5b116100b6578063d7db74c71161007a578063d7db74c714610778578063ec5273891461078b578063f2fde38b146107ab578063f5243bc4146107cb578063f940e385146107eb578063ffa1ad741461080b57600080fd5b8063cc2a9a5b146106d6578063cc2c3fc4146106f6578063d1f5692c14610716578063d539139314610736578063d547741f1461075857600080fd5b8063a3a3f7f611610108578063a3a3f7f6146105e9578063a3f4df7e14610609578063a849d65c14610656578063aa271e1a14610676578063b0aa98c714610696578063b9998a24146106b657600080fd5b806391d148541461055f578063983b2d561461057f578063986502751461059f57806399e0dd7c146105b4578063a217fddf146105d457600080fd5b80635b6fa8db116101dd578063634486da116101a1578063634486da146104d1578063715018a6146104e457806371e2a657146104f957806381c81d35146105195780638456cb591461052c5780638da5cb5b1461054157600080fd5b80635b6fa8db1461043c5780635c975abb1461045c5780635cd7e3b3146104715780635e22cd86146104915780635fc1964f146104b157600080fd5b80633092afd51161022f5780633092afd51461034157806336568abe146103615780633f41b614146103815780633f4ba83a146103b957806351cff8d9146103ce578063572b6c05146103ee57600080fd5b806301ffc9a71461026c5780631edb948e146102a157806320c5429b146102c3578063248a9ca3146102e35780632f2ff15d14610321575b600080fd5b34801561027857600080fd5b5061028c61028736600461357a565b61083c565b60405190151581526020015b60405180910390f35b3480156102ad57600080fd5b506102c16102bc3660046135c9565b610873565b005b3480156102cf57600080fd5b506102c16102de3660046135f5565b610a1c565b3480156102ef57600080fd5b506103136102fe3660046135f5565b60009081526097602052604090206001015490565b604051908152602001610298565b34801561032d57600080fd5b506102c161033c36600461362e565b610b3f565b34801561034d57600080fd5b506102c161035c36600461365e565b610b69565b34801561036d57600080fd5b506102c161037c36600461362e565b610b7d565b34801561038d57600080fd5b5060c9546103a1906001600160a01b031681565b6040516001600160a01b039091168152602001610298565b3480156103c557600080fd5b506102c1610c0b565b3480156103da57600080fd5b506102c16103e936600461365e565b610c1d565b3480156103fa57600080fd5b5061028c61040936600461365e565b7f893ef2ea16c023f61d4f55d3e6ee3fc3f2fbfd478461323dbc2fbf919047086e546001600160a01b0390811691161490565b34801561044857600080fd5b5060cc546103a1906001600160a01b031681565b34801561046857600080fd5b5061028c610cbd565b34801561047d57600080fd5b506102c161048c3660046136cd565b610cd3565b34801561049d57600080fd5b506102c16104ac36600461378c565b610e73565b3480156104bd57600080fd5b506102c16104cc3660046138c6565b610ff8565b6102c16104df36600461365e565b611040565b3480156104f057600080fd5b506102c1611103565b34801561050557600080fd5b506102c16105143660046138c6565b611115565b6102c161052736600461365e565b61115d565b34801561053857600080fd5b506102c16111da565b34801561054d57600080fd5b506033546001600160a01b03166103a1565b34801561056b57600080fd5b5061028c61057a36600461362e565b6111ea565b34801561058b57600080fd5b506102c161059a36600461365e565b611215565b3480156105ab57600080fd5b506102c1611226565b3480156105c057600080fd5b506102c16105cf36600461399a565b611240565b3480156105e057600080fd5b50610313600081565b3480156105f557600080fd5b506102c16106043660046139db565b611327565b34801561061557600080fd5b50610649604051806040016040528060148152602001732aa7299d1026b4b73a34b7339026b0b730b3b2b960611b81525081565b6040516102989190613a81565b34801561066257600080fd5b5060cb546103a1906001600160a01b031681565b34801561068257600080fd5b5061028c61069136600461365e565b6113c2565b3480156106a257600080fd5b5061028c6106b13660046135f5565b6113dc565b3480156106c257600080fd5b506102c16106d136600461365e565b61143a565b3480156106e257600080fd5b506102c16106f1366004613a94565b61147f565b34801561070257600080fd5b5060ca546103a1906001600160a01b031681565b34801561072257600080fd5b506102c1610731366004613b16565b611604565b34801561074257600080fd5b5061031360008051602061459283398151915281565b34801561076457600080fd5b506102c161077336600461362e565b6116bb565b6102c1610786366004613b4b565b6116e0565b34801561079757600080fd5b506102c16107a63660046135f5565b61190f565b3480156107b757600080fd5b506102c16107c636600461365e565b6119d3565b3480156107d757600080fd5b506102c16107e6366004613c40565b6119ef565b3480156107f757600080fd5b506102c1610806366004613d58565b611c3e565b34801561081757600080fd5b50610649604051806040016040528060058152602001640302e382e360dc1b81525081565b60006001600160e01b03198216637965db0b60e01b148061086d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61087e610691611dba565b6108a35760405162461bcd60e51b815260040161089a90613d86565b60405180910390fd5b60c95460405163baef73e960e01b8152600481018390526000916001600160a01b03169063baef73e990602401602060405180830381865afa1580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109119190613dbb565b9050806001600160401b031660000361093c5760405162461bcd60e51b815260040161089a90613dd8565b806001600160401b0316836001600160401b0316116109a95760405162461bcd60e51b815260206004820152602360248201527f4d696e74696e674d616e616765723a204558504952595f4e4f545f455854454e60448201526211115160ea1b606482015260840161089a565b60c954604051631fb9763760e11b81526001600160401b0385166004820152602481018490526001600160a01b0390911690633f72ec6e906044015b600060405180830381600087803b1580156109ff57600080fd5b505af1158015610a13573d6000803e3d6000fd5b50505050505050565b610a27610691611dba565b610a435760405162461bcd60e51b815260040161089a90613d86565b60c95460405163baef73e960e01b8152600481018390526001600160a01b039091169063baef73e990602401602060405180830381865afa158015610a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab09190613dbb565b6001600160401b0316600003610ad85760405162461bcd60e51b815260040161089a90613dd8565b60c954604051637eee288d60e01b8152306004820152602481018390526001600160a01b0390911690637eee288d90604401600060405180830381600087803b158015610b2457600080fd5b505af1158015610b38573d6000803e3d6000fd5b5050505050565b600082815260976020526040902060010154610b5a81611dc9565b610b648383611dda565b505050565b610b71611e61565b610b7a81611eda565b50565b610b85611dba565b6001600160a01b0316816001600160a01b031614610bfd5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161089a565b610c078282611ef2565b5050565b610c13611e61565b610c1b611f77565b565b610c25611e61565b6001600160a01b038116610c3857600080fd5b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610c70573d6000803e3d6000fd5b50604080516001600160a01b03841681526020810183905260008183015290517e1a143d5b175701cb3246058ffac3d63945192075a926ff73a19930f09d587a9181900360600190a15050565b6000805160206145728339815191525460ff1690565b610cde610691611dba565b610cfa5760405162461bcd60e51b815260040161089a90613e1b565b610d048688613e5f565b60008151600214610d275760405162461bcd60e51b815260040161089a90613f29565b6000610d328361201f565b915050610d3e81612077565b610d5a5760405162461bcd60e51b815260040161089a90613f6f565b600081815260cf602052604090205460ff1615156001600160401b038316151514610d975760405162461bcd60e51b815260040161089a90613fb1565b610dba83600081518110610dad57610dad613ff7565b602002602001015161209d565b610dd65760405162461bcd60e51b815260040161089a9061400d565b610df983600081518110610dec57610dec613ff7565b6020026020010151612201565b15610e165760405162461bcd60e51b815260040161089a90614044565b610e1e610cbd565b15610e3b5760405162461bcd60e51b815260040161089a9061408a565b610e658b610e498b8d613e5f565b610e538a8c613e5f565b610e5d898b613e5f565b60008961228b565b505050505050505050505050565b610e7e610691611dba565b610e9a5760405162461bcd60e51b815260040161089a90613e1b565b610ea48789613e5f565b828151600214610ec65760405162461bcd60e51b815260040161089a90613f29565b6000610ed18361201f565b915050610edd81612077565b610ef95760405162461bcd60e51b815260040161089a90613f6f565b600081815260cf602052604090205460ff1615156001600160401b038316151514610f365760405162461bcd60e51b815260040161089a90613fb1565b610f4c83600081518110610dad57610dad613ff7565b610f685760405162461bcd60e51b815260040161089a9061400d565b610f7e83600081518110610dec57610dec613ff7565b15610f9b5760405162461bcd60e51b815260040161089a90614044565b610fa3610cbd565b15610fc05760405162461bcd60e51b815260040161089a9061408a565b610fe98c610fce8c8e613e5f565b610fd88b8d613e5f565b610fe28a8c613e5f565b898961228b565b50505050505050505050505050565b611000611e61565b60005b8151811015610c075761102e82828151811061102157611021613ff7565b6020026020010151611eda565b80611038816140ca565b915050611003565b61104b610691611dba565b6110675760405162461bcd60e51b815260040161089a90613d86565b6001600160a01b0381166110bd5760405162461bcd60e51b815260206004820152601d60248201527f4d696e746572526f6c653a2052454345495645525f49535f454d505459000000604482015260640161089a565b6110c6816126ea565b6110ce611226565b6040516001600160a01b038216903480156108fc02916000818181858888f19350505050158015610c07573d6000803e3d6000fd5b61110b611e61565b610c1b6000612702565b61111d611e61565b60005b8151811015610c075761114b82828151811061113e5761113e613ff7565b60200260200101516126ea565b80611155816140ca565b915050611120565b611168610691611dba565b6111845760405162461bcd60e51b815260040161089a90613d86565b6001600160a01b0381166110c65760405162461bcd60e51b815260206004820152601d60248201527f4d696e746572526f6c653a2052454345495645525f49535f454d505459000000604482015260640161089a565b6111e2611e61565b610c1b612754565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61121d611e61565b610b7a816126ea565b610c1b60008051602061459283398151915261037c611dba565b611248611e61565b60c954604051632678375f60e21b81526001600160a01b03909116906399e0dd7c9061127a90859085906004016140e3565b600060405180830381600087803b15801561129457600080fd5b505af11580156112a8573d6000803e3d6000fd5b505060cb546001600160a01b0316159150610c0790505760cb54604051632678375f60e21b81526001600160a01b03909116906399e0dd7c906112f190859085906004016140e3565b600060405180830381600087803b15801561130b57600080fd5b505af115801561131f573d6000803e3d6000fd5b505050505050565b61132f611dba565b6001600160a01b031661134a6033546001600160a01b031690565b6001600160a01b031614806113655750611365610691611dba565b6113815760405162461bcd60e51b815260040161089a90614112565b610b6483838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508592506127bc915050565b600061086d600080516020614592833981519152836111ea565b604080517f1ec047073e2c8b15660901dbfdb6e3ff6365bd699dd9f95dcc6eab5448bebd696020820152908101829052600090611430906060015b6040516020818303038152906040528051906020012090565b5460ff1692915050565b611442611e61565b7f893ef2ea16c023f61d4f55d3e6ee3fc3f2fbfd478461323dbc2fbf919047086e80546001600160a01b0319166001600160a01b03831617905550565b600054610100900460ff161580801561149f5750600054600160ff909116105b806114b95750303b1580156114b9575060005460ff166001145b61151c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089a565b6000805460ff19166001179055801561153f576000805461ff0019166101001790555b60c980546001600160a01b03199081166001600160a01b038a81169190911790925560ca8054821689841617905560cb8054821688841617905560cc8054821687841617905560ce805490911691851691909117905561159e826128dc565b6115a6612914565b6115ae612953565b6115b6612982565b8015610a13576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050505050565b61160c611e61565b60005b81811015610b645760c9546001600160a01b0316635096023984848481811061163a5761163a613ff7565b905060200201602081019061164f919061365e565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801561169057600080fd5b505af11580156116a4573d6000803e3d6000fd5b5050505080806116b3906140ca565b91505061160f565b6000828152609760205260409020600101546116d681611dc9565b610b648383611ef2565b6116ea898b613e5f565b6000815160021461170d5760405162461bcd60e51b815260040161089a90613f29565b60006117188361201f565b91505061172481612077565b6117405760405162461bcd60e51b815260040161089a90613f6f565b600081815260cf602052604090205460ff1615156001600160401b03831615151461177d5760405162461bcd60e51b815260040161089a90613fb1565b61179383600081518110610dad57610dad613ff7565b6117af5760405162461bcd60e51b815260040161089a9061400d565b6117c583600081518110610dec57610dec613ff7565b156117e25760405162461bcd60e51b815260040161089a90614044565b6117ea610cbd565b156118075760405162461bcd60e51b815260040161089a9061408a565b61184d8e8e8e8a8a60008b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129b192505050565b8534101561189d5760405162461bcd60e51b815260206004820181905260248201527f4d696e74696e674d616e616765723a204e4f545f454e4f5547485f46554e4453604482015260640161089a565b6118af8e8e8e8e8e8e8e8d6000612b71565b853411156118ff576118bf611dba565b6001600160a01b03166108fc6118d5883461415f565b6040518115909202916000818181858888f193505050501580156118fd573d6000803e3d6000fd5b505b5050505050505050505050505050565b611917611dba565b6001600160a01b03166119326033546001600160a01b031690565b6001600160a01b0316148061194d575061194d610691611dba565b6119695760405162461bcd60e51b815260040161089a90614112565b61197281612077565b61198e5760405162461bcd60e51b815260040161089a90613f6f565b600081815260cd602052604081206119a59161352c565b60405181907f0aa1aff0f830e739d86baf0e6624d6763da02f7733575e0e463886cd062dea6a90600090a250565b6119db611e61565b6119e481612c2d565b610b7a600082612ca3565b6119f98a8c613e5f565b60008151600214611a1c5760405162461bcd60e51b815260040161089a90613f29565b6000611a278361201f565b915050611a3381612077565b611a4f5760405162461bcd60e51b815260040161089a90613f6f565b600081815260cf602052604090205460ff1615156001600160401b038316151514611a8c5760405162461bcd60e51b815260040161089a90613fb1565b611aa283600081518110610dad57610dad613ff7565b611abe5760405162461bcd60e51b815260040161089a9061400d565b611ad483600081518110610dec57610dec613ff7565b15611af15760405162461bcd60e51b815260040161089a90614044565b611af9610cbd565b15611b165760405162461bcd60e51b815260040161089a9061408a565b611b5b8f8f8f8b8a8c8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129b192505050565b866001600160a01b03166323b872dd611b72611dba565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018990526064016020604051808303816000875af1158015611bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be99190614172565b611c2d5760405162461bcd60e51b8152602060048201526015602482015274115490cc8c0e881313d5d7d31155915317d1905253605a1b604482015260640161089a565b6118fd8f8f8f8f8f8f8f8d8f612b71565b611c46611e61565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb1919061418f565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d289190614172565b611d6c5760405162461bcd60e51b8152602060048201526015602482015274115490cc8c0e881313d5d7d31155915317d1905253605a1b604482015260640161089a565b604080516001600160a01b0384811682526020820184905285168183015290517e1a143d5b175701cb3246058ffac3d63945192075a926ff73a19930f09d587a9181900360600190a1505050565b6000611dc4612cad565b905090565b610b7a81611dd5611dba565b612cf3565b611de482826111ea565b610c075760008281526097602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611e1d611dba565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611e69611dba565b6001600160a01b0316611e846033546001600160a01b031690565b6001600160a01b031614610c1b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161089a565b610b7a600080516020614592833981519152826116bb565b611efc82826111ea565b15610c075760008281526097602090815260408083206001600160a01b03851684529091529020805460ff19169055611f33611dba565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b611f7f610cbd565b611fc25760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881393d517d4105554d15160621b604482015260640161089a565b600080516020614572833981519152805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612002611dba565b6040516001600160a01b03909116815260200160405180910390a1565b805160009081905b80156120715782915061205d828561204060018561415f565b8151811061205057612050613ff7565b6020026020010151612d57565b925080612069816141a8565b915050612027565b50915091565b600081815260cd602052604081208054829190612093906141bf565b9050119050919050565b600081516000036120b057506000919050565b60208201805160f81c603081108015906120ce575060398160ff1611155b1580156120f0575060618160ff16101580156120ee5750607a8160ff1611155b155b156120ff575060009392505050565b8351600181111561216d576121218361211960018461415f565b015160f81c90565b915060308260ff161015801561213b575060398260ff1611155b15801561215d575060618260ff161015801561215b5750607a8260ff1611155b155b1561216d57506000949350505050565b60015b61217b60018361415f565b8110156121f5578381015160f81c9250602d83148015906121b1575060308360ff16101580156121af575060398360ff1611155b155b80156121d2575060618360ff16101580156121d05750607a8360ff1611155b155b156121e35750600095945050505050565b806121ed816140ca565b915050612170565b50600195945050505050565b6000806122358360408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b9050600a8160000151111561228557612260612254826000600a612e0b565b80516020909101512090565b7fb551e0305c8163b812374b8e78b577c77f226f6f10c5ad03e52699578fbc34b81491505b50919050565b6000806122978761201f565b5060c954604051634f558e7960e01b8152600481018390529192506001600160a01b031690634f558e7990602401602060405180830381865afa1580156122e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123069190614172565b80156123f7575060c9546040516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e90602401602060405180830381865afa158015612356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237a91906141f3565b6001600160a01b031614806123f7575060c95460405163d9548e5360e01b8152600481018390526001600160a01b039091169063d9548e5390602401602060405180830381865afa1580156123d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f79190614172565b156124e8576001600160401b038416156124795760c954604051631fb9763760e11b81526001600160401b0386166004820152602481018390526001600160a01b0390911690633f72ec6e90604401600060405180830381600087803b15801561246057600080fd5b505af1158015612474573d6000803e3d6000fd5b505050505b60c954604051630fb8df0360e11b81526001600160a01b0390911690631f71be06906124b1908b908b908b908b908a90600401614265565b600060405180830381600087803b1580156124cb57600080fd5b505af11580156124df573d6000803e3d6000fd5b505050506126df565b6124f181612e4a565b6124fa87612ea9565b8015612507575086516002145b801561251a57506001600160401b038416155b156125f85760ca5487516001600160a01b039091169063c36c2125908a908a9060009061254957612549613ff7565b602090810291909101015160cc546040516001600160e01b031960e086901b1681526125839392916001600160a01b0316906004016142c4565b600060405180830381600087803b15801561259d57600080fd5b505af11580156125b1573d6000803e3d6000fd5b505050506000865111156125f35760cc54604051633a0deb9d60e21b81526001600160a01b039091169063e837ae74906124b1908990899086906004016142f9565b6126df565b60c95460405163ba5d40b760e01b81526001600160a01b039091169063ba5d40b790612630908b908b908b908b908a90600401614265565b600060405180830381600087803b15801561264a57600080fd5b505af115801561265e573d6000803e3d6000fd5b505050506001600160401b038416156126df5760c954604051631fb9763760e11b81526001600160401b0386166004820152602481018390526001600160a01b0390911690633f72ec6e90604401600060405180830381600087803b1580156126c657600080fd5b505af11580156126da573d6000803e3d6000fd5b505050505b979650505050505050565b610b7a60008051602061459283398151915282612ca3565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61275c610cbd565b156127795760405162461bcd60e51b815260040161089a9061408a565b600080516020614572833981519152805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612002611dba565b60006127c9600084612d57565b600081815260cd602052604090209091506127e48482614375565b50600081815260cf602052604090819020805460ff19168415151790555181907f4fce6f6e172b04eaa80325d8e3b0180a34945000f3e214605039e8420fdf898090612831908690613a81565b60405180910390a260c954604051634f558e7960e01b8152600481018390526001600160a01b0390911690634f558e7990602401602060405180830381865afa158015612882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a69190614172565b610b645760c9546040516307befae360e51b81526001600160a01b039091169063f7df5c60906109e59084908790600401614434565b600054610100900460ff166129035760405162461bcd60e51b815260040161089a90614455565b61290b612f03565b610b7a81612f2a565b600054610100900460ff1661293b5760405162461bcd60e51b815260040161089a90614455565b612943612f51565b61294b612f03565b610c1b612f88565b600054610100900460ff1661297a5760405162461bcd60e51b815260040161089a90614455565b610c1b612f03565b600054610100900460ff166129a95760405162461bcd60e51b815260040161089a90614455565b610c1b612fc1565b60006129c56129c08789613e5f565b61201f565b506040516bffffffffffffffffffffffff1930606090811b821660208401524660348401528b811b82166054840152606883018490526001600160c01b031960c08a901b1660888401526090830188905286901b1660b0820152909150600090612aa1908490612a9b9060c401604051602081830303815290604052805190602001206040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b90613001565b9050612aac816113c2565b612b045760405162461bcd60e51b8152602060048201526024808201527f4d696e74696e674d616e616765723a205349474e45525f49535f4e4f545f4d49604482015263272a22a960e11b606482015260840161089a565b42866001600160401b031611612b665760405162461bcd60e51b815260206004820152602160248201527f4d696e74696e674d616e616765723a20455850495245445f5349474e415455526044820152604560f81b606482015260840161089a565b505050505050505050565b6000612bb88a612b818a8c613e5f565b612b8b898b613e5f565b612b95888a613e5f565b60008f6001600160a01b0316612ba9611dba565b6001600160a01b03161461228b565b9050896001600160a01b0316612bcc611dba565b6001600160a01b0316827fa545b6fd3355e8d57f8c8147bafe740545bd3ea1f94bef2576a6d532a7c3b6058686604051612c199291909182526001600160a01b0316602082015260400190565b60405180910390a450505050505050505050565b612c35611e61565b6001600160a01b038116612c9a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161089a565b610b7a81612702565b610c078282611dda565b7f893ef2ea16c023f61d4f55d3e6ee3fc3f2fbfd478461323dbc2fbf919047086e546000906001600160a01b03163303612cee575060331936013560601c90565b503390565b612cfd82826111ea565b610c0757612d15816001600160a01b03166014613025565b612d20836020613025565b604051602001612d319291906144a0565b60408051601f198184030181529082905262461bcd60e51b825261089a91600401613a81565b60008151600003612daa5760405162461bcd60e51b815260206004820152601b60248201527f4d696e74696e674d616e616765723a204c4142454c5f454d5054590000000000604482015260640161089a565b8282604051602001612dbc9190614515565b60405160208183030381529060405280519060200120604051602001612dec929190918252602082015260400190565b60408051601f1981840301815291905280516020909101209392505050565b60408051808201909152600080825260208201526040518060400160405280838152602001848660200151612e409190614531565b9052949350505050565b612e53816113dc565b15612ea05760405162461bcd60e51b815260206004820152601d60248201527f4d696e74696e674d616e616765723a20544f4b454e5f424c4f434b4544000000604482015260640161089a565b610b7a816131c0565b600080612ec060008460018651612040919061415f565b60ca549091506001600160a01b031615801590612efc5750807f0f4a10a4f46c288cea365fcf45cccf0e9d901b945b9829ccdb54c10dc3cb7a6f145b9392505050565b600054610100900460ff16610c1b5760405162461bcd60e51b815260040161089a90614455565b600054610100900460ff166114425760405162461bcd60e51b815260040161089a90614455565b600054610100900460ff16612f785760405162461bcd60e51b815260040161089a90614455565b610c1b612f83611dba565b612702565b600054610100900460ff16612faf5760405162461bcd60e51b815260040161089a90614455565b610c1b6000612fbc611dba565b612ca3565b600054610100900460ff16612fe85760405162461bcd60e51b815260040161089a90614455565b600080516020614572833981519152805460ff19169055565b60008060006130108585613244565b9150915061301d81613289565b509392505050565b60606000613034836002614544565b61303f906002614531565b6001600160401b038111156130565761305661385d565b6040519080825280601f01601f191660200182016040528015613080576020820181803683370190505b509050600360fc1b8160008151811061309b5761309b613ff7565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106130ca576130ca613ff7565b60200101906001600160f81b031916908160001a90535060006130ee846002614544565b6130f9906001614531565b90505b6001811115613171576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061312d5761312d613ff7565b1a60f81b82828151811061314357613143613ff7565b60200101906001600160f81b031916908160001a90535060049490941c9361316a816141a8565b90506130fc565b508315612efc5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161089a565b604080517f1ec047073e2c8b15660901dbfdb6e3ff6365bd699dd9f95dcc6eab5448bebd6960208201529081018290526001906131ff90606001611417565b805460ff19169115159190911790556040518181527f2ce5d9351b1d590d5a066db0d2dc7602d55f092506a83a7ee8c4d78ee357d75a9060200160405180910390a150565b600080825160410361327a5760208301516040840151606085015160001a61326e8782858561343f565b94509450505050613282565b506000905060025b9250929050565b600081600481111561329d5761329d61455b565b036132a55750565b60018160048111156132b9576132b961455b565b036133065760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161089a565b600281600481111561331a5761331a61455b565b036133675760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161089a565b600381600481111561337b5761337b61455b565b036133d35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161089a565b60048160048111156133e7576133e761455b565b03610b7a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161089a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156134765750600090506003613523565b8460ff16601b1415801561348e57508460ff16601c14155b1561349f5750600090506004613523565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156134f3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661351c57600060019250925050613523565b9150600090505b94509492505050565b508054613538906141bf565b6000825580601f10613548575050565b601f016020900490600052602060002090810190610b7a91905b808211156135765760008155600101613562565b5090565b60006020828403121561358c57600080fd5b81356001600160e01b031981168114612efc57600080fd5b6001600160401b0381168114610b7a57600080fd5b80356135c4816135a4565b919050565b600080604083850312156135dc57600080fd5b82356135e7816135a4565b946020939093013593505050565b60006020828403121561360757600080fd5b5035919050565b6001600160a01b0381168114610b7a57600080fd5b80356135c48161360e565b6000806040838503121561364157600080fd5b8235915060208301356136538161360e565b809150509250929050565b60006020828403121561367057600080fd5b8135612efc8161360e565b60008083601f84011261368d57600080fd5b5081356001600160401b038111156136a457600080fd5b6020830191508360208260051b850101111561328257600080fd5b8015158114610b7a57600080fd5b60008060008060008060008060a0898b0312156136e957600080fd5b88356136f48161360e565b975060208901356001600160401b038082111561371057600080fd5b61371c8c838d0161367b565b909950975060408b013591508082111561373557600080fd5b6137418c838d0161367b565b909750955060608b013591508082111561375a57600080fd5b506137678b828c0161367b565b909450925050608089013561377b816136bf565b809150509295985092959890939650565b600080600080600080600080600060c08a8c0312156137aa57600080fd5b89356137b58161360e565b985060208a01356001600160401b03808211156137d157600080fd5b6137dd8d838e0161367b565b909a50985060408c01359150808211156137f657600080fd5b6138028d838e0161367b565b909850965060608c013591508082111561381b57600080fd5b506138288c828d0161367b565b90955093505060808a013561383c816135a4565b915060a08a013561384c816136bf565b809150509295985092959850929598565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561389b5761389b61385d565b604052919050565b60006001600160401b038211156138bc576138bc61385d565b5060051b60200190565b600060208083850312156138d957600080fd5b82356001600160401b038111156138ef57600080fd5b8301601f8101851361390057600080fd5b803561391361390e826138a3565b613873565b81815260059190911b8201830190838101908783111561393257600080fd5b928401925b828410156126df57833561394a8161360e565b82529284019290840190613937565b60008083601f84011261396b57600080fd5b5081356001600160401b0381111561398257600080fd5b60208301915083602082850101111561328257600080fd5b600080602083850312156139ad57600080fd5b82356001600160401b038111156139c357600080fd5b6139cf85828601613959565b90969095509350505050565b6000806000604084860312156139f057600080fd5b83356001600160401b03811115613a0657600080fd5b613a1286828701613959565b9094509250506020840135613a26816136bf565b809150509250925092565b60005b83811015613a4c578181015183820152602001613a34565b50506000910152565b60008151808452613a6d816020860160208601613a31565b601f01601f19169290920160200192915050565b602081526000612efc6020830184613a55565b60008060008060008060c08789031215613aad57600080fd5b8635613ab88161360e565b95506020870135613ac88161360e565b94506040870135613ad88161360e565b93506060870135613ae88161360e565b92506080870135613af88161360e565b915060a0870135613b088161360e565b809150509295509295509295565b60008060208385031215613b2957600080fd5b82356001600160401b03811115613b3f57600080fd5b6139cf8582860161367b565b600080600080600080600080600080600060e08c8e031215613b6c57600080fd5b613b758c613623565b9a506001600160401b038060208e01351115613b9057600080fd5b613ba08e60208f01358f0161367b565b909b50995060408d0135811015613bb657600080fd5b613bc68e60408f01358f0161367b565b909950975060608d0135811015613bdc57600080fd5b613bec8e60608f01358f0161367b565b9097509550613bfd60808e016135b9565b945060a08d013593508060c08e01351115613c1757600080fd5b50613c288d60c08e01358e01613959565b81935080925050509295989b509295989b9093969950565b6000806000806000806000806000806000806101008d8f031215613c6357600080fd5b613c6c8d613623565b9b506001600160401b0360208e01351115613c8657600080fd5b613c968e60208f01358f0161367b565b909b5099506001600160401b0360408e01351115613cb357600080fd5b613cc38e60408f01358f0161367b565b90995097506001600160401b0360608e01351115613ce057600080fd5b613cf08e60608f01358f0161367b565b9097509550613d0160808e016135b9565b9450613d0f60a08e01613623565b935060c08d013592506001600160401b0360e08e01351115613d3057600080fd5b613d408e60e08f01358f01613959565b81935080925050509295989b509295989b509295989b565b60008060408385031215613d6b57600080fd5b8235613d768161360e565b915060208301356136538161360e565b6020808252818101527f4d696e746572526f6c653a2043414c4c45525f49535f4e4f545f4d494e544552604082015260600190565b600060208284031215613dcd57600080fd5b8151612efc816135a4565b60208082526023908201527f4d696e74696e674d616e616765723a20544f4b454e5f4e4f545f455850495241604082015262424c4560e81b606082015260800190565b60208082526024908201527f4d696e74696e674d616e616765723a2043414c4c45525f49535f4e4f545f4d49604082015263272a22a960e11b606082015260800190565b6000613e6d61390e846138a3565b80848252602080830192508560051b850136811115613e8b57600080fd5b855b81811015613f1d5780356001600160401b0380821115613ead5760008081fd5b90880190601f3681840112613ec25760008081fd5b823582811115613ed457613ed461385d565b613ee5818301601f19168801613873565b92508083523687828601011115613efe57600091508182fd5b8087850188850137600090830187015250865250938201938201613e8d565b50919695505050505050565b60208082526026908201527f4d696e74696e674d616e616765723a20535542444f4d41494e535f4e4f545f41604082015265131313d5d15160d21b606082015260800190565b60208082526022908201527f4d696e74696e674d616e616765723a20544c445f4e4f545f5245474953544552604082015261115160f21b606082015260800190565b60208082526026908201527f4d696e74696e674d616e616765723a20544c445f455850495241424c455f4d496040820152650a69a82a886960d31b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6020808252601d908201527f4d696e74696e674d616e616765723a204c4142454c5f494e56414c4944000000604082015260600190565b60208082526026908201527f4d696e74696e674d616e616765723a20544f4b454e5f4c4142454c5f50524f4860408201526512509255115160d21b606082015260800190565b60208082526010908201526f14185d5cd8589b194e8814105554d15160821b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000600182016140dc576140dc6140b4565b5060010190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6020808252602d908201527f4d696e74696e674d616e616765723a2043414c4c45525f49535f4e4f545f4f5760408201526c2722a92fa7a92fa6a4a72a22a960991b606082015260800190565b8181038181111561086d5761086d6140b4565b60006020828403121561418457600080fd5b8151612efc816136bf565b6000602082840312156141a157600080fd5b5051919050565b6000816141b7576141b76140b4565b506000190190565b600181811c908216806141d357607f821691505b60208210810361228557634e487b7160e01b600052602260045260246000fd5b60006020828403121561420557600080fd5b8151612efc8161360e565b600081518084526020808501808196508360051b8101915082860160005b85811015614258578284038952614246848351613a55565b9885019893509084019060010161422e565b5091979650505050505050565b6001600160a01b038616815260a06020820181905260009061428990830187614210565b828103604084015261429b8187614210565b905082810360608401526142af8186614210565b91505082151560808301529695505050505050565b600060018060a01b038086168352606060208401526142e66060840186613a55565b9150808416604084015250949350505050565b60608152600061430c6060830186614210565b828103602084015261431e8186614210565b915050826040830152949350505050565b601f821115610b6457600081815260208120601f850160051c810160208610156143565750805b601f850160051c820191505b8181101561131f57828155600101614362565b81516001600160401b0381111561438e5761438e61385d565b6143a28161439c84546141bf565b8461432f565b602080601f8311600181146143d757600084156143bf5750858301515b600019600386901b1c1916600185901b17855561131f565b600085815260208120601f198616915b82811015614406578886015182559484019460019091019084016143e7565b50858210156144245787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82815260406020820152600061444d6040830184613a55565b949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516144d8816017850160208801613a31565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614509816028840160208801613a31565b01602801949350505050565b60008251614527818460208701613a31565b9190910192915050565b8082018082111561086d5761086d6140b4565b808202811582820484141761086d5761086d6140b4565b634e487b7160e01b600052602160045260246000fdfe5496787fc1ebdfeba375028c1865f13fbb1d63c0caa356ccc1b29a80f3ebd6229f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a164736f6c6343000811000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
