{
  "_format": "hh-sol-artifact-1",
  "contractName": "MarsbaseVesting",
  "sourceName": "contracts/MarsbaseVesting.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "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": 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"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "splitter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "oldVestingId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldAmount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "newVestingId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "leftAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "rightAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "fee",
          "type": "uint256"
        }
      ],
      "name": "VestingSplit",
      "type": "event"
    },
    {
      "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": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_fee",
          "type": "uint256"
        }
      ],
      "name": "calculateFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "fee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "rest",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "vestingStart",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "vestingEnd",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "vestingAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "calculateUnvestAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getFeeSplit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getFeeTransfer",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getVestingRecord",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "start",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "end",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialStart",
              "type": "uint256"
            }
          ],
          "internalType": "struct MarsbaseVesting.VestingRecord",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "getVestingsByOwner",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "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": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "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": "uint256",
          "name": "timePassed",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        }
      ],
      "name": "safeLerp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "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": "uint256",
          "name": "newFee",
          "type": "uint256"
        }
      ],
      "name": "setFeeSplit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newFee",
          "type": "uint256"
        }
      ],
      "name": "setFeeTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "setOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "leftAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "rightAmount",
          "type": "uint256"
        }
      ],
      "name": "split",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenOfOwnerByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "unvest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "unvest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "start",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "end",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "vest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "start",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "end",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "vest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526000600d556000600e553480156200001b57600080fd5b50604051620051fb380380620051fb833981810160405281019062000041919062000284565b6040518060400160405280601981526020017f4f5443204d617273626173652056657374656420546f6b656e000000000000008152506040518060400160405280600681526020017f764d4241534500000000000000000000000000000000000000000000000000008152508160009080519060200190620000c59291906200016a565b508060019080519060200190620000de9291906200016a565b50505080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200031a565b8280546200017890620002e5565b90600052602060002090601f0160209004810192826200019c5760008555620001e8565b82601f10620001b757805160ff1916838001178555620001e8565b82800160010185558215620001e8579182015b82811115620001e7578251825591602001919060010190620001ca565b5b509050620001f79190620001fb565b5090565b5b8082111562000216576000816000905550600101620001fc565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200024c826200021f565b9050919050565b6200025e816200023f565b81146200026a57600080fd5b50565b6000815190506200027e8162000253565b92915050565b6000602082840312156200029d576200029c6200021a565b5b6000620002ad848285016200026d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002fe57607f821691505b602082108103620003145762000313620002b6565b5b50919050565b614ed1806200032a6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f578063b7d88ae0116100a2578063cd962a0611610071578063cd962a0614610650578063e985e9c51461066c578063eda0be691461069c578063f3621c90146106ba576101f0565b8063b7d88ae0146105a4578063b88d4fde146105d4578063c87b56dd146105f0578063caf0887d14610620576101f0565b806395d89b41116100de57806395d89b411461051c5780639d7484a81461053a578063a22cb4651461056a578063a9c0a12514610586576101f0565b806370a082311461046e578063795e65ab1461049e578063893d20e8146104ce57806391d52567146104ec576101f0565b806323b872dd1161018757806342842e0e1161015657806342842e0e146103c25780634f6ccce7146103de5780636352211e1461040e57806363ece9431461043e576101f0565b806323b872dd146103155780632f745c591461033157806334e731221461036157806339e94f7514610392576101f0565b8063095ea7b3116101c3578063095ea7b31461028f5780630e0ab5b9146102ab57806313af4035146102db57806318160ddd146102f7576101f0565b806301ffc9a7146101f557806304387c8d1461022557806306fdde0314610241578063081812fc1461025f575b600080fd5b61020f600480360381019061020a9190613207565b6106ea565b60405161021c919061324f565b60405180910390f35b61023f600480360381019061023a91906132a0565b610764565b005b6102496107fe565b6040516102569190613366565b60405180910390f35b610279600480360381019061027491906132a0565b610890565b60405161028691906133c9565b60405180910390f35b6102a960048036038101906102a49190613410565b610915565b005b6102c560048036038101906102c09190613450565b610a2c565b6040516102d291906134c6565b60405180910390f35b6102f560048036038101906102f091906134e1565b610a6a565b005b6102ff610b3e565b60405161030c91906134c6565b60405180910390f35b61032f600480360381019061032a919061350e565b610b4b565b005b61034b60048036038101906103469190613410565b610bab565b60405161035891906134c6565b60405180910390f35b61037b60048036038101906103769190613561565b610c50565b6040516103899291906135a1565b60405180910390f35b6103ac60048036038101906103a791906135ca565b610c84565b6040516103b991906134c6565b60405180910390f35b6103dc60048036038101906103d7919061350e565b610fab565b005b6103f860048036038101906103f391906132a0565b610fcb565b60405161040591906134c6565b60405180910390f35b610428600480360381019061042391906132a0565b61103c565b60405161043591906133c9565b60405180910390f35b610458600480360381019061045391906134e1565b6110ed565b60405161046591906136ef565b60405180910390f35b610488600480360381019061048391906134e1565b6111f6565b60405161049591906134c6565b60405180910390f35b6104b860048036038101906104b391906132a0565b6112ad565b6040516104c59190613779565b60405180910390f35b6104d661130c565b6040516104e391906133c9565b60405180910390f35b610506600480360381019061050191906132a0565b611336565b60405161051391906134c6565b60405180910390f35b610524611437565b6040516105319190613366565b60405180910390f35b610554600480360381019061054f9190613794565b6114c9565b60405161056191906134c6565b60405180910390f35b610584600480360381019061057f9190613813565b61150c565b005b61058e611522565b60405161059b91906134c6565b60405180910390f35b6105be60048036038101906105b9919061399b565b61152c565b6040516105cb91906134c6565b60405180910390f35b6105ee60048036038101906105e99190613a99565b61158d565b005b61060a600480360381019061060591906132a0565b6115ef565b6040516106179190613366565b60405180910390f35b61063a60048036038101906106359190613794565b611696565b60405161064791906134c6565b60405180910390f35b61066a600480360381019061066591906132a0565b611ab1565b005b61068660048036038101906106819190613b1c565b611b4b565b604051610693919061324f565b60405180910390f35b6106a4611bdf565b6040516106b191906134c6565b60405180910390f35b6106d460048036038101906106cf9190613794565b611be9565b6040516106e191906134c6565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061075d575061075c82611c00565b5b9050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107eb90613ba8565b60405180910390fd5b80600e8190555050565b60606000805461080d90613bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461083990613bf7565b80156108865780601f1061085b57610100808354040283529160200191610886565b820191906000526020600020905b81548152906001019060200180831161086957829003601f168201915b5050505050905090565b600061089b82611ce2565b6108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190613c9a565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109208261103c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098790613d2c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166109af611d4e565b73ffffffffffffffffffffffffffffffffffffffff1614806109de57506109dd816109d8611d4e565b611b4b565b5b610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1490613dbe565b60405180910390fd5b610a278383611d56565b505050565b6000808585610a3b9190613e0d565b905060008684610a4b9190613e0d565b90506000610a5a8287856114c9565b9050809350505050949350505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af190613ba8565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600880549050905090565b610b5c610b56611d4e565b82611e0f565b610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290613eb3565b60405180910390fd5b610ba6838383611eed565b505050565b6000610bb6836111f6565b8210610bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bee90613f45565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600080620186a08385610c639190613f65565b610c6d9190613fee565b91508184610c7b9190613e0d565b90509250929050565b600082600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401610ce492919061401f565b602060405180830381865afa158015610d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d25919061405d565b1015610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d906140d6565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610db3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd7919061405d565b9050610de38382611ff8565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401610e42939291906140f6565b6020604051808303816000875af1158015610e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e859190614142565b50600042905063bbf81e0081610e9b919061416f565b871115610edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed490614211565b60405180910390fd5b63bbf81e0081610eed919061416f565b861115610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f269061427d565b60405180910390fd5b6040518060a0016040528088815260200187815260200186815260200186815260200188815250600c600084815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050508192505050949350505050565b610fc68383836040518060200160405280600081525061158d565b505050565b6000610fd5610b3e565b8210611016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100d9061430f565b60405180910390fd5b6008828154811061102a5761102961432f565b5b90600052602060002001549050919050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db906143d0565b60405180910390fd5b80915050919050565b606060006110fa836111f6565b90506000810361115657600067ffffffffffffffff81111561111f5761111e613858565b5b60405190808252806020026020018201604052801561114d5781602001602082028036833780820191505090505b509150506111f1565b60008167ffffffffffffffff81111561117257611171613858565b5b6040519080825280602002602001820160405280156111a05781602001602082028036833780820191505090505b50905060005b828110156111ea576111b88582610bab565b8282815181106111cb576111ca61432f565b5b60200260200101818152505080806111e2906143f0565b9150506111a6565b5080925050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d906144aa565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112b561316c565b600c60008381526020019081526020016000206040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250509050919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60003373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b815260040161138891906134c6565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906144df565b73ffffffffffffffffffffffffffffffffffffffff161461141f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141690614558565b60405180910390fd5b600042905061142f8333836121d1565b915050919050565b60606001805461144690613bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461147290613bf7565b80156114bf5780601f10611494576101008083540402835291602001916114bf565b820191906000526020600020905b8154815290600101906020018083116114a257829003601f168201915b5050505050905090565b60008184106114da57829050611505565b600084116114eb5760009050611505565b8184846114f89190613f65565b6115029190613fee565b90505b9392505050565b61151e611517611d4e565b8383612474565b5050565b6000600e54905090565b600080825190506000805b82811015611582576115628582815181106115555761155461432f565b5b6020026020010151611336565b8261156d919061416f565b9150808061157a906143f0565b915050611537565b508092505050919050565b61159e611598611d4e565b83611e0f565b6115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d490613eb3565b60405180910390fd5b6115e9848484846125e0565b50505050565b60606115fa82611ce2565b611639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611630906145ea565b60405180910390fd5b600061164361263c565b90506000815111611663576040518060200160405280600081525061168e565b8061166d84612653565b60405160200161167e929190614646565b6040516020818303038152906040525b915050919050565b60003373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16636352211e866040518263ffffffff1660e01b81526004016116e891906134c6565b602060405180830381865afa158015611705573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172991906144df565b73ffffffffffffffffffffffffffffffffffffffff161461177f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177690614558565b60405180910390fd5b6000600c60008681526020019081526020016000206040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050905060008411611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d906146b6565b60405180910390fd5b60008311611859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185090614722565b60405180910390fd5b8284611865919061416f565b8160400151146118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a19061478e565b60405180910390fd5b600080600d54111561191c576118c68260400151600d54610c50565b508091505080851161190d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611904906147fa565b60405180910390fd5b80856119199190613e0d565b94505b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198d919061405d565b90506119993382611ff8565b6040518060a0016040528084600001518152602001846020015181526020018681526020018681526020018460000151815250600c6000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015590505085600c60008981526020019081526020016000206002018190555085600c60008981526020019081526020016000206003018190555080873373ffffffffffffffffffffffffffffffffffffffff167fcbec30f3f612eea513363bc11396c0d7d2117bc8a87f8f376ebb781562df610a86604001518a8a88604051611a9c949392919061481a565b60405180910390a48093505050509392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3890613ba8565b60405180910390fd5b80600d8190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000600d54905090565b6000611bf784848433610c84565b90509392505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611ccb57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611cdb5750611cda826127b3565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611dc98361103c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611e1a82611ce2565b611e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e50906148d1565b60405180910390fd5b6000611e648361103c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611ed357508373ffffffffffffffffffffffffffffffffffffffff16611ebb84610890565b73ffffffffffffffffffffffffffffffffffffffff16145b80611ee45750611ee38185611b4b565b5b91505092915050565b611ef883838361281d565b6000600e540315611ff3573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611f6857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b611ff3576000611f90600c600084815260200190815260200160002060020154600e54610c50565b91505060008111611fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcd906140d6565b60405180910390fd5b80600c600084815260200190815260200160002060020181905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205e9061493d565b60405180910390fd5b61207081611ce2565b156120b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a7906149a9565b60405180910390fd5b6120bc60008383612a83565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461210c919061416f565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46121cd60008383612b95565b5050565b600080600c60008681526020019081526020016000206040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250509050600081604001511161226d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226490614a15565b60405180910390fd5b82816000015111156122b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ab90614a81565b60405180910390fd5b60006122ce82600001518360200151846040015187610a2c565b905060008111612313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230a90614aed565b60405180910390fd5b816040015181111561232757816040015190505b60008183604001516123399190613e0d565b90506000810361238f57600c60008881526020019081526020016000206000808201600090556001820160009055600282016000905560038201600090556004820160009055505061238a87612b9a565b6123c6565b80600c60008981526020019081526020016000206002018190555084600c6000898152602001908152602001600020600001819055505b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87846040518363ffffffff1660e01b8152600401612423929190614b0d565b6020604051808303816000875af1158015612442573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124669190614142565b508193505050509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d990614b82565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516125d3919061324f565b60405180910390a3505050565b6125eb848484611eed565b6125f784848484612cb7565b612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d90614c14565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606000820361269a576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506127ae565b600082905060005b600082146126cc5780806126b5906143f0565b915050600a826126c59190613fee565b91506126a2565b60008167ffffffffffffffff8111156126e8576126e7613858565b5b6040519080825280601f01601f19166020018201604052801561271a5781602001600182028036833780820191505090505b5090505b600085146127a7576001826127339190613e0d565b9150600a856127429190614c34565b603061274e919061416f565b60f81b8183815181106127645761276361432f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856127a09190613fee565b945061271e565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8273ffffffffffffffffffffffffffffffffffffffff1661283d8261103c565b73ffffffffffffffffffffffffffffffffffffffff1614612893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288a90614cd7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f990614d69565b60405180910390fd5b61290d838383612a83565b612918600082611d56565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129689190613e0d565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129bf919061416f565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a7e838383612b95565b505050565b612a8e838383612e3e565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ad057612acb81612e43565b612b0f565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612b0e57612b0d8382612e8c565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b5157612b4c81612ff9565b612b90565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612b8f57612b8e82826130ca565b5b5b505050565b505050565b6000612ba58261103c565b9050612bb381600084612a83565b612bbe600083611d56565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c0e9190613e0d565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612cb381600084612b95565b5050565b6000612cd88473ffffffffffffffffffffffffffffffffffffffff16613149565b15612e31578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d01611d4e565b8786866040518563ffffffff1660e01b8152600401612d239493929190614dde565b6020604051808303816000875af1925050508015612d5f57506040513d601f19601f82011682018060405250810190612d5c9190614e3f565b60015b612de1573d8060008114612d8f576040519150601f19603f3d011682016040523d82523d6000602084013e612d94565b606091505b506000815103612dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd090614c14565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612e36565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612e99846111f6565b612ea39190613e0d565b9050600060076000848152602001908152602001600020549050818114612f88576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061300d9190613e0d565b905060006009600084815260200190815260200160002054905060006008838154811061303d5761303c61432f565b5b90600052602060002001549050806008838154811061305f5761305e61432f565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806130ae576130ad614e6c565b5b6001900381819060005260206000200160009055905550505050565b60006130d5836111f6565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6131e4816131af565b81146131ef57600080fd5b50565b600081359050613201816131db565b92915050565b60006020828403121561321d5761321c6131a5565b5b600061322b848285016131f2565b91505092915050565b60008115159050919050565b61324981613234565b82525050565b60006020820190506132646000830184613240565b92915050565b6000819050919050565b61327d8161326a565b811461328857600080fd5b50565b60008135905061329a81613274565b92915050565b6000602082840312156132b6576132b56131a5565b5b60006132c48482850161328b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133075780820151818401526020810190506132ec565b83811115613316576000848401525b50505050565b6000601f19601f8301169050919050565b6000613338826132cd565b61334281856132d8565b93506133528185602086016132e9565b61335b8161331c565b840191505092915050565b60006020820190508181036000830152613380818461332d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133b382613388565b9050919050565b6133c3816133a8565b82525050565b60006020820190506133de60008301846133ba565b92915050565b6133ed816133a8565b81146133f857600080fd5b50565b60008135905061340a816133e4565b92915050565b60008060408385031215613427576134266131a5565b5b6000613435858286016133fb565b92505060206134468582860161328b565b9150509250929050565b6000806000806080858703121561346a576134696131a5565b5b60006134788782880161328b565b94505060206134898782880161328b565b935050604061349a8782880161328b565b92505060606134ab8782880161328b565b91505092959194509250565b6134c08161326a565b82525050565b60006020820190506134db60008301846134b7565b92915050565b6000602082840312156134f7576134f66131a5565b5b6000613505848285016133fb565b91505092915050565b600080600060608486031215613527576135266131a5565b5b6000613535868287016133fb565b9350506020613546868287016133fb565b92505060406135578682870161328b565b9150509250925092565b60008060408385031215613578576135776131a5565b5b60006135868582860161328b565b92505060206135978582860161328b565b9150509250929050565b60006040820190506135b660008301856134b7565b6135c360208301846134b7565b9392505050565b600080600080608085870312156135e4576135e36131a5565b5b60006135f28782880161328b565b94505060206136038782880161328b565b93505060406136148782880161328b565b9250506060613625878288016133fb565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136668161326a565b82525050565b6000613678838361365d565b60208301905092915050565b6000602082019050919050565b600061369c82613631565b6136a6818561363c565b93506136b18361364d565b8060005b838110156136e25781516136c9888261366c565b97506136d483613684565b9250506001810190506136b5565b5085935050505092915050565b600060208201905081810360008301526137098184613691565b905092915050565b60a082016000820151613727600085018261365d565b50602082015161373a602085018261365d565b50604082015161374d604085018261365d565b506060820151613760606085018261365d565b506080820151613773608085018261365d565b50505050565b600060a08201905061378e6000830184613711565b92915050565b6000806000606084860312156137ad576137ac6131a5565b5b60006137bb8682870161328b565b93505060206137cc8682870161328b565b92505060406137dd8682870161328b565b9150509250925092565b6137f081613234565b81146137fb57600080fd5b50565b60008135905061380d816137e7565b92915050565b6000806040838503121561382a576138296131a5565b5b6000613838858286016133fb565b9250506020613849858286016137fe565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6138908261331c565b810181811067ffffffffffffffff821117156138af576138ae613858565b5b80604052505050565b60006138c261319b565b90506138ce8282613887565b919050565b600067ffffffffffffffff8211156138ee576138ed613858565b5b602082029050602081019050919050565b600080fd5b6000613917613912846138d3565b6138b8565b9050808382526020820190506020840283018581111561393a576139396138ff565b5b835b81811015613963578061394f888261328b565b84526020840193505060208101905061393c565b5050509392505050565b600082601f83011261398257613981613853565b5b8135613992848260208601613904565b91505092915050565b6000602082840312156139b1576139b06131a5565b5b600082013567ffffffffffffffff8111156139cf576139ce6131aa565b5b6139db8482850161396d565b91505092915050565b600080fd5b600067ffffffffffffffff821115613a0457613a03613858565b5b613a0d8261331c565b9050602081019050919050565b82818337600083830152505050565b6000613a3c613a37846139e9565b6138b8565b905082815260208101848484011115613a5857613a576139e4565b5b613a63848285613a1a565b509392505050565b600082601f830112613a8057613a7f613853565b5b8135613a90848260208601613a29565b91505092915050565b60008060008060808587031215613ab357613ab26131a5565b5b6000613ac1878288016133fb565b9450506020613ad2878288016133fb565b9350506040613ae38782880161328b565b925050606085013567ffffffffffffffff811115613b0457613b036131aa565b5b613b1087828801613a6b565b91505092959194509250565b60008060408385031215613b3357613b326131a5565b5b6000613b41858286016133fb565b9250506020613b52858286016133fb565b9150509250929050565b7f4f6e6c79206f776e657200000000000000000000000000000000000000000000600082015250565b6000613b92600a836132d8565b9150613b9d82613b5c565b602082019050919050565b60006020820190508181036000830152613bc181613b85565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c0f57607f821691505b602082108103613c2257613c21613bc8565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613c84602c836132d8565b9150613c8f82613c28565b604082019050919050565b60006020820190508181036000830152613cb381613c77565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d166021836132d8565b9150613d2182613cba565b604082019050919050565b60006020820190508181036000830152613d4581613d09565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000613da86038836132d8565b9150613db382613d4c565b604082019050919050565b60006020820190508181036000830152613dd781613d9b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613e188261326a565b9150613e238361326a565b925082821015613e3657613e35613dde565b5b828203905092915050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613e9d6031836132d8565b9150613ea882613e41565b604082019050919050565b60006020820190508181036000830152613ecc81613e90565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000613f2f602b836132d8565b9150613f3a82613ed3565b604082019050919050565b60006020820190508181036000830152613f5e81613f22565b9050919050565b6000613f708261326a565b9150613f7b8361326a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613fb457613fb3613dde565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ff98261326a565b91506140048361326a565b92508261401457614013613fbf565b5b828204905092915050565b600060408201905061403460008301856133ba565b61404160208301846133ba565b9392505050565b60008151905061405781613274565b92915050565b600060208284031215614073576140726131a5565b5b600061408184828501614048565b91505092915050565b7f6e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b60006140c06011836132d8565b91506140cb8261408a565b602082019050919050565b600060208201905081810360008301526140ef816140b3565b9050919050565b600060608201905061410b60008301866133ba565b61411860208301856133ba565b61412560408301846134b7565b949350505050565b60008151905061413c816137e7565b92915050565b600060208284031215614158576141576131a5565b5b60006141668482850161412d565b91505092915050565b600061417a8261326a565b91506141858361326a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156141ba576141b9613dde565b5b828201905092915050565b7f7374617274206461746520697320746f6f206661720000000000000000000000600082015250565b60006141fb6015836132d8565b9150614206826141c5565b602082019050919050565b6000602082019050818103600083015261422a816141ee565b9050919050565b7f656e64206461746520697320746f6f2066617200000000000000000000000000600082015250565b60006142676013836132d8565b915061427282614231565b602082019050919050565b600060208201905081810360008301526142968161425a565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006142f9602c836132d8565b91506143048261429d565b604082019050919050565b60006020820190508181036000830152614328816142ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006143ba6029836132d8565b91506143c58261435e565b604082019050919050565b600060208201905081810360008301526143e9816143ad565b9050919050565b60006143fb8261326a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361442d5761442c613dde565b5b600182019050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000614494602a836132d8565b915061449f82614438565b604082019050919050565b600060208201905081810360008301526144c381614487565b9050919050565b6000815190506144d9816133e4565b92915050565b6000602082840312156144f5576144f46131a5565b5b6000614503848285016144ca565b91505092915050565b7f546f6b656e206973206e6f74206f776e656420627920796f7500000000000000600082015250565b60006145426019836132d8565b915061454d8261450c565b602082019050919050565b6000602082019050818103600083015261457181614535565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006145d4602f836132d8565b91506145df82614578565b604082019050919050565b60006020820190508181036000830152614603816145c7565b9050919050565b600081905092915050565b6000614620826132cd565b61462a818561460a565b935061463a8185602086016132e9565b80840191505092915050565b60006146528285614615565b915061465e8284614615565b91508190509392505050565b7f4c65667420616d6f756e74206d75737420626520677420300000000000000000600082015250565b60006146a06018836132d8565b91506146ab8261466a565b602082019050919050565b600060208201905081810360008301526146cf81614693565b9050919050565b7f526967687420616d6f756e74206d757374206265206774203000000000000000600082015250565b600061470c6019836132d8565b9150614717826146d6565b602082019050919050565b6000602082019050818103600083015261473b816146ff565b9050919050565b7f416d6f756e747320646f206e6f74206164642075700000000000000000000000600082015250565b60006147786015836132d8565b915061478382614742565b602082019050919050565b600060208201905081810360008301526147a78161476b565b9050919050565b7f4c65667420616d6f756e74206d75737420626520677420666565000000000000600082015250565b60006147e4601a836132d8565b91506147ef826147ae565b602082019050919050565b60006020820190508181036000830152614813816147d7565b9050919050565b600060808201905061482f60008301876134b7565b61483c60208301866134b7565b61484960408301856134b7565b61485660608301846134b7565b95945050505050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006148bb602c836132d8565b91506148c68261485f565b604082019050919050565b600060208201905081810360008301526148ea816148ae565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006149276020836132d8565b9150614932826148f1565b602082019050919050565b600060208201905081810360008301526149568161491a565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614993601c836132d8565b915061499e8261495d565b602082019050919050565b600060208201905081810360008301526149c281614986565b9050919050565b7f546f6b656e206973206e6f742076657374656400000000000000000000000000600082015250565b60006149ff6013836132d8565b9150614a0a826149c9565b602082019050919050565b60006020820190508181036000830152614a2e816149f2565b9050919050565b7f56657374696e6720686173206e6f742073746172746564000000000000000000600082015250565b6000614a6b6017836132d8565b9150614a7682614a35565b602082019050919050565b60006020820190508181036000830152614a9a81614a5e565b9050919050565b7f4e6f20746f6b656e7320746f20756e7665737400000000000000000000000000600082015250565b6000614ad76013836132d8565b9150614ae282614aa1565b602082019050919050565b60006020820190508181036000830152614b0681614aca565b9050919050565b6000604082019050614b2260008301856133ba565b614b2f60208301846134b7565b9392505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000614b6c6019836132d8565b9150614b7782614b36565b602082019050919050565b60006020820190508181036000830152614b9b81614b5f565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614bfe6032836132d8565b9150614c0982614ba2565b604082019050919050565b60006020820190508181036000830152614c2d81614bf1565b9050919050565b6000614c3f8261326a565b9150614c4a8361326a565b925082614c5a57614c59613fbf565b5b828206905092915050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000614cc16025836132d8565b9150614ccc82614c65565b604082019050919050565b60006020820190508181036000830152614cf081614cb4565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614d536024836132d8565b9150614d5e82614cf7565b604082019050919050565b60006020820190508181036000830152614d8281614d46565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000614db082614d89565b614dba8185614d94565b9350614dca8185602086016132e9565b614dd38161331c565b840191505092915050565b6000608082019050614df360008301876133ba565b614e0060208301866133ba565b614e0d60408301856134b7565b8181036060830152614e1f8184614da5565b905095945050505050565b600081519050614e39816131db565b92915050565b600060208284031215614e5557614e546131a5565b5b6000614e6384828501614e2a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220381d82ef7f495b8c20cb9695ec71d9f4d56b5d28ad7e25fbdb480cae58ccbaf164736f6c634300080d0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f578063b7d88ae0116100a2578063cd962a0611610071578063cd962a0614610650578063e985e9c51461066c578063eda0be691461069c578063f3621c90146106ba576101f0565b8063b7d88ae0146105a4578063b88d4fde146105d4578063c87b56dd146105f0578063caf0887d14610620576101f0565b806395d89b41116100de57806395d89b411461051c5780639d7484a81461053a578063a22cb4651461056a578063a9c0a12514610586576101f0565b806370a082311461046e578063795e65ab1461049e578063893d20e8146104ce57806391d52567146104ec576101f0565b806323b872dd1161018757806342842e0e1161015657806342842e0e146103c25780634f6ccce7146103de5780636352211e1461040e57806363ece9431461043e576101f0565b806323b872dd146103155780632f745c591461033157806334e731221461036157806339e94f7514610392576101f0565b8063095ea7b3116101c3578063095ea7b31461028f5780630e0ab5b9146102ab57806313af4035146102db57806318160ddd146102f7576101f0565b806301ffc9a7146101f557806304387c8d1461022557806306fdde0314610241578063081812fc1461025f575b600080fd5b61020f600480360381019061020a9190613207565b6106ea565b60405161021c919061324f565b60405180910390f35b61023f600480360381019061023a91906132a0565b610764565b005b6102496107fe565b6040516102569190613366565b60405180910390f35b610279600480360381019061027491906132a0565b610890565b60405161028691906133c9565b60405180910390f35b6102a960048036038101906102a49190613410565b610915565b005b6102c560048036038101906102c09190613450565b610a2c565b6040516102d291906134c6565b60405180910390f35b6102f560048036038101906102f091906134e1565b610a6a565b005b6102ff610b3e565b60405161030c91906134c6565b60405180910390f35b61032f600480360381019061032a919061350e565b610b4b565b005b61034b60048036038101906103469190613410565b610bab565b60405161035891906134c6565b60405180910390f35b61037b60048036038101906103769190613561565b610c50565b6040516103899291906135a1565b60405180910390f35b6103ac60048036038101906103a791906135ca565b610c84565b6040516103b991906134c6565b60405180910390f35b6103dc60048036038101906103d7919061350e565b610fab565b005b6103f860048036038101906103f391906132a0565b610fcb565b60405161040591906134c6565b60405180910390f35b610428600480360381019061042391906132a0565b61103c565b60405161043591906133c9565b60405180910390f35b610458600480360381019061045391906134e1565b6110ed565b60405161046591906136ef565b60405180910390f35b610488600480360381019061048391906134e1565b6111f6565b60405161049591906134c6565b60405180910390f35b6104b860048036038101906104b391906132a0565b6112ad565b6040516104c59190613779565b60405180910390f35b6104d661130c565b6040516104e391906133c9565b60405180910390f35b610506600480360381019061050191906132a0565b611336565b60405161051391906134c6565b60405180910390f35b610524611437565b6040516105319190613366565b60405180910390f35b610554600480360381019061054f9190613794565b6114c9565b60405161056191906134c6565b60405180910390f35b610584600480360381019061057f9190613813565b61150c565b005b61058e611522565b60405161059b91906134c6565b60405180910390f35b6105be60048036038101906105b9919061399b565b61152c565b6040516105cb91906134c6565b60405180910390f35b6105ee60048036038101906105e99190613a99565b61158d565b005b61060a600480360381019061060591906132a0565b6115ef565b6040516106179190613366565b60405180910390f35b61063a60048036038101906106359190613794565b611696565b60405161064791906134c6565b60405180910390f35b61066a600480360381019061066591906132a0565b611ab1565b005b61068660048036038101906106819190613b1c565b611b4b565b604051610693919061324f565b60405180910390f35b6106a4611bdf565b6040516106b191906134c6565b60405180910390f35b6106d460048036038101906106cf9190613794565b611be9565b6040516106e191906134c6565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061075d575061075c82611c00565b5b9050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107eb90613ba8565b60405180910390fd5b80600e8190555050565b60606000805461080d90613bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461083990613bf7565b80156108865780601f1061085b57610100808354040283529160200191610886565b820191906000526020600020905b81548152906001019060200180831161086957829003601f168201915b5050505050905090565b600061089b82611ce2565b6108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190613c9a565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109208261103c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098790613d2c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166109af611d4e565b73ffffffffffffffffffffffffffffffffffffffff1614806109de57506109dd816109d8611d4e565b611b4b565b5b610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1490613dbe565b60405180910390fd5b610a278383611d56565b505050565b6000808585610a3b9190613e0d565b905060008684610a4b9190613e0d565b90506000610a5a8287856114c9565b9050809350505050949350505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af190613ba8565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600880549050905090565b610b5c610b56611d4e565b82611e0f565b610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290613eb3565b60405180910390fd5b610ba6838383611eed565b505050565b6000610bb6836111f6565b8210610bf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bee90613f45565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600080620186a08385610c639190613f65565b610c6d9190613fee565b91508184610c7b9190613e0d565b90509250929050565b600082600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401610ce492919061401f565b602060405180830381865afa158015610d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d25919061405d565b1015610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d906140d6565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610db3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd7919061405d565b9050610de38382611ff8565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401610e42939291906140f6565b6020604051808303816000875af1158015610e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e859190614142565b50600042905063bbf81e0081610e9b919061416f565b871115610edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed490614211565b60405180910390fd5b63bbf81e0081610eed919061416f565b861115610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f269061427d565b60405180910390fd5b6040518060a0016040528088815260200187815260200186815260200186815260200188815250600c600084815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050508192505050949350505050565b610fc68383836040518060200160405280600081525061158d565b505050565b6000610fd5610b3e565b8210611016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100d9061430f565b60405180910390fd5b6008828154811061102a5761102961432f565b5b90600052602060002001549050919050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db906143d0565b60405180910390fd5b80915050919050565b606060006110fa836111f6565b90506000810361115657600067ffffffffffffffff81111561111f5761111e613858565b5b60405190808252806020026020018201604052801561114d5781602001602082028036833780820191505090505b509150506111f1565b60008167ffffffffffffffff81111561117257611171613858565b5b6040519080825280602002602001820160405280156111a05781602001602082028036833780820191505090505b50905060005b828110156111ea576111b88582610bab565b8282815181106111cb576111ca61432f565b5b60200260200101818152505080806111e2906143f0565b9150506111a6565b5080925050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d906144aa565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112b561316c565b600c60008381526020019081526020016000206040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250509050919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60003373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff1660e01b815260040161138891906134c6565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906144df565b73ffffffffffffffffffffffffffffffffffffffff161461141f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141690614558565b60405180910390fd5b600042905061142f8333836121d1565b915050919050565b60606001805461144690613bf7565b80601f016020809104026020016040519081016040528092919081815260200182805461147290613bf7565b80156114bf5780601f10611494576101008083540402835291602001916114bf565b820191906000526020600020905b8154815290600101906020018083116114a257829003601f168201915b5050505050905090565b60008184106114da57829050611505565b600084116114eb5760009050611505565b8184846114f89190613f65565b6115029190613fee565b90505b9392505050565b61151e611517611d4e565b8383612474565b5050565b6000600e54905090565b600080825190506000805b82811015611582576115628582815181106115555761155461432f565b5b6020026020010151611336565b8261156d919061416f565b9150808061157a906143f0565b915050611537565b508092505050919050565b61159e611598611d4e565b83611e0f565b6115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d490613eb3565b60405180910390fd5b6115e9848484846125e0565b50505050565b60606115fa82611ce2565b611639576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611630906145ea565b60405180910390fd5b600061164361263c565b90506000815111611663576040518060200160405280600081525061168e565b8061166d84612653565b60405160200161167e929190614646565b6040516020818303038152906040525b915050919050565b60003373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16636352211e866040518263ffffffff1660e01b81526004016116e891906134c6565b602060405180830381865afa158015611705573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172991906144df565b73ffffffffffffffffffffffffffffffffffffffff161461177f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177690614558565b60405180910390fd5b6000600c60008681526020019081526020016000206040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050905060008411611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d906146b6565b60405180910390fd5b60008311611859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185090614722565b60405180910390fd5b8284611865919061416f565b8160400151146118aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a19061478e565b60405180910390fd5b600080600d54111561191c576118c68260400151600d54610c50565b508091505080851161190d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611904906147fa565b60405180910390fd5b80856119199190613e0d565b94505b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198d919061405d565b90506119993382611ff8565b6040518060a0016040528084600001518152602001846020015181526020018681526020018681526020018460000151815250600c6000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015590505085600c60008981526020019081526020016000206002018190555085600c60008981526020019081526020016000206003018190555080873373ffffffffffffffffffffffffffffffffffffffff167fcbec30f3f612eea513363bc11396c0d7d2117bc8a87f8f376ebb781562df610a86604001518a8a88604051611a9c949392919061481a565b60405180910390a48093505050509392505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3890613ba8565b60405180910390fd5b80600d8190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000600d54905090565b6000611bf784848433610c84565b90509392505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611ccb57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611cdb5750611cda826127b3565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611dc98361103c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611e1a82611ce2565b611e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e50906148d1565b60405180910390fd5b6000611e648361103c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611ed357508373ffffffffffffffffffffffffffffffffffffffff16611ebb84610890565b73ffffffffffffffffffffffffffffffffffffffff16145b80611ee45750611ee38185611b4b565b5b91505092915050565b611ef883838361281d565b6000600e540315611ff3573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611f6857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b611ff3576000611f90600c600084815260200190815260200160002060020154600e54610c50565b91505060008111611fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcd906140d6565b60405180910390fd5b80600c600084815260200190815260200160002060020181905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205e9061493d565b60405180910390fd5b61207081611ce2565b156120b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a7906149a9565b60405180910390fd5b6120bc60008383612a83565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461210c919061416f565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46121cd60008383612b95565b5050565b600080600c60008681526020019081526020016000206040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250509050600081604001511161226d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226490614a15565b60405180910390fd5b82816000015111156122b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ab90614a81565b60405180910390fd5b60006122ce82600001518360200151846040015187610a2c565b905060008111612313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230a90614aed565b60405180910390fd5b816040015181111561232757816040015190505b60008183604001516123399190613e0d565b90506000810361238f57600c60008881526020019081526020016000206000808201600090556001820160009055600282016000905560038201600090556004820160009055505061238a87612b9a565b6123c6565b80600c60008981526020019081526020016000206002018190555084600c6000898152602001908152602001600020600001819055505b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87846040518363ffffffff1660e01b8152600401612423929190614b0d565b6020604051808303816000875af1158015612442573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124669190614142565b508193505050509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d990614b82565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516125d3919061324f565b60405180910390a3505050565b6125eb848484611eed565b6125f784848484612cb7565b612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262d90614c14565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606000820361269a576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506127ae565b600082905060005b600082146126cc5780806126b5906143f0565b915050600a826126c59190613fee565b91506126a2565b60008167ffffffffffffffff8111156126e8576126e7613858565b5b6040519080825280601f01601f19166020018201604052801561271a5781602001600182028036833780820191505090505b5090505b600085146127a7576001826127339190613e0d565b9150600a856127429190614c34565b603061274e919061416f565b60f81b8183815181106127645761276361432f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856127a09190613fee565b945061271e565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8273ffffffffffffffffffffffffffffffffffffffff1661283d8261103c565b73ffffffffffffffffffffffffffffffffffffffff1614612893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288a90614cd7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f990614d69565b60405180910390fd5b61290d838383612a83565b612918600082611d56565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129689190613e0d565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129bf919061416f565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a7e838383612b95565b505050565b612a8e838383612e3e565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ad057612acb81612e43565b612b0f565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612b0e57612b0d8382612e8c565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b5157612b4c81612ff9565b612b90565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612b8f57612b8e82826130ca565b5b5b505050565b505050565b6000612ba58261103c565b9050612bb381600084612a83565b612bbe600083611d56565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c0e9190613e0d565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612cb381600084612b95565b5050565b6000612cd88473ffffffffffffffffffffffffffffffffffffffff16613149565b15612e31578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d01611d4e565b8786866040518563ffffffff1660e01b8152600401612d239493929190614dde565b6020604051808303816000875af1925050508015612d5f57506040513d601f19601f82011682018060405250810190612d5c9190614e3f565b60015b612de1573d8060008114612d8f576040519150601f19603f3d011682016040523d82523d6000602084013e612d94565b606091505b506000815103612dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd090614c14565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612e36565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612e99846111f6565b612ea39190613e0d565b9050600060076000848152602001908152602001600020549050818114612f88576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061300d9190613e0d565b905060006009600084815260200190815260200160002054905060006008838154811061303d5761303c61432f565b5b90600052602060002001549050806008838154811061305f5761305e61432f565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806130ae576130ad614e6c565b5b6001900381819060005260206000200160009055905550505050565b60006130d5836111f6565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6131e4816131af565b81146131ef57600080fd5b50565b600081359050613201816131db565b92915050565b60006020828403121561321d5761321c6131a5565b5b600061322b848285016131f2565b91505092915050565b60008115159050919050565b61324981613234565b82525050565b60006020820190506132646000830184613240565b92915050565b6000819050919050565b61327d8161326a565b811461328857600080fd5b50565b60008135905061329a81613274565b92915050565b6000602082840312156132b6576132b56131a5565b5b60006132c48482850161328b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133075780820151818401526020810190506132ec565b83811115613316576000848401525b50505050565b6000601f19601f8301169050919050565b6000613338826132cd565b61334281856132d8565b93506133528185602086016132e9565b61335b8161331c565b840191505092915050565b60006020820190508181036000830152613380818461332d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133b382613388565b9050919050565b6133c3816133a8565b82525050565b60006020820190506133de60008301846133ba565b92915050565b6133ed816133a8565b81146133f857600080fd5b50565b60008135905061340a816133e4565b92915050565b60008060408385031215613427576134266131a5565b5b6000613435858286016133fb565b92505060206134468582860161328b565b9150509250929050565b6000806000806080858703121561346a576134696131a5565b5b60006134788782880161328b565b94505060206134898782880161328b565b935050604061349a8782880161328b565b92505060606134ab8782880161328b565b91505092959194509250565b6134c08161326a565b82525050565b60006020820190506134db60008301846134b7565b92915050565b6000602082840312156134f7576134f66131a5565b5b6000613505848285016133fb565b91505092915050565b600080600060608486031215613527576135266131a5565b5b6000613535868287016133fb565b9350506020613546868287016133fb565b92505060406135578682870161328b565b9150509250925092565b60008060408385031215613578576135776131a5565b5b60006135868582860161328b565b92505060206135978582860161328b565b9150509250929050565b60006040820190506135b660008301856134b7565b6135c360208301846134b7565b9392505050565b600080600080608085870312156135e4576135e36131a5565b5b60006135f28782880161328b565b94505060206136038782880161328b565b93505060406136148782880161328b565b9250506060613625878288016133fb565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136668161326a565b82525050565b6000613678838361365d565b60208301905092915050565b6000602082019050919050565b600061369c82613631565b6136a6818561363c565b93506136b18361364d565b8060005b838110156136e25781516136c9888261366c565b97506136d483613684565b9250506001810190506136b5565b5085935050505092915050565b600060208201905081810360008301526137098184613691565b905092915050565b60a082016000820151613727600085018261365d565b50602082015161373a602085018261365d565b50604082015161374d604085018261365d565b506060820151613760606085018261365d565b506080820151613773608085018261365d565b50505050565b600060a08201905061378e6000830184613711565b92915050565b6000806000606084860312156137ad576137ac6131a5565b5b60006137bb8682870161328b565b93505060206137cc8682870161328b565b92505060406137dd8682870161328b565b9150509250925092565b6137f081613234565b81146137fb57600080fd5b50565b60008135905061380d816137e7565b92915050565b6000806040838503121561382a576138296131a5565b5b6000613838858286016133fb565b9250506020613849858286016137fe565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6138908261331c565b810181811067ffffffffffffffff821117156138af576138ae613858565b5b80604052505050565b60006138c261319b565b90506138ce8282613887565b919050565b600067ffffffffffffffff8211156138ee576138ed613858565b5b602082029050602081019050919050565b600080fd5b6000613917613912846138d3565b6138b8565b9050808382526020820190506020840283018581111561393a576139396138ff565b5b835b81811015613963578061394f888261328b565b84526020840193505060208101905061393c565b5050509392505050565b600082601f83011261398257613981613853565b5b8135613992848260208601613904565b91505092915050565b6000602082840312156139b1576139b06131a5565b5b600082013567ffffffffffffffff8111156139cf576139ce6131aa565b5b6139db8482850161396d565b91505092915050565b600080fd5b600067ffffffffffffffff821115613a0457613a03613858565b5b613a0d8261331c565b9050602081019050919050565b82818337600083830152505050565b6000613a3c613a37846139e9565b6138b8565b905082815260208101848484011115613a5857613a576139e4565b5b613a63848285613a1a565b509392505050565b600082601f830112613a8057613a7f613853565b5b8135613a90848260208601613a29565b91505092915050565b60008060008060808587031215613ab357613ab26131a5565b5b6000613ac1878288016133fb565b9450506020613ad2878288016133fb565b9350506040613ae38782880161328b565b925050606085013567ffffffffffffffff811115613b0457613b036131aa565b5b613b1087828801613a6b565b91505092959194509250565b60008060408385031215613b3357613b326131a5565b5b6000613b41858286016133fb565b9250506020613b52858286016133fb565b9150509250929050565b7f4f6e6c79206f776e657200000000000000000000000000000000000000000000600082015250565b6000613b92600a836132d8565b9150613b9d82613b5c565b602082019050919050565b60006020820190508181036000830152613bc181613b85565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c0f57607f821691505b602082108103613c2257613c21613bc8565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613c84602c836132d8565b9150613c8f82613c28565b604082019050919050565b60006020820190508181036000830152613cb381613c77565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d166021836132d8565b9150613d2182613cba565b604082019050919050565b60006020820190508181036000830152613d4581613d09565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000613da86038836132d8565b9150613db382613d4c565b604082019050919050565b60006020820190508181036000830152613dd781613d9b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613e188261326a565b9150613e238361326a565b925082821015613e3657613e35613dde565b5b828203905092915050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613e9d6031836132d8565b9150613ea882613e41565b604082019050919050565b60006020820190508181036000830152613ecc81613e90565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000613f2f602b836132d8565b9150613f3a82613ed3565b604082019050919050565b60006020820190508181036000830152613f5e81613f22565b9050919050565b6000613f708261326a565b9150613f7b8361326a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613fb457613fb3613dde565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ff98261326a565b91506140048361326a565b92508261401457614013613fbf565b5b828204905092915050565b600060408201905061403460008301856133ba565b61404160208301846133ba565b9392505050565b60008151905061405781613274565b92915050565b600060208284031215614073576140726131a5565b5b600061408184828501614048565b91505092915050565b7f6e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b60006140c06011836132d8565b91506140cb8261408a565b602082019050919050565b600060208201905081810360008301526140ef816140b3565b9050919050565b600060608201905061410b60008301866133ba565b61411860208301856133ba565b61412560408301846134b7565b949350505050565b60008151905061413c816137e7565b92915050565b600060208284031215614158576141576131a5565b5b60006141668482850161412d565b91505092915050565b600061417a8261326a565b91506141858361326a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156141ba576141b9613dde565b5b828201905092915050565b7f7374617274206461746520697320746f6f206661720000000000000000000000600082015250565b60006141fb6015836132d8565b9150614206826141c5565b602082019050919050565b6000602082019050818103600083015261422a816141ee565b9050919050565b7f656e64206461746520697320746f6f2066617200000000000000000000000000600082015250565b60006142676013836132d8565b915061427282614231565b602082019050919050565b600060208201905081810360008301526142968161425a565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006142f9602c836132d8565b91506143048261429d565b604082019050919050565b60006020820190508181036000830152614328816142ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006143ba6029836132d8565b91506143c58261435e565b604082019050919050565b600060208201905081810360008301526143e9816143ad565b9050919050565b60006143fb8261326a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361442d5761442c613dde565b5b600182019050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000614494602a836132d8565b915061449f82614438565b604082019050919050565b600060208201905081810360008301526144c381614487565b9050919050565b6000815190506144d9816133e4565b92915050565b6000602082840312156144f5576144f46131a5565b5b6000614503848285016144ca565b91505092915050565b7f546f6b656e206973206e6f74206f776e656420627920796f7500000000000000600082015250565b60006145426019836132d8565b915061454d8261450c565b602082019050919050565b6000602082019050818103600083015261457181614535565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006145d4602f836132d8565b91506145df82614578565b604082019050919050565b60006020820190508181036000830152614603816145c7565b9050919050565b600081905092915050565b6000614620826132cd565b61462a818561460a565b935061463a8185602086016132e9565b80840191505092915050565b60006146528285614615565b915061465e8284614615565b91508190509392505050565b7f4c65667420616d6f756e74206d75737420626520677420300000000000000000600082015250565b60006146a06018836132d8565b91506146ab8261466a565b602082019050919050565b600060208201905081810360008301526146cf81614693565b9050919050565b7f526967687420616d6f756e74206d757374206265206774203000000000000000600082015250565b600061470c6019836132d8565b9150614717826146d6565b602082019050919050565b6000602082019050818103600083015261473b816146ff565b9050919050565b7f416d6f756e747320646f206e6f74206164642075700000000000000000000000600082015250565b60006147786015836132d8565b915061478382614742565b602082019050919050565b600060208201905081810360008301526147a78161476b565b9050919050565b7f4c65667420616d6f756e74206d75737420626520677420666565000000000000600082015250565b60006147e4601a836132d8565b91506147ef826147ae565b602082019050919050565b60006020820190508181036000830152614813816147d7565b9050919050565b600060808201905061482f60008301876134b7565b61483c60208301866134b7565b61484960408301856134b7565b61485660608301846134b7565b95945050505050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006148bb602c836132d8565b91506148c68261485f565b604082019050919050565b600060208201905081810360008301526148ea816148ae565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006149276020836132d8565b9150614932826148f1565b602082019050919050565b600060208201905081810360008301526149568161491a565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614993601c836132d8565b915061499e8261495d565b602082019050919050565b600060208201905081810360008301526149c281614986565b9050919050565b7f546f6b656e206973206e6f742076657374656400000000000000000000000000600082015250565b60006149ff6013836132d8565b9150614a0a826149c9565b602082019050919050565b60006020820190508181036000830152614a2e816149f2565b9050919050565b7f56657374696e6720686173206e6f742073746172746564000000000000000000600082015250565b6000614a6b6017836132d8565b9150614a7682614a35565b602082019050919050565b60006020820190508181036000830152614a9a81614a5e565b9050919050565b7f4e6f20746f6b656e7320746f20756e7665737400000000000000000000000000600082015250565b6000614ad76013836132d8565b9150614ae282614aa1565b602082019050919050565b60006020820190508181036000830152614b0681614aca565b9050919050565b6000604082019050614b2260008301856133ba565b614b2f60208301846134b7565b9392505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000614b6c6019836132d8565b9150614b7782614b36565b602082019050919050565b60006020820190508181036000830152614b9b81614b5f565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614bfe6032836132d8565b9150614c0982614ba2565b604082019050919050565b60006020820190508181036000830152614c2d81614bf1565b9050919050565b6000614c3f8261326a565b9150614c4a8361326a565b925082614c5a57614c59613fbf565b5b828206905092915050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000614cc16025836132d8565b9150614ccc82614c65565b604082019050919050565b60006020820190508181036000830152614cf081614cb4565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614d536024836132d8565b9150614d5e82614cf7565b604082019050919050565b60006020820190508181036000830152614d8281614d46565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000614db082614d89565b614dba8185614d94565b9350614dca8185602086016132e9565b614dd38161331c565b840191505092915050565b6000608082019050614df360008301876133ba565b614e0060208301866133ba565b614e0d60408301856134b7565b8181036060830152614e1f8184614da5565b905095945050505050565b600081519050614e39816131db565b92915050565b600060208284031215614e5557614e546131a5565b5b6000614e6384828501614e2a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220381d82ef7f495b8c20cb9695ec71d9f4d56b5d28ad7e25fbdb480cae58ccbaf164736f6c634300080d0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
