Overview ERC721
Total Supply:
0 NFTOMB

Holders:
45
Profile Summary
Blockchain:
C-Chain (43114)

Contract Source Code Verified (Partial Match)
Contract Name:
NFTombstone

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No

Created At:
Mon, 17 Oct 2022 20:19:44 GMT
NFTombstone.sol
NFTombstone.sol
NFTombstone.sol


Contract ABI
[
  {
    "inputs": [],
    "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": 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": [],
    "name": "ADMIN_WALLET",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "_mintFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "_numberMinted",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "contracts",
        "type": "address[]"
      }
    ],
    "name": "addPayableContracts",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "addressToTombstone",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenID",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_newTombstone",
        "type": "uint256"
      }
    ],
    "name": "changeActiveTombstone",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "dedCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "_contracts",
        "type": "address[]"
      },
      {
        "internalType": "uint256[][]",
        "name": "_ids",
        "type": "uint256[][]"
      }
    ],
    "name": "dedMany",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_contract",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      }
    ],
    "name": "dedOne",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "engraveCost",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_tokenID",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "newTokenUri",
        "type": "string"
      }
    ],
    "name": "engraveTombstone",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenID",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "hasBeenEngraved",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "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": "uint256",
        "name": "tokenAmount",
        "type": "uint256"
      }
    ],
    "name": "mint",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "mintActive",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "name": "onERC721Received",
    "outputs": [
      {
        "internalType": "bytes4",
        "name": "",
        "type": "bytes4"
      }
    ],
    "stateMutability": "pure",
    "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": [],
    "name": "payableAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "payableContracts",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_contract",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_tokenId",
        "type": "uint256"
      }
    ],
    "name": "raiseTheDed",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "rezCost",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "royaltyInfo",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenID",
        "type": "uint256"
      }
    ],
    "name": "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": [],
    "name": "secondsUntilMint",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "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": "baseURI_",
        "type": "string"
      }
    ],
    "name": "setBaseURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newEngraveCost",
        "type": "uint256"
      }
    ],
    "name": "setEngraveCost",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "setMintActive",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "mintFee_",
        "type": "uint256"
      }
    ],
    "name": "setMintFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newPayableCost",
        "type": "uint256"
      }
    ],
    "name": "setPayableAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "newRezCost",
        "type": "uint256"
      }
    ],
    "name": "setRezCost",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "startTime_",
        "type": "uint256"
      }
    ],
    "name": "setStartTime",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "_tokenURI",
        "type": "string"
      }
    ],
    "name": "setTokenURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_treasuryWallet",
        "type": "address"
      }
    ],
    "name": "setTreasuryWalletAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "walletMaxMint_",
        "type": "uint256"
      }
    ],
    "name": "setWalletMaxMint",
    "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"
  },
  {
    "inputs": [],
    "name": "treasuryWallet",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  }
]


