{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC721Mock",
  "sourceName": "contracts/token/ERC721/mocks/ERC721Mock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "forwarderRegistry",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "universalForwarder",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "baseMetadataURI",
          "type": "string"
        }
      ],
      "name": "BaseMetadataURISet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "MinterAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "MinterRemoved",
      "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": true,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "addMinter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseMetadataURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "batchMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "batchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "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": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "msgData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "ret",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC20s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "contracts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC721s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceMinter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "baseMetadataURI_",
          "type": "string"
        }
      ],
      "name": "setBaseMetadataURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60c06040523480156200001157600080fd5b5060405162002b9238038062002b92833981810160405260408110156200003757600080fd5b508051602091820151604080518082018252600a8152694552433732314d6f636b60b01b818601528151808301835260048152634537323160e01b95810195909552600080546001600160a01b0319163390811782559251949593949293919286918691869182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606091821b811660a05291901b166080528151620000f490600190602085019062000173565b5080516200010a90600290602084019062000173565b5050506200011e816200012760201b60201c565b5050506200021f565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620001ab5760008555620001f6565b82601f10620001c657805160ff1916838001178555620001f6565b82800160010185558215620001f6579182015b82811115620001f6578251825591602001919060010190620001d9565b506200020492915062000208565b5090565b5b8082111562000204576000815560010162000209565b60805160601c60a05160601c61292b6200026760003980610f6f528061205252806125cb525080610faa528061201752806120aa52806125a1528061262c525061292b6000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80638832e6e3116100f9578063b88d4fde11610097578063c87b56dd11610071578063c87b56dd14610918578063e985e9c514610935578063f2fde38b14610963578063f3993d1114610989576101c4565b8063b88d4fde14610736578063c3666c36146107fc578063c4c2bfdc14610910576101c4565b8063983b2d56116100d3578063983b2d56146106b457806398650275146106da578063a22cb465146106e2578063aa271e1a14610710576101c4565b80638832e6e31461061f5780638da5cb5b146106a457806395d89b41146106ac576101c4565b80634684d7e9116101665780636352211e116101405780636352211e1461044657806370a082311461046357806373c8a9581461049b5780637e518ec8146105af576101c4565b80634684d7e914610398578063572b6c05146104185780635b2bd79e1461043e576101c4565b8063095ea7b3116101a2578063095ea7b3146102d257806323b872dd1461030057806340c10f191461033657806342842e0e14610362576101c4565b806301ffc9a7146101c957806306fdde031461021c578063081812fc14610299575b600080fd5b610208600480360360208110156101df57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610a45565b604080519115158252519081900360200190f35b610224610b78565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025e578181015183820152602001610246565b50505050905090810190601f16801561028b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b6600480360360208110156102af57600080fd5b5035610c0e565b604080516001600160a01b039092168252519081900360200190f35b6102fe600480360360408110156102e857600080fd5b506001600160a01b038135169060200135610cad565b005b6102fe6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610eb4565b6102fe6004803603604081101561034c57600080fd5b506001600160a01b038135169060200135610ed6565b6102fe6004803603606081101561037857600080fd5b506001600160a01b03813581169160208101359091169060400135610f06565b6102fe600480360360408110156103ae57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156103d957600080fd5b8201836020820111156103eb57600080fd5b8035906020019184602083028401116401000000008311171561040d57600080fd5b509092509050610f23565b6102086004803603602081101561042e57600080fd5b50356001600160a01b0316610f6b565b610224610fe4565b6102b66004803603602081101561045c57600080fd5b5035611072565b6104896004803603602081101561047957600080fd5b50356001600160a01b03166110dc565b60408051918252519081900360200190f35b6102fe600480360360608110156104b157600080fd5b8101906020810181356401000000008111156104cc57600080fd5b8201836020820111156104de57600080fd5b8035906020019184602083028401116401000000008311171561050057600080fd5b91939092909160208101903564010000000081111561051e57600080fd5b82018360208201111561053057600080fd5b8035906020019184602083028401116401000000008311171561055257600080fd5b91939092909160208101903564010000000081111561057057600080fd5b82018360208201111561058257600080fd5b803590602001918460208302840111640100000000831117156105a457600080fd5b509092509050611155565b6102fe600480360360208110156105c557600080fd5b8101906020810181356401000000008111156105e057600080fd5b8201836020820111156105f257600080fd5b8035906020019184600183028401116401000000008311171561061457600080fd5b509092509050611247565b6102fe6004803603606081101561063557600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561066557600080fd5b82018360208201111561067757600080fd5b8035906020019184600183028401116401000000008311171561069957600080fd5b5090925090506112c3565b6102b6611318565b610224611327565b6102fe600480360360208110156106ca57600080fd5b50356001600160a01b0316611385565b6102fe61139c565b6102fe600480360360408110156106f857600080fd5b506001600160a01b03813516906020013515156113fa565b6102086004803603602081101561072657600080fd5b50356001600160a01b03166114db565b6102fe6004803603608081101561074c57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561078757600080fd5b82018360208201111561079957600080fd5b803590602001918460018302840111640100000000831117156107bb57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506114f0945050505050565b6102fe6004803603606081101561081257600080fd5b81019060208101813564010000000081111561082d57600080fd5b82018360208201111561083f57600080fd5b8035906020019184602083028401116401000000008311171561086157600080fd5b91939092909160208101903564010000000081111561087f57600080fd5b82018360208201111561089157600080fd5b803590602001918460208302840111640100000000831117156108b357600080fd5b9193909290916020810190356401000000008111156108d157600080fd5b8201836020820111156108e357600080fd5b8035906020019184602083028401116401000000008311171561090557600080fd5b5090925090506114fe565b610224611646565b6102246004803603602081101561092e57600080fd5b5035611655565b6102086004803603604081101561094b57600080fd5b506001600160a01b03813581169160200135166116ca565b6102fe6004803603602081101561097957600080fd5b50356001600160a01b03166116f8565b6102fe6004803603606081101561099f57600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156109d357600080fd5b8201836020820111156109e557600080fd5b80359060200191846020830284011164010000000083111715610a0757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611769945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610ad857507fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000145b80610b2457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610b7057507fffffffff0000000000000000000000000000000000000000000000000000000082167ff3993d1100000000000000000000000000000000000000000000000000000000145b90505b919050565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c035780601f10610bd857610100808354040283529160200191610c03565b820191906000526020600020905b815481529060010190602001808311610be657829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b038116610c78576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b600160a01b811615610ca35750506000818152600660205260409020546001600160a01b0316610b73565b6000915050610b73565b60008181526004602052604090205480610d0e576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b806001600160a01b038481169082161415610d70576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b610d8181610d7c611875565b61187f565b610dd2576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b6001600160a01b038416610e0c57600160a01b821615610e075760008381526004602052604090206001600160a01b03821690555b610e6d565b600160a01b8217808314610e2c5760008481526004602052604090208190555b50600083815260066020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b610ed18383836040518060200160405280600081525060006118cd565b505050565b610ee6610ee1611875565b6119c5565b610f028282604051806020016040528060008152506000611a32565b5050565b610ed18383836040518060200160405280600081525060016118cd565b610f2e610ee1611875565b610ed183838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611afd92505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610b7057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6007805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561106a5780601f1061103f5761010080835404028352916020019161106a565b820191906000526020600020905b81548152906001019060200180831161104d57829003601f168201915b505050505081565b6000818152600460205260408120546001600160a01b038116610b70576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b60006001600160a01b038216611139576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526005602052604090205490565b611165611160611875565b611bee565b84838114801561117457508082145b6111c5576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461123d576112358888838181106111de57fe5b905060200201356001600160a01b03168585848181106111fa57fe5b9050602002013588888581811061120d57fe5b905060200201356001600160a01b03166001600160a01b0316611cb29092919063ffffffff16565b6001016111c8565b5050505050505050565b611252611160611875565b61125e6007838361282c565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b6112ce610ee1611875565b611312848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250611a32915050565b50505050565b6000546001600160a01b031690565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610c035780601f10610bd857610100808354040283529160200191610c03565b611390611160611875565b61139981611d32565b50565b60006113a6611875565b90506113b1816119c5565b6001600160a01b038116600081815260086020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b6000611404611875565b9050806001600160a01b0316836001600160a01b0316141561146d576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260036020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60086020526000908152604090205460ff1681565b6113128484848460016118cd565b611509611160611875565b84838114801561151857508082145b611569576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461123d5785858281811061157f57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a858181106115aa57fe5b905060200201356001600160a01b03168787868181106115c657fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561162357600080fd5b505af1158015611637573d6000803e3d6000fd5b5050505080600101905061156c565b6060611650611d7e565b905090565b6000818152600460205260409020546060906001600160a01b03166116c1576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b610b7082611dc2565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b611703611160611875565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b0382166117c4576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b60006117ce611875565b905060006117dc858361187f565b835190915060005b81811461185b5760008582815181106117f957fe5b60200260200101519050611811888883876001611e95565b80876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4506001016117e4565b50801561186d5761186d868683611fbc565b505050505050565b6000611650612007565b6000816001600160a01b0316836001600160a01b031614806118c657506001600160a01b0380841660009081526003602090815260408083209386168352929052205460ff165b9392505050565b6001600160a01b038416611928576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b6000611932611875565b90506000611940878361187f565b9050611950878787846000611e95565b84866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48280156119ab57506119ab866001600160a01b0316612167565b156119bc576119bc8787878761216d565b50505050505050565b6001600160a01b03811660009081526008602052604090205460ff16611399576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416611a8d576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b611a9984846000612307565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808015611aeb5750611aeb846001600160a01b0316612167565b1561131257611312600085858561216d565b6001600160a01b038216611b58576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b805160005b818114611bc9576000838281518110611b7257fe5b60200260200101519050611b8885826001612307565b60405181906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450600101611b5d565b506001600160a01b039092166000908152600560205260409020805490920190915550565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2757600080fd5b505afa158015611c3b573d6000803e3d6000fd5b505050506040513d6020811015611c5157600080fd5b50516001600160a01b03828116911614611399576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610ed19084906123a9565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6060611d88612593565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b60606007611dcf836126f6565b6040516020018083805460018160011615610100020316600290048015611e2d5780601f10611e0b576101008083540402835291820191611e2d565b820191906000526020600020905b815481529060010190602001808311611e19575b5050825160208401908083835b60208310611e595780518252601f199092019160209182019101611e3a565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6000838152600460205260409020546001600160a01b0386811690821614611f04576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b82611f9557600160a01b811615801590611f4457506000848152600660205260409020546001600160a01b0316611f39611875565b6001600160a01b0316145b611f95576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008481526004602052604090206001600160a01b03861690558161186d5761186d868660015b816001600160a01b0316836001600160a01b031614610ed1576001600160a01b0380841660009081526005602052604080822080548590039055918416815220805482019055505050565b60003381612013612805565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061208657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15612094579150610c0b9050565b6001600160a01b038216321480159061215357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561212657600080fd5b505afa15801561213a573d6000803e3d6000fd5b505050506040513d602081101561215057600080fd5b50515b15612161579150610c0b9050565b50905090565b3b151590565b7f150b7a02000000000000000000000000000000000000000000000000000000006001600160a01b03841663150b7a026121a5611875565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612218578181015183820152602001612200565b50505050905090810190601f1680156122455780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561226757600080fd5b505af115801561227b573d6000803e3d6000fd5b505050506040513d602081101561229157600080fd5b50517fffffffff000000000000000000000000000000000000000000000000000000001614611312576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220726566757365640000000000000000604482015290519081900360640190fd5b60008281526004602052604090205415612368576040805162461bcd60e51b815260206004820152601a60248201527f4552433732313a206578697374696e672f6275726e74204e4654000000000000604482015290519081900360640190fd5b60008281526004602052604090206001600160a01b038416905580610ed15750506001600160a01b0316600090815260056020526040902080546001019055565b816123bc6001600160a01b038216612167565b61240d576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b6020831061244a5780518252601f19909201916020918201910161242b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146124ac576040519150601f19603f3d011682016040523d82523d6000602084013e6124b1565b606091505b509150915081156125305780511561252b578080602001905160208110156124d857600080fd5b505161252b576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b61258c565b8051612583576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b366000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168114806125ff57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156126165761260c612811565b92509250506126f2565b6001600160a01b03811632148015906126dc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6612661612805565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156126af57600080fd5b505afa1580156126c3573d6000803e3d6000fd5b505050506040513d60208110156126d957600080fd5b50515b156126e95761260c612811565b60003692509250505b9091565b606081612737575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610b73565b8160005b811561274f57600101600a8204915061273b565b60008167ffffffffffffffff8111801561276857600080fd5b506040519080825280601f01601f191660200182016040528015612793576020820181803683370190505b50859350905060001982015b83156127fc57600a840660300160f81b828280600190039350815181106127c257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8404935061279f565b50949350505050565b60131936013560601c90565b36600061282460131983018284816128cd565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261286257600085556128a8565b82601f1061287b5782800160ff198235161785556128a8565b828001600101855582156128a8579182015b828111156128a857823582559160200191906001019061288d565b506128b49291506128b8565b5090565b5b808211156128b457600081556001016128b9565b600080858511156128dc578182fd5b838611156128e8578182fd5b505082019391909203915056fea2646970667358221220ba7c0fd3286e87a1c79db8b658b44ea870a898f1f1eba44c819a096790857c1b64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80638832e6e3116100f9578063b88d4fde11610097578063c87b56dd11610071578063c87b56dd14610918578063e985e9c514610935578063f2fde38b14610963578063f3993d1114610989576101c4565b8063b88d4fde14610736578063c3666c36146107fc578063c4c2bfdc14610910576101c4565b8063983b2d56116100d3578063983b2d56146106b457806398650275146106da578063a22cb465146106e2578063aa271e1a14610710576101c4565b80638832e6e31461061f5780638da5cb5b146106a457806395d89b41146106ac576101c4565b80634684d7e9116101665780636352211e116101405780636352211e1461044657806370a082311461046357806373c8a9581461049b5780637e518ec8146105af576101c4565b80634684d7e914610398578063572b6c05146104185780635b2bd79e1461043e576101c4565b8063095ea7b3116101a2578063095ea7b3146102d257806323b872dd1461030057806340c10f191461033657806342842e0e14610362576101c4565b806301ffc9a7146101c957806306fdde031461021c578063081812fc14610299575b600080fd5b610208600480360360208110156101df57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610a45565b604080519115158252519081900360200190f35b610224610b78565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025e578181015183820152602001610246565b50505050905090810190601f16801561028b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b6600480360360208110156102af57600080fd5b5035610c0e565b604080516001600160a01b039092168252519081900360200190f35b6102fe600480360360408110156102e857600080fd5b506001600160a01b038135169060200135610cad565b005b6102fe6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610eb4565b6102fe6004803603604081101561034c57600080fd5b506001600160a01b038135169060200135610ed6565b6102fe6004803603606081101561037857600080fd5b506001600160a01b03813581169160208101359091169060400135610f06565b6102fe600480360360408110156103ae57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156103d957600080fd5b8201836020820111156103eb57600080fd5b8035906020019184602083028401116401000000008311171561040d57600080fd5b509092509050610f23565b6102086004803603602081101561042e57600080fd5b50356001600160a01b0316610f6b565b610224610fe4565b6102b66004803603602081101561045c57600080fd5b5035611072565b6104896004803603602081101561047957600080fd5b50356001600160a01b03166110dc565b60408051918252519081900360200190f35b6102fe600480360360608110156104b157600080fd5b8101906020810181356401000000008111156104cc57600080fd5b8201836020820111156104de57600080fd5b8035906020019184602083028401116401000000008311171561050057600080fd5b91939092909160208101903564010000000081111561051e57600080fd5b82018360208201111561053057600080fd5b8035906020019184602083028401116401000000008311171561055257600080fd5b91939092909160208101903564010000000081111561057057600080fd5b82018360208201111561058257600080fd5b803590602001918460208302840111640100000000831117156105a457600080fd5b509092509050611155565b6102fe600480360360208110156105c557600080fd5b8101906020810181356401000000008111156105e057600080fd5b8201836020820111156105f257600080fd5b8035906020019184600183028401116401000000008311171561061457600080fd5b509092509050611247565b6102fe6004803603606081101561063557600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561066557600080fd5b82018360208201111561067757600080fd5b8035906020019184600183028401116401000000008311171561069957600080fd5b5090925090506112c3565b6102b6611318565b610224611327565b6102fe600480360360208110156106ca57600080fd5b50356001600160a01b0316611385565b6102fe61139c565b6102fe600480360360408110156106f857600080fd5b506001600160a01b03813516906020013515156113fa565b6102086004803603602081101561072657600080fd5b50356001600160a01b03166114db565b6102fe6004803603608081101561074c57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561078757600080fd5b82018360208201111561079957600080fd5b803590602001918460018302840111640100000000831117156107bb57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506114f0945050505050565b6102fe6004803603606081101561081257600080fd5b81019060208101813564010000000081111561082d57600080fd5b82018360208201111561083f57600080fd5b8035906020019184602083028401116401000000008311171561086157600080fd5b91939092909160208101903564010000000081111561087f57600080fd5b82018360208201111561089157600080fd5b803590602001918460208302840111640100000000831117156108b357600080fd5b9193909290916020810190356401000000008111156108d157600080fd5b8201836020820111156108e357600080fd5b8035906020019184602083028401116401000000008311171561090557600080fd5b5090925090506114fe565b610224611646565b6102246004803603602081101561092e57600080fd5b5035611655565b6102086004803603604081101561094b57600080fd5b506001600160a01b03813581169160200135166116ca565b6102fe6004803603602081101561097957600080fd5b50356001600160a01b03166116f8565b6102fe6004803603606081101561099f57600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156109d357600080fd5b8201836020820111156109e557600080fd5b80359060200191846020830284011164010000000083111715610a0757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611769945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610ad857507fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000145b80610b2457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610b7057507fffffffff0000000000000000000000000000000000000000000000000000000082167ff3993d1100000000000000000000000000000000000000000000000000000000145b90505b919050565b60018054604080516020601f60026000196101008789161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c035780601f10610bd857610100808354040283529160200191610c03565b820191906000526020600020905b815481529060010190602001808311610be657829003601f168201915b505050505090505b90565b6000818152600460205260408120546001600160a01b038116610c78576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b600160a01b811615610ca35750506000818152600660205260409020546001600160a01b0316610b73565b6000915050610b73565b60008181526004602052604090205480610d0e576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b806001600160a01b038481169082161415610d70576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b610d8181610d7c611875565b61187f565b610dd2576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b6001600160a01b038416610e0c57600160a01b821615610e075760008381526004602052604090206001600160a01b03821690555b610e6d565b600160a01b8217808314610e2c5760008481526004602052604090208190555b50600083815260066020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386161790555b82846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b610ed18383836040518060200160405280600081525060006118cd565b505050565b610ee6610ee1611875565b6119c5565b610f028282604051806020016040528060008152506000611a32565b5050565b610ed18383836040518060200160405280600081525060016118cd565b610f2e610ee1611875565b610ed183838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611afd92505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610b7057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316149050919050565b6007805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561106a5780601f1061103f5761010080835404028352916020019161106a565b820191906000526020600020905b81548152906001019060200180831161104d57829003601f168201915b505050505081565b6000818152600460205260408120546001600160a01b038116610b70576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b60006001600160a01b038216611139576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a207a65726f2061646472657373000000000000000000000000604482015290519081900360640190fd5b506001600160a01b031660009081526005602052604090205490565b611165611160611875565b611bee565b84838114801561117457508082145b6111c5576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461123d576112358888838181106111de57fe5b905060200201356001600160a01b03168585848181106111fa57fe5b9050602002013588888581811061120d57fe5b905060200201356001600160a01b03166001600160a01b0316611cb29092919063ffffffff16565b6001016111c8565b5050505050505050565b611252611160611875565b61125e6007838361282c565b507f04b1dc5c136a3ce9fded8db0ce3d3366c58764ec3a8e4c2b9e52e4ddfe5ebbf7828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b6112ce610ee1611875565b611312848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250611a32915050565b50505050565b6000546001600160a01b031690565b60028054604080516020601f6000196101006001871615020190941685900493840181900481028201810190925282815260609390929091830182828015610c035780601f10610bd857610100808354040283529160200191610c03565b611390611160611875565b61139981611d32565b50565b60006113a6611875565b90506113b1816119c5565b6001600160a01b038116600081815260086020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b6000611404611875565b9050806001600160a01b0316836001600160a01b0316141561146d576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a2073656c662d617070726f76616c0000000000000000000000604482015290519081900360640190fd5b6001600160a01b03818116600081815260036020908152604080832094881680845294825291829020805460ff1916871515908117909155825190815291517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319281900390910190a3505050565b60086020526000908152604090205460ff1681565b6113128484848460016118cd565b611509611160611875565b84838114801561151857508082145b611569576040805162461bcd60e51b815260206004820152601a60248201527f5265636f763a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60005b81811461123d5785858281811061157f57fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd308a8a858181106115aa57fe5b905060200201356001600160a01b03168787868181106115c657fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561162357600080fd5b505af1158015611637573d6000803e3d6000fd5b5050505080600101905061156c565b6060611650611d7e565b905090565b6000818152600460205260409020546060906001600160a01b03166116c1576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a206e6f6e2d6578697374696e67204e46540000000000000000604482015290519081900360640190fd5b610b7082611dc2565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b611703611160611875565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383811691821780845560405192939116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001600160a01b0382166117c4576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b60006117ce611875565b905060006117dc858361187f565b835190915060005b81811461185b5760008582815181106117f957fe5b60200260200101519050611811888883876001611e95565b80876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4506001016117e4565b50801561186d5761186d868683611fbc565b505050505050565b6000611650612007565b6000816001600160a01b0316836001600160a01b031614806118c657506001600160a01b0380841660009081526003602090815260408083209386168352929052205460ff165b9392505050565b6001600160a01b038416611928576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220746f207a65726f0000000000000000604482015290519081900360640190fd5b6000611932611875565b90506000611940878361187f565b9050611950878787846000611e95565b84866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48280156119ab57506119ab866001600160a01b0316612167565b156119bc576119bc8787878761216d565b50505050505050565b6001600160a01b03811660009081526008602052604090205460ff16611399576040805162461bcd60e51b815260206004820152601860248201527f4d696e746572526f6c653a206e6f742061204d696e7465720000000000000000604482015290519081900360640190fd5b6001600160a01b038416611a8d576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b611a9984846000612307565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808015611aeb5750611aeb846001600160a01b0316612167565b1561131257611312600085858561216d565b6001600160a01b038216611b58576040805162461bcd60e51b815260206004820152601460248201527f4552433732313a206d696e7420746f207a65726f000000000000000000000000604482015290519081900360640190fd5b805160005b818114611bc9576000838281518110611b7257fe5b60200260200101519050611b8885826001612307565b60405181906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450600101611b5d565b506001600160a01b039092166000908152600560205260409020805490920190915550565b306001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2757600080fd5b505afa158015611c3b573d6000803e3d6000fd5b505050506040513d6020811015611c5157600080fd5b50516001600160a01b03828116911614611399576040805162461bcd60e51b815260206004820152601660248201527f4f776e61626c653a206e6f7420746865206f776e657200000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610ed19084906123a9565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b6060611d88612593565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935050505090565b60606007611dcf836126f6565b6040516020018083805460018160011615610100020316600290048015611e2d5780601f10611e0b576101008083540402835291820191611e2d565b820191906000526020600020905b815481529060010190602001808311611e19575b5050825160208401908083835b60208310611e595780518252601f199092019160209182019101611e3a565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529050919050565b6000838152600460205260409020546001600160a01b0386811690821614611f04576040805162461bcd60e51b815260206004820152601560248201527f4552433732313a206e6f6e2d6f776e6564204e46540000000000000000000000604482015290519081900360640190fd5b82611f9557600160a01b811615801590611f4457506000848152600660205260409020546001600160a01b0316611f39611875565b6001600160a01b0316145b611f95576040805162461bcd60e51b815260206004820152601b60248201527f4552433732313a206e6f6e2d617070726f7665642073656e6465720000000000604482015290519081900360640190fd5b60008481526004602052604090206001600160a01b03861690558161186d5761186d868660015b816001600160a01b0316836001600160a01b031614610ed1576001600160a01b0380841660009081526005602052604080822080548590039055918416815220805482019055505050565b60003381612013612805565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061208657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15612094579150610c0b9050565b6001600160a01b038216321480159061215357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d682846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561212657600080fd5b505afa15801561213a573d6000803e3d6000fd5b505050506040513d602081101561215057600080fd5b50515b15612161579150610c0b9050565b50905090565b3b151590565b7f150b7a02000000000000000000000000000000000000000000000000000000006001600160a01b03841663150b7a026121a5611875565b8786866040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612218578181015183820152602001612200565b50505050905090810190601f1680156122455780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561226757600080fd5b505af115801561227b573d6000803e3d6000fd5b505050506040513d602081101561229157600080fd5b50517fffffffff000000000000000000000000000000000000000000000000000000001614611312576040805162461bcd60e51b815260206004820152601860248201527f4552433732313a207472616e7366657220726566757365640000000000000000604482015290519081900360640190fd5b60008281526004602052604090205415612368576040805162461bcd60e51b815260206004820152601a60248201527f4552433732313a206578697374696e672f6275726e74204e4654000000000000604482015290519081900360640190fd5b60008281526004602052604090206001600160a01b038416905580610ed15750506001600160a01b0316600090815260056020526040902080546001019055565b816123bc6001600160a01b038216612167565b61240d576040805162461bcd60e51b815260206004820152601a60248201527f4552433230577261707065723a206e6f6e2d636f6e7472616374000000000000604482015290519081900360640190fd5b600080826001600160a01b0316846040518082805190602001908083835b6020831061244a5780518252601f19909201916020918201910161242b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146124ac576040519150601f19603f3d011682016040523d82523d6000602084013e6124b1565b606091505b509150915081156125305780511561252b578080602001905160208110156124d857600080fd5b505161252b576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b61258c565b8051612583576040805162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a206f7065726174696f6e206661696c65640000604482015290519081900360640190fd5b80518082602001fd5b5050505050565b366000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168114806125ff57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b156126165761260c612811565b92509250506126f2565b6001600160a01b03811632148015906126dc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e60125d6612661612805565b836040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156126af57600080fd5b505afa1580156126c3573d6000803e3d6000fd5b505050506040513d60208110156126d957600080fd5b50515b156126e95761260c612811565b60003692509250505b9091565b606081612737575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610b73565b8160005b811561274f57600101600a8204915061273b565b60008167ffffffffffffffff8111801561276857600080fd5b506040519080825280601f01601f191660200182016040528015612793576020820181803683370190505b50859350905060001982015b83156127fc57600a840660300160f81b828280600190039350815181106127c257fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8404935061279f565b50949350505050565b60131936013560601c90565b36600061282460131983018284816128cd565b915091509091565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261286257600085556128a8565b82601f1061287b5782800160ff198235161785556128a8565b828001600101855582156128a8579182015b828111156128a857823582559160200191906001019061288d565b506128b49291506128b8565b5090565b5b808211156128b457600081556001016128b9565b600080858511156128dc578182fd5b838611156128e8578182fd5b505082019391909203915056fea2646970667358221220ba7c0fd3286e87a1c79db8b658b44ea870a898f1f1eba44c819a096790857c1b64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