Contract Creation Code
608060405260006009556040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600e908051906020019062000056929190620003b2565b506706f05b59d3b20000600f55662386f26fc100006010556509184e72a0006011557332bd2811fb91bc46756232a0b8c6b2902d7d8763601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730c6945e825fc3c80f0a1ea1d3e24d6854f7460d8601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200019257600080fd5b5061029a6040518060400160405280600c81526020017f4e46546f6d6273746f6e657300000000000000000000000000000000000000008152506040518060400160405280600681526020017f4e46544f4d42000000000000000000000000000000000000000000000000000081525081600090805190602001906200021a929190620003b2565b50806001908051906020019062000233929190620003b2565b50505060016007819055506200025e62000252620002e460201b60201c565b620002ec60201b60201c565b80600a819055505060405180606001604052806036815260200162006475603691396016908051906020019062000297929190620003b2565b5061029a60188190555063634f2ff0601a819055506000601760006101000a81548160ff021916908315150217905550604260198190555067093e1b78ac690000601b81905550620004c7565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620003c09062000491565b90600052602060002090601f016020900481019282620003e4576000855562000430565b82601f10620003ff57805160ff191683800117855562000430565b8280016001018555821562000430579182015b828111156200042f57825182559160200191906001019062000412565b5b5090506200043f919062000443565b5090565b5b808211156200045e57600081600090555060010162000444565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004aa57607f821691505b60208210811415620004c157620004c062000462565b5b50919050565b615f9e80620004d76000396000f3fe6080604052600436106102925760003560e01c806370a082311161015a578063ce7a697f116100c1578063ee1cc9441161007a578063ee1cc94414610a3e578063ef3ec5f614610a67578063f102c23514610aa4578063f2a08abb14610ae1578063f2fde38b14610b0c578063feaca37614610b3557610292565b8063ce7a697f1461092b578063ddff4a3b14610968578063e41ba2df14610984578063e6221091146109ad578063e985e9c5146109d8578063eddd0d9c14610a1557610292565b8063a22cb46511610113578063a22cb4651461081d578063b88d4fde14610846578063be7cb3ac1461086f578063c2cd4a0714610898578063c87b56dd146108c3578063cd4650961461090057610292565b806370a08231146107065780638406a0e0146107435780638da5cb5b1461076e57806391bb93891461079957806395d89b41146107c2578063a0712d68146107ed57610292565b80632a55205a116101fe5780634d388a98116101b75780634d388a98146105d257806355f804b31461060f5780635efd930b14610638578063612a624d146106615780636352211e1461069e5780636c0360eb146106db57610292565b80632a55205a146104c35780632ec4f07c146105015780633e0a322d1461052a57806342842e0e146105535780634626402b1461057c5780634634e639146105a757610292565b8063095ea7b311610250578063095ea7b3146103b7578063129b1ee5146103e0578063150b7a0214610409578063162094c41461044657806323b872dd1461046f57806325fd90f31461049857610292565b8062eb2f561461029757806301caa56b146102c057806301ffc9a7146102e957806303069edb1461032657806306fdde031461034f578063081812fc1461037a575b600080fd5b3480156102a357600080fd5b506102be60048036038101906102b99190613e58565b610b51565b005b3480156102cc57600080fd5b506102e760048036038101906102e29190613e58565b610bd7565b005b3480156102f557600080fd5b50610310600480360381019061030b9190613edd565b610c5d565b60405161031d9190613f25565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190613e58565b610cd7565b005b34801561035b57600080fd5b50610364610dfa565b6040516103719190613fd9565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c9190613e58565b610e8c565b6040516103ae919061403c565b60405180910390f35b3480156103c357600080fd5b506103de60048036038101906103d99190614083565b610f11565b005b3480156103ec57600080fd5b5061040760048036038101906104029190614128565b611029565b005b34801561041557600080fd5b50610430600480360381019061042b91906141cb565b61114b565b60405161043d9190614262565b60405180910390f35b34801561045257600080fd5b5061046d600480360381019061046891906143ad565b611160565b005b34801561047b57600080fd5b5061049660048036038101906104919190614409565b611232565b005b3480156104a457600080fd5b506104ad611292565b6040516104ba9190613f25565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e5919061445c565b6112b6565b6040516104f89291906144ab565b60405180910390f35b34801561050d57600080fd5b506105286004803603810190610523919061452a565b611302565b005b34801561053657600080fd5b50610551600480360381019061054c9190613e58565b61168c565b005b34801561055f57600080fd5b5061057a60048036038101906105759190614409565b611712565b005b34801561058857600080fd5b50610591611732565b60405161059e919061403c565b60405180910390f35b3480156105b357600080fd5b506105bc611758565b6040516105c991906145ab565b60405180910390f35b3480156105de57600080fd5b506105f960048036038101906105f491906145c6565b61175e565b60405161060691906145ab565b60405180910390f35b34801561061b57600080fd5b50610636600480360381019061063191906145f3565b611776565b005b34801561064457600080fd5b5061065f600480360381019061065a91906145c6565b61180c565b005b34801561066d57600080fd5b5061068860048036038101906106839190613e58565b6118cc565b60405161069591906145ab565b60405180910390f35b3480156106aa57600080fd5b506106c560048036038101906106c09190613e58565b6118e4565b6040516106d2919061403c565b60405180910390f35b3480156106e757600080fd5b506106f0611996565b6040516106fd9190613fd9565b60405180910390f35b34801561071257600080fd5b5061072d600480360381019061072891906145c6565b611a28565b60405161073a91906145ab565b60405180910390f35b34801561074f57600080fd5b50610758611ae0565b60405161076591906145ab565b60405180910390f35b34801561077a57600080fd5b50610783611b0b565b604051610790919061403c565b60405180910390f35b3480156107a557600080fd5b506107c060048036038101906107bb9190614083565b611b35565b005b3480156107ce57600080fd5b506107d7611def565b6040516107e49190613fd9565b60405180910390f35b61080760048036038101906108029190613e58565b611e81565b6040516108149190613f25565b60405180910390f35b34801561082957600080fd5b50610844600480360381019061083f9190614668565b612137565b005b34801561085257600080fd5b5061086d60048036038101906108689190614749565b61214d565b005b34801561087b57600080fd5b5061089660048036038101906108919190613e58565b6121af565b005b3480156108a457600080fd5b506108ad612235565b6040516108ba919061403c565b60405180910390f35b3480156108cf57600080fd5b506108ea60048036038101906108e59190613e58565b61225b565b6040516108f79190613fd9565b60405180910390f35b34801561090c57600080fd5b506109156122d4565b60405161092291906145ab565b60405180910390f35b34801561093757600080fd5b50610952600480360381019061094d9190613e58565b6122da565b60405161095f91906147e8565b60405180910390f35b610982600480360381019061097d91906143ad565b6122fa565b005b34801561099057600080fd5b506109ab60048036038101906109a69190613e58565b612545565b005b3480156109b957600080fd5b506109c26125cb565b6040516109cf91906145ab565b60405180910390f35b3480156109e457600080fd5b506109ff60048036038101906109fa9190614803565b6125d1565b604051610a0c9190613f25565b60405180910390f35b348015610a2157600080fd5b50610a3c6004803603810190610a379190613e58565b612665565b005b348015610a4a57600080fd5b50610a656004803603810190610a609190614843565b6126eb565b005b348015610a7357600080fd5b50610a8e6004803603810190610a8991906145c6565b612784565b604051610a9b91906147e8565b60405180910390f35b348015610ab057600080fd5b50610acb6004803603810190610ac691906145c6565b6127a4565b604051610ad891906145ab565b60405180910390f35b348015610aed57600080fd5b50610af66127bc565b604051610b0391906145ab565b60405180910390f35b348015610b1857600080fd5b50610b336004803603810190610b2e91906145c6565b6127c2565b005b610b4f6004803603810190610b4a9190614083565b6128ba565b005b610b59612aac565b73ffffffffffffffffffffffffffffffffffffffff16610b77611b0b565b73ffffffffffffffffffffffffffffffffffffffff1614610bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc4906148bc565b60405180910390fd5b8060108190555050565b610bdf612aac565b73ffffffffffffffffffffffffffffffffffffffff16610bfd611b0b565b73ffffffffffffffffffffffffffffffffffffffff1614610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a906148bc565b60405180910390fd5b80600f8190555050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610cd05750610ccf82612ab4565b5b9050919050565b60016012600083815260200190815260200160002060009054906101000a900460ff1660ff1614610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3490614928565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16610d5d826118e4565b73ffffffffffffffffffffffffffffffffffffffff1614610db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daa90614994565b60405180910390fd5b80601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b606060008054610e09906149e3565b80601f0160208091040260200160405190810160405280929190818152602001828054610e35906149e3565b8015610e825780601f10610e5757610100808354040283529160200191610e82565b820191906000526020600020905b815481529060010190602001808311610e6557829003601f168201915b5050505050905090565b6000610e9782612b96565b610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd90614a87565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610f1c826118e4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8490614b19565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610fac612aac565b73ffffffffffffffffffffffffffffffffffffffff161480610fdb5750610fda81610fd5612aac565b6125d1565b5b61101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101190614bab565b60405180910390fd5b6110248383612c02565b505050565b611031612aac565b73ffffffffffffffffffffffffffffffffffffffff1661104f611b0b565b73ffffffffffffffffffffffffffffffffffffffff16146110a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109c906148bc565b60405180910390fd5b60005b82829050811015611146576001601460008585858181106110cc576110cb614bcb565b5b90506020020160208101906110e191906145c6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550808061113e90614c29565b9150506110a8565b505050565b600063150b7a0260e01b905095945050505050565b611168612aac565b73ffffffffffffffffffffffffffffffffffffffff16611186611b0b565b73ffffffffffffffffffffffffffffffffffffffff16146111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d3906148bc565b60405180910390fd5b6111e582612b96565b611224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121b90614ce4565b60405180910390fd5b61122e8282612cbb565b5050565b61124361123d612aac565b82612d2f565b611282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127990614d76565b60405180910390fd5b61128d838383612e0d565b505050565b6000601760009054906101000a900460ff16806112b15750601a544210155b905090565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166127106101f4856112ed9190614d96565b6112f79190614e1f565b915091509250929050565b60026007541415611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f90614e9c565b60405180910390fd5b600260078190555060005b8484905081101561167d57600085858381811061137357611372614bcb565b5b905060200201602081019061138891906145c6565b905060005b84849050811015611668578173ffffffffffffffffffffffffffffffffffffffff166342842e0e33308888888181106113c9576113c8614bcb565b5b90506020028101906113db9190614ecb565b868181106113ec576113eb614bcb565b5b905060200201356040518463ffffffff1660e01b815260040161141193929190614f2e565b600060405180830381600087803b15801561142b57600080fd5b505af115801561143f573d6000803e3d6000fd5b505050506000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156114f657600160156000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815260200190815260200160002060008282546114ee9190614f65565b925050819055505b60016014600089898781811061150f5761150e614bcb565b5b905060200201602081019061152491906145c6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614801561157e57506011544710155b15611655576000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166011546040516115cd90614fec565b60006040518083038185875af1925050503d806000811461160a576040519150601f19603f3d011682016040523d82523d6000602084013e61160f565b606091505b5050905080611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a90615073565b60405180910390fd5b505b808061166090614c29565b91505061138d565b5050808061167590614c29565b915050611353565b50600160078190555050505050565b611694612aac565b73ffffffffffffffffffffffffffffffffffffffff166116b2611b0b565b73ffffffffffffffffffffffffffffffffffffffff1614611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff906148bc565b60405180910390fd5b80601a8190555050565b61172d8383836040518060200160405280600081525061214d565b505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b601c6020528060005260406000206000915090505481565b61177e612aac565b73ffffffffffffffffffffffffffffffffffffffff1661179c611b0b565b73ffffffffffffffffffffffffffffffffffffffff16146117f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e9906148bc565b60405180910390fd5b8060169080519060200190611808929190613d6b565b5050565b611814612aac565b73ffffffffffffffffffffffffffffffffffffffff16611832611b0b565b73ffffffffffffffffffffffffffffffffffffffff1614611888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187f906148bc565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60156020528060005260406000206000915090505481565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490615105565b60405180910390fd5b80915050919050565b6060601680546119a5906149e3565b80601f01602080910402602001604051908101604052809291908181526020018280546119d1906149e3565b8015611a1e5780601f106119f357610100808354040283529160200191611a1e565b820191906000526020600020905b815481529060010190602001808311611a0157829003601f168201915b5050505050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9090615197565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611aea611292565b611b035742601a54611afc91906151b7565b9050611b08565b600090505b90565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60026007541415611b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7290614e9c565b60405180910390fd5b600260078190555060008290508073ffffffffffffffffffffffffffffffffffffffff166342842e0e3330856040518463ffffffff1660e01b8152600401611bc593929190614f2e565b600060405180830381600087803b158015611bdf57600080fd5b505af1158015611bf3573d6000803e3d6000fd5b505050506000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611caa57600160156000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481526020019081526020016000206000828254611ca29190614f65565b925050819055505b6001601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16148015611d0b57506011544710155b15611de2576000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601154604051611d5a90614fec565b60006040518083038185875af1925050503d8060008114611d97576040519150601f19603f3d011682016040523d82523d6000602084013e611d9c565b606091505b5050905080611de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd790615073565b60405180910390fd5b505b5060016007819055505050565b606060018054611dfe906149e3565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2a906149e3565b8015611e775780601f10611e4c57610100808354040283529160200191611e77565b820191906000526020600020905b815481529060010190602001808311611e5a57829003601f168201915b5050505050905090565b6000611e8b611292565b611eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec190615237565b60405180910390fd5b60185482611ed8600d613074565b611ee29190614f65565b1115611f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1a906152a3565b60405180910390fd5b81601b54611f319190614d96565b341015611f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6a9061530f565b60405180910390fd5b601954821115611fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faf9061537b565b60405180910390fd5b60195482601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120069190614f65565b1115612047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203e906153e7565b60405180910390fd5b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156120af573d6000803e3d6000fd5b5060005b828110156120d7576120c433613082565b80806120cf90614c29565b9150506120b3565b5081601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121279190614f65565b9250508190555060019050919050565b612149612142612aac565b838361318a565b5050565b61215e612158612aac565b83612d2f565b61219d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219490614d76565b60405180910390fd5b6121a9848484846132f7565b50505050565b6121b7612aac565b73ffffffffffffffffffffffffffffffffffffffff166121d5611b0b565b73ffffffffffffffffffffffffffffffffffffffff161461222b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612222906148bc565b60405180910390fd5b8060118190555050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061226682612b96565b6122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229c90615479565b60405180910390fd5b6122ae82613353565b6040516020016122be91906154d5565b6040516020818303038152906040529050919050565b60105481565b60126020528060005260406000206000915054906101000a900460ff1681565b612303826118e4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612370576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236790615538565b60405180910390fd5b600f543410156123b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ac906155a4565b60405180910390fd5b60006012600084815260200190815260200160002060009054906101000a900460ff1660ff161461241b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241290615636565b60405180910390fd5b6124258282611160565b61242e826134a5565b81601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16346040516124ba90614fec565b60006040518083038185875af1925050503d80600081146124f7576040519150601f19603f3d011682016040523d82523d6000602084013e6124fc565b606091505b5050905080612540576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612537906156c8565b60405180910390fd5b505050565b61254d612aac565b73ffffffffffffffffffffffffffffffffffffffff1661256b611b0b565b73ffffffffffffffffffffffffffffffffffffffff16146125c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b8906148bc565b60405180910390fd5b8060198190555050565b60115481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61266d612aac565b73ffffffffffffffffffffffffffffffffffffffff1661268b611b0b565b73ffffffffffffffffffffffffffffffffffffffff16146126e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d8906148bc565b60405180910390fd5b80601b8190555050565b6126f3612aac565b73ffffffffffffffffffffffffffffffffffffffff16612711611b0b565b73ffffffffffffffffffffffffffffffffffffffff1614612767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275e906148bc565b60405180910390fd5b80601760006101000a81548160ff02191690831515021790555050565b60146020528060005260406000206000915054906101000a900460ff1681565b60136020528060005260406000206000915090505481565b601b5481565b6127ca612aac565b73ffffffffffffffffffffffffffffffffffffffff166127e8611b0b565b73ffffffffffffffffffffffffffffffffffffffff161461283e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612835906148bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a59061575a565b60405180910390fd5b6128b7816134d5565b50565b60026007541415612900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f790614e9c565b60405180910390fd5b6002600781905550601054341461294c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612943906157c6565b60405180910390fd5b6001601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016129a9919061403c565b602060405180830381865afa1580156129c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ea91906157fb565b1015612a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2290615874565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff166342842e0e3033856040518463ffffffff1660e01b8152600401612a6d93929190614f2e565b600060405180830381600087803b158015612a8757600080fd5b505af1158015612a9b573d6000803e3d6000fd5b505050505060016007819055505050565b600033905090565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612b7f57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612b8f5750612b8e8261359b565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612c75836118e4565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b612cc482612b96565b612d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfa90614ce4565b60405180910390fd5b80600660008481526020019081526020016000209080519060200190612d2a929190613d6b565b505050565b6000612d3a82612b96565b612d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7090615906565b60405180910390fd5b6000612d84836118e4565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612df357508373ffffffffffffffffffffffffffffffffffffffff16612ddb84610e8c565b73ffffffffffffffffffffffffffffffffffffffff16145b80612e045750612e0381856125d1565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612e2d826118e4565b73ffffffffffffffffffffffffffffffffffffffff1614612e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7a90615998565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eea90615a2a565b60405180910390fd5b612efe838383613605565b612f09600082612c02565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f5991906151b7565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fb09190614f65565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461306f8383836136a2565b505050565b600081600001549050919050565b600061308e600d613074565b60185461309b91906151b7565b44426040516020016130ae929190615a6b565b6040516020818303038152906040528051906020012060001c6130d19190615a97565b90506130dd600d6136a7565b6018546130ea600d613074565b111561312b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312290615b14565b60405180910390fd5b60006001613138836136bd565b6131429190614f65565b905061314e83826137c2565b61318581601661315d8461399c565b600e60405160200161317193929190615bc8565b604051602081830303815290604052612cbb565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156131f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131f090615c45565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516132ea9190613f25565b60405180910390a3505050565b613302848484612e0d565b61330e84848484613afd565b61334d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334490615cd7565b60405180910390fd5b50505050565b606061335e82612b96565b61339d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161339490615d69565b60405180910390fd5b60006006600084815260200190815260200160002080546133bd906149e3565b80601f01602080910402602001604051908101604052809291908181526020018280546133e9906149e3565b80156134365780601f1061340b57610100808354040283529160200191613436565b820191906000526020600020905b81548152906001019060200180831161341957829003601f168201915b505050505090506000613447613c85565b905060008151141561345d5781925050506134a0565b60008251111561349257808260405160200161347a929190615d89565b604051602081830303815290604052925050506134a0565b61349b84613c9c565b925050505b919050565b60016012600083815260200190815260200160002060006101000a81548160ff021916908360ff16021790555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b80601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415613692576000601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61369d838383613d43565b505050565b505050565b6001816000016000828254019250508190555050565b600080600954600a546136d091906151b7565b90506000806000600b60006001866136e891906151b7565b81526020019081526020016000205414156137115760018361370a91906151b7565b9150613734565b600b600060018561372291906151b7565b81526020019081526020016000205491505b6000600b60008781526020019081526020016000205414156137705784905081600b60008781526020019081526020016000208190555061379f565b600b600086815260200190815260200160002054905081600b6000878152602001908152602001600020819055505b600960008154809291906137b290614c29565b9190505550809350505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161382990615df9565b60405180910390fd5b61383b81612b96565b1561387b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161387290615e65565b60405180910390fd5b61388760008383613605565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546138d79190614f65565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613998600083836136a2565b5050565b606060008214156139e4576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613af8565b600082905060005b60008214613a165780806139ff90614c29565b915050600a82613a0f9190614e1f565b91506139ec565b60008167ffffffffffffffff811115613a3257613a31614282565b5b6040519080825280601f01601f191660200182016040528015613a645781602001600182028036833780820191505090505b5090505b60008514613af157600182613a7d91906151b7565b9150600a85613a8c9190615a97565b6030613a989190614f65565b60f81b818381518110613aae57613aad614bcb565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85613aea9190614e1f565b9450613a68565b8093505050505b919050565b6000613b1e8473ffffffffffffffffffffffffffffffffffffffff16613d48565b15613c78578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613b47612aac565b8786866040518563ffffffff1660e01b8152600401613b699493929190615eda565b6020604051808303816000875af1925050508015613ba557506040513d601f19601f82011682018060405250810190613ba29190615f3b565b60015b613c28573d8060008114613bd5576040519150601f19603f3d011682016040523d82523d6000602084013e613bda565b606091505b50600081511415613c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c1790615cd7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613c7d565b600190505b949350505050565b606060405180602001604052806000815250905090565b6060613ca782612b96565b613ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cdd90615479565b60405180910390fd5b6000613cf0613c85565b90506000815111613d105760405180602001604052806000815250613d3b565b80613d1a8461399c565b604051602001613d2b929190615d89565b6040516020818303038152906040525b915050919050565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054613d77906149e3565b90600052602060002090601f016020900481019282613d995760008555613de0565b82601f10613db257805160ff1916838001178555613de0565b82800160010185558215613de0579182015b82811115613ddf578251825591602001919060010190613dc4565b5b509050613ded9190613df1565b5090565b5b80821115613e0a576000816000905550600101613df2565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613e3581613e22565b8114613e4057600080fd5b50565b600081359050613e5281613e2c565b92915050565b600060208284031215613e6e57613e6d613e18565b5b6000613e7c84828501613e43565b91505092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613eba81613e85565b8114613ec557600080fd5b50565b600081359050613ed781613eb1565b92915050565b600060208284031215613ef357613ef2613e18565b5b6000613f0184828501613ec8565b91505092915050565b60008115159050919050565b613f1f81613f0a565b82525050565b6000602082019050613f3a6000830184613f16565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f7a578082015181840152602081019050613f5f565b83811115613f89576000848401525b50505050565b6000601f19601f8301169050919050565b6000613fab82613f40565b613fb58185613f4b565b9350613fc5818560208601613f5c565b613fce81613f8f565b840191505092915050565b60006020820190508181036000830152613ff38184613fa0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061402682613ffb565b9050919050565b6140368161401b565b82525050565b6000602082019050614051600083018461402d565b92915050565b6140608161401b565b811461406b57600080fd5b50565b60008135905061407d81614057565b92915050565b6000806040838503121561409a57614099613e18565b5b60006140a88582860161406e565b92505060206140b985828601613e43565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126140e8576140e76140c3565b5b8235905067ffffffffffffffff811115614105576141046140c8565b5b602083019150836020820283011115614121576141206140cd565b5b9250929050565b6000806020838503121561413f5761413e613e18565b5b600083013567ffffffffffffffff81111561415d5761415c613e1d565b5b614169858286016140d2565b92509250509250929050565b60008083601f84011261418b5761418a6140c3565b5b8235905067ffffffffffffffff8111156141a8576141a76140c8565b5b6020830191508360018202830111156141c4576141c36140cd565b5b9250929050565b6000806000806000608086880312156141e7576141e6613e18565b5b60006141f58882890161406e565b95505060206142068882890161406e565b945050604061421788828901613e43565b935050606086013567ffffffffffffffff81111561423857614237613e1d565b5b61424488828901614175565b92509250509295509295909350565b61425c81613e85565b82525050565b60006020820190506142776000830184614253565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6142ba82613f8f565b810181811067ffffffffffffffff821117156142d9576142d8614282565b5b80604052505050565b60006142ec613e0e565b90506142f882826142b1565b919050565b600067ffffffffffffffff82111561431857614317614282565b5b61432182613f8f565b9050602081019050919050565b82818337600083830152505050565b600061435061434b846142fd565b6142e2565b90508281526020810184848401111561436c5761436b61427d565b5b61437784828561432e565b509392505050565b600082601f830112614394576143936140c3565b5b81356143a484826020860161433d565b91505092915050565b600080604083850312156143c4576143c3613e18565b5b60006143d285828601613e43565b925050602083013567ffffffffffffffff8111156143f3576143f2613e1d565b5b6143ff8582860161437f565b9150509250929050565b60008060006060848603121561442257614421613e18565b5b60006144308682870161406e565b93505060206144418682870161406e565b925050604061445286828701613e43565b9150509250925092565b6000806040838503121561447357614472613e18565b5b600061448185828601613e43565b925050602061449285828601613e43565b9150509250929050565b6144a581613e22565b82525050565b60006040820190506144c0600083018561402d565b6144cd602083018461449c565b9392505050565b60008083601f8401126144ea576144e96140c3565b5b8235905067ffffffffffffffff811115614507576145066140c8565b5b602083019150836020820283011115614523576145226140cd565b5b9250929050565b6000806000806040858703121561454457614543613e18565b5b600085013567ffffffffffffffff81111561456257614561613e1d565b5b61456e878288016140d2565b9450945050602085013567ffffffffffffffff81111561459157614590613e1d565b5b61459d878288016144d4565b925092505092959194509250565b60006020820190506145c0600083018461449c565b92915050565b6000602082840312156145dc576145db613e18565b5b60006145ea8482850161406e565b91505092915050565b60006020828403121561460957614608613e18565b5b600082013567ffffffffffffffff81111561462757614626613e1d565b5b6146338482850161437f565b91505092915050565b61464581613f0a565b811461465057600080fd5b50565b6000813590506146628161463c565b92915050565b6000806040838503121561467f5761467e613e18565b5b600061468d8582860161406e565b925050602061469e85828601614653565b9150509250929050565b600067ffffffffffffffff8211156146c3576146c2614282565b5b6146cc82613f8f565b9050602081019050919050565b60006146ec6146e7846146a8565b6142e2565b9050828152602081018484840111156147085761470761427d565b5b61471384828561432e565b509392505050565b600082601f8301126147305761472f6140c3565b5b81356147408482602086016146d9565b91505092915050565b6000806000806080858703121561476357614762613e18565b5b60006147718782880161406e565b94505060206147828782880161406e565b935050604061479387828801613e43565b925050606085013567ffffffffffffffff8111156147b4576147b3613e1d565b5b6147c08782880161471b565b91505092959194509250565b600060ff82169050919050565b6147e2816147cc565b82525050565b60006020820190506147fd60008301846147d9565b92915050565b6000806040838503121561481a57614819613e18565b5b60006148288582860161406e565b92505060206148398582860161406e565b9150509250929050565b60006020828403121561485957614858613e18565b5b600061486784828501614653565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148a6602083613f4b565b91506148b182614870565b602082019050919050565b600060208201905081810360008301526148d581614899565b9050919050565b7f546f6d6273746f6e65206e6565647320746f20626520656e6772617665642100600082015250565b6000614912601f83613f4b565b915061491d826148dc565b602082019050919050565b6000602082019050818103600083015261494181614905565b9050919050565b7f546861742773206e6f7420796f757220746f6d6273746f6e6521000000000000600082015250565b600061497e601a83613f4b565b915061498982614948565b602082019050919050565b600060208201905081810360008301526149ad81614971565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806149fb57607f821691505b60208210811415614a0f57614a0e6149b4565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614a71602c83613f4b565b9150614a7c82614a15565b604082019050919050565b60006020820190508181036000830152614aa081614a64565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b03602183613f4b565b9150614b0e82614aa7565b604082019050919050565b60006020820190508181036000830152614b3281614af6565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000614b95603883613f4b565b9150614ba082614b39565b604082019050919050565b60006020820190508181036000830152614bc481614b88565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c3482613e22565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c6757614c66614bfa565b5b600182019050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000614cce602e83613f4b565b9150614cd982614c72565b604082019050919050565b60006020820190508181036000830152614cfd81614cc1565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000614d60603183613f4b565b9150614d6b82614d04565b604082019050919050565b60006020820190508181036000830152614d8f81614d53565b9050919050565b6000614da182613e22565b9150614dac83613e22565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614de557614de4614bfa565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e2a82613e22565b9150614e3583613e22565b925082614e4557614e44614df0565b5b828204905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000614e86601f83613f4b565b9150614e9182614e50565b602082019050919050565b60006020820190508181036000830152614eb581614e79565b9050919050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112614ee857614ee7614ebc565b5b80840192508235915067ffffffffffffffff821115614f0a57614f09614ec1565b5b602083019250602082023603831315614f2657614f25614ec6565b5b509250929050565b6000606082019050614f43600083018661402d565b614f50602083018561402d565b614f5d604083018461449c565b949350505050565b6000614f7082613e22565b9150614f7b83613e22565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614fb057614faf614bfa565b5b828201905092915050565b600081905092915050565b50565b6000614fd6600083614fbb565b9150614fe182614fc6565b600082019050919050565b6000614ff782614fc9565b9150819050919050565b7f41564158205472616e73616374696f6e3a204661696c656420746f207075726360008201527f6861736520646564204e46542100000000000000000000000000000000000000602082015250565b600061505d602d83613f4b565b915061506882615001565b604082019050919050565b6000602082019050818103600083015261508c81615050565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006150ef602983613f4b565b91506150fa82615093565b604082019050919050565b6000602082019050818103600083015261511e816150e2565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000615181602a83613f4b565b915061518c82615125565b604082019050919050565b600060208201905081810360008301526151b081615174565b9050919050565b60006151c282613e22565b91506151cd83613e22565b9250828210156151e0576151df614bfa565b5b828203905092915050565b7f4d696e74696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615221601683613f4b565b915061522c826151eb565b602082019050919050565b6000602082019050818103600083015261525081615214565b9050919050565b7f4d6178696d756d20537570706c79204d696e7465640000000000000000000000600082015250565b600061528d601583613f4b565b915061529882615257565b602082019050919050565b600060208201905081810360008301526152bc81615280565b9050919050565b7f4e6f7420656e6f75676820415641582073656e742e0000000000000000000000600082015250565b60006152f9601583613f4b565b9150615304826152c3565b602082019050919050565b60006020820190508181036000830152615328816152ec565b9050919050565b7f4d6178206c696d69742065786365656400000000000000000000000000000000600082015250565b6000615365601083613f4b565b91506153708261532f565b602082019050919050565b6000602082019050818103600083015261539481615358565b9050919050565b7f50757263686173652065786365656473206d617820616c6c6f77656400000000600082015250565b60006153d1601c83613f4b565b91506153dc8261539b565b602082019050919050565b60006020820190508181036000830152615400816153c4565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000615463602f83613f4b565b915061546e82615407565b604082019050919050565b6000602082019050818103600083015261549281615456565b9050919050565b600081905092915050565b60006154af82613f40565b6154b98185615499565b93506154c9818560208601613f5c565b80840191505092915050565b60006154e182846154a4565b915081905092915050565b7f596f7520646f6e2774206f776e2074686973204e465400000000000000000000600082015250565b6000615522601683613f4b565b915061552d826154ec565b602082019050919050565b6000602082019050818103600083015261555181615515565b9050919050565b7f496e73756666696369656e742066756e64730000000000000000000000000000600082015250565b600061558e601283613f4b565b915061559982615558565b602082019050919050565b600060208201905081810360008301526155bd81615581565b9050919050565b7f546f6d6273746f6e652068617320616c7265616479206265656e20456e67726160008201527f7665640000000000000000000000000000000000000000000000000000000000602082015250565b6000615620602383613f4b565b915061562b826155c4565b604082019050919050565b6000602082019050818103600083015261564f81615613565b9050919050565b7f41564158205472616e73616374696f6e3a204661696c656420746f207472616e60008201527f736665722066756e647320746f2074726561737572792077616c6c6574210000602082015250565b60006156b2603e83613f4b565b91506156bd82615656565b604082019050919050565b600060208201905081810360008301526156e1816156a5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615744602683613f4b565b915061574f826156e8565b604082019050919050565b6000602082019050818103600083015261577381615737565b9050919050565b7f496e73756666696369656e742066756e64732100000000000000000000000000600082015250565b60006157b0601383613f4b565b91506157bb8261577a565b602082019050919050565b600060208201905081810360008301526157df816157a3565b9050919050565b6000815190506157f581613e2c565b92915050565b60006020828403121561581157615810613e18565b5b600061581f848285016157e6565b91505092915050565b7f596f7520646f6e2774206f776e20612073706f74000000000000000000000000600082015250565b600061585e601483613f4b565b915061586982615828565b602082019050919050565b6000602082019050818103600083015261588d81615851565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006158f0602c83613f4b565b91506158fb82615894565b604082019050919050565b6000602082019050818103600083015261591f816158e3565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000615982602583613f4b565b915061598d82615926565b604082019050919050565b600060208201905081810360008301526159b181615975565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615a14602483613f4b565b9150615a1f826159b8565b604082019050919050565b60006020820190508181036000830152615a4381615a07565b9050919050565b6000819050919050565b615a65615a6082613e22565b615a4a565b82525050565b6000615a778285615a54565b602082019150615a878284615a54565b6020820191508190509392505050565b6000615aa282613e22565b9150615aad83613e22565b925082615abd57615abc614df0565b5b828206905092915050565b7f50726f6a6563742069732066696e6973686564206d696e74696e672e00000000600082015250565b6000615afe601c83613f4b565b9150615b0982615ac8565b602082019050919050565b60006020820190508181036000830152615b2d81615af1565b9050919050565b60008190508160005260206000209050919050565b60008154615b56816149e3565b615b608186615499565b94506001821660008114615b7b5760018114615b8c57615bbf565b60ff19831686528186019350615bbf565b615b9585615b34565b60005b83811015615bb757815481890152600182019150602081019050615b98565b838801955050505b50505092915050565b6000615bd48286615b49565b9150615be082856154a4565b9150615bec8284615b49565b9150819050949350505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000615c2f601983613f4b565b9150615c3a82615bf9565b602082019050919050565b60006020820190508181036000830152615c5e81615c22565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000615cc1603283613f4b565b9150615ccc82615c65565b604082019050919050565b60006020820190508181036000830152615cf081615cb4565b9050919050565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b6000615d53603183613f4b565b9150615d5e82615cf7565b604082019050919050565b60006020820190508181036000830152615d8281615d46565b9050919050565b6000615d9582856154a4565b9150615da182846154a4565b91508190509392505050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615de3602083613f4b565b9150615dee82615dad565b602082019050919050565b60006020820190508181036000830152615e1281615dd6565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000615e4f601c83613f4b565b9150615e5a82615e19565b602082019050919050565b60006020820190508181036000830152615e7e81615e42565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000615eac82615e85565b615eb68185615e90565b9350615ec6818560208601613f5c565b615ecf81613f8f565b840191505092915050565b6000608082019050615eef600083018761402d565b615efc602083018661402d565b615f09604083018561449c565b8181036060830152615f1b8184615ea1565b905095945050505050565b600081519050615f3581613eb1565b92915050565b600060208284031215615f5157615f50613e18565b5b6000615f5f84828501615f26565b9150509291505056fea264697066735822122031d4984d265e78140c4b99560039bfed9f6425eb5c474e286908e18db9afdc9f64736f6c634300080b0033697066733a2f2f516d5a56744450657863414137674369744a5a6a6b7559464e6566474337714e53377154374d6265717950436d422f