{
  "contractName": "KittyOwnership",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "cfoAddress",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ceoAddress",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newCEO",
          "type": "address"
        }
      ],
      "name": "setCEO",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newCOO",
          "type": "address"
        }
      ],
      "name": "setCOO",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "sireAllowedToAddress",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "kittyIndexToApproved",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newCFO",
          "type": "address"
        }
      ],
      "name": "setCFO",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "withdrawBalance",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "cooldowns",
      "outputs": [
        {
          "name": "",
          "type": "uint32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "kittyIndexToOwner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "cooAddress",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "kittyId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "matronId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "sireId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "genes",
          "type": "uint256"
        }
      ],
      "name": "Birth",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "newContract",
          "type": "address"
        }
      ],
      "name": "ContractUpgrade",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "implementsERC721",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kittyId",
          "type": "uint256"
        },
        {
          "name": "_recipient",
          "type": "address"
        }
      ],
      "name": "rescueLostKitty",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "name": "count",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "name": "owner",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "tokensOfOwnerByIndex",
      "outputs": [
        {
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6002805460a060020a60ff0219169055610240604052603c6080908152607860a05261012c60c05261025860e05261070861010052610e1061012052611c2061014052613840610160526170806101805261e1006101a052620151806101c0526202a3006101e052620546006102005262093a80610220526200008790600390600e6200012a565b5060408051808201909152600d8082527f43727970746f4b697474696573000000000000000000000000000000000000006020909201918252620000ce91600a91620001cd565b506040805180820190915260028082527f434b00000000000000000000000000000000000000000000000000000000000060209092019182526200011591600b91620001cd565b503480156200012357600080fd5b5062000292565b600283019183908215620001bb5791602002820160005b838211156200018757835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030262000141565b8015620001b95782816101000a81549063ffffffff021916905560040160208160030104928301926001030262000187565b505b50620001c99291506200024e565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200021057805160ff191683800117855562000240565b8280016001018555821562000240579182015b828111156200024057825182559160200191906001019062000223565b50620001c992915062000275565b6200027291905b80821115620001c957805463ffffffff1916815560010162000255565b90565b6200027291905b80821115620001c957600081556001016200027c565b610c3f80620002a26000396000f3006080604052600436106101485763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663030c4741811461014d5780630519ce791461017357806306fdde03146101a4578063095ea7b31461022e5780630a0f8168146102525780631051db341461026757806318160ddd1461029057806323b872dd146102b757806327d7874c146102e15780632ba73c15146103025780633f4ba83a1461032357806346116e6f146103385780634707f44f14610350578063481af3d3146103745780634e0a33791461038c5780635c975abb146103ad5780635fd8c710146103c25780636352211e146103d757806370a08231146103ef5780638456cb591461041057806395d89b41146104255780639d6fac6f1461043a578063a45f4bfc1461046b578063a9059cbb14610483578063b047fb50146104a7575b600080fd5b34801561015957600080fd5b50610171600435600160a060020a03602435166104bc565b005b34801561017f57600080fd5b5061018861050e565b60408051600160a060020a039092168252519081900360200190f35b3480156101b057600080fd5b506101b961051d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f35781810151838201526020016101db565b50505050905090810190601f1680156102205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023a57600080fd5b50610171600160a060020a03600435166024356105ab565b34801561025e57600080fd5b5061018861061d565b34801561027357600080fd5b5061027c61062c565b604080519115158252519081900360200190f35b34801561029c57600080fd5b506102a5610631565b60408051918252519081900360200190f35b3480156102c357600080fd5b50610171600160a060020a036004358116906024351660443561063b565b3480156102ed57600080fd5b50610171600160a060020a036004351661068c565b34801561030e57600080fd5b50610171600160a060020a03600435166106e7565b34801561032f57600080fd5b50610171610742565b34801561034457600080fd5b50610188600435610791565b34801561035c57600080fd5b506102a5600160a060020a03600435166024356107ac565b34801561038057600080fd5b50610188600435610809565b34801561039857600080fd5b50610171600160a060020a0360043516610824565b3480156103b957600080fd5b5061027c61087f565b3480156103ce57600080fd5b5061017161088f565b3480156103e357600080fd5b506101886004356108e3565b3480156103fb57600080fd5b506102a5600160a060020a036004351661090c565b34801561041c57600080fd5b50610171610927565b34801561043157600080fd5b506101b96109a7565b34801561044657600080fd5b50610452600435610a02565b6040805163ffffffff9092168252519081900360200190f35b34801561047757600080fd5b50610188600435610a2f565b34801561048f57600080fd5b50610171600160a060020a0360043516602435610a4a565b3480156104b357600080fd5b50610188610a96565b600254600160a060020a031633146104d357600080fd5b60025460a060020a900460ff16156104ea57600080fd5b6104f43083610aa5565b15156104ff57600080fd5b61050a308284610ac5565b5050565b600154600160a060020a031681565b600a805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105a35780601f10610578576101008083540402835291602001916105a3565b820191906000526020600020905b81548152906001019060200180831161058657829003601f168201915b505050505081565b60025460a060020a900460ff16156105c257600080fd5b6105cc3382610aa5565b15156105d757600080fd5b6105e18183610bb8565b6040518190600160a060020a0384169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590600090a45050565b600054600160a060020a031681565b600190565b6005546000190190565b60025460a060020a900460ff161561065257600080fd5b61065c3382610bf3565b151561066757600080fd5b6106718382610aa5565b151561067c57600080fd5b610687838383610ac5565b505050565b600054600160a060020a031633146106a357600080fd5b600160a060020a03811615156106b857600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031633146106fe57600080fd5b600160a060020a038116151561071357600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a0316331461075957600080fd5b60025460a060020a900460ff16151561077157600080fd5b6002805474ff000000000000000000000000000000000000000019169055565b600960205260009081526040902054600160a060020a031681565b60008060015b6107ba610631565b811161014857600081815260066020526040902054600160a060020a03868116911614156107f957838214156107f257809250610801565b6001909101905b6001016107b2565b505092915050565b600860205260009081526040902054600160a060020a031681565b600054600160a060020a0316331461083b57600080fd5b600160a060020a038116151561085057600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60025460a060020a900460ff1681565b600154600160a060020a031633146108a657600080fd5b600154604051600160a060020a0390911690303180156108fc02916000818181858888f193505050501580156108e0573d6000803e3d6000fd5b50565b600081815260066020526040902054600160a060020a031680151561090757600080fd5b919050565b600160a060020a031660009081526007602052604090205490565b600254600160a060020a031633148061094a5750600054600160a060020a031633145b8061095f5750600154600160a060020a031633145b151561096a57600080fd5b60025460a060020a900460ff161561098157600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a179055565b600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105a35780601f10610578576101008083540402835291602001916105a3565b600381600e8110610a0f57fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b600660205260009081526040902054600160a060020a031681565b60025460a060020a900460ff1615610a6157600080fd5b600160a060020a0382161515610a7657600080fd5b610a803382610aa5565b1515610a8b57600080fd5b61050a338383610ac5565b600254600160a060020a031681565b600090815260066020526040902054600160a060020a0391821691161490565b600160a060020a0380831660008181526007602090815260408083208054600101905585835260069091529020805473ffffffffffffffffffffffffffffffffffffffff19169091179055831615610b7257600160a060020a0383166000908152600760209081526040808320805460001901905583835260098252808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556008909252909120805490911690555b8082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600091825260086020526040909120805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055565b600090815260086020526040902054600160a060020a03918216911614905600a165627a7a7230582012daf510a3448f97f78e579081bb4da49c61feb47801eed88c2c96c1aeba30060029",
  "deployedBytecode": "0x6080604052600436106101485763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663030c4741811461014d5780630519ce791461017357806306fdde03146101a4578063095ea7b31461022e5780630a0f8168146102525780631051db341461026757806318160ddd1461029057806323b872dd146102b757806327d7874c146102e15780632ba73c15146103025780633f4ba83a1461032357806346116e6f146103385780634707f44f14610350578063481af3d3146103745780634e0a33791461038c5780635c975abb146103ad5780635fd8c710146103c25780636352211e146103d757806370a08231146103ef5780638456cb591461041057806395d89b41146104255780639d6fac6f1461043a578063a45f4bfc1461046b578063a9059cbb14610483578063b047fb50146104a7575b600080fd5b34801561015957600080fd5b50610171600435600160a060020a03602435166104bc565b005b34801561017f57600080fd5b5061018861050e565b60408051600160a060020a039092168252519081900360200190f35b3480156101b057600080fd5b506101b961051d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f35781810151838201526020016101db565b50505050905090810190601f1680156102205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023a57600080fd5b50610171600160a060020a03600435166024356105ab565b34801561025e57600080fd5b5061018861061d565b34801561027357600080fd5b5061027c61062c565b604080519115158252519081900360200190f35b34801561029c57600080fd5b506102a5610631565b60408051918252519081900360200190f35b3480156102c357600080fd5b50610171600160a060020a036004358116906024351660443561063b565b3480156102ed57600080fd5b50610171600160a060020a036004351661068c565b34801561030e57600080fd5b50610171600160a060020a03600435166106e7565b34801561032f57600080fd5b50610171610742565b34801561034457600080fd5b50610188600435610791565b34801561035c57600080fd5b506102a5600160a060020a03600435166024356107ac565b34801561038057600080fd5b50610188600435610809565b34801561039857600080fd5b50610171600160a060020a0360043516610824565b3480156103b957600080fd5b5061027c61087f565b3480156103ce57600080fd5b5061017161088f565b3480156103e357600080fd5b506101886004356108e3565b3480156103fb57600080fd5b506102a5600160a060020a036004351661090c565b34801561041c57600080fd5b50610171610927565b34801561043157600080fd5b506101b96109a7565b34801561044657600080fd5b50610452600435610a02565b6040805163ffffffff9092168252519081900360200190f35b34801561047757600080fd5b50610188600435610a2f565b34801561048f57600080fd5b50610171600160a060020a0360043516602435610a4a565b3480156104b357600080fd5b50610188610a96565b600254600160a060020a031633146104d357600080fd5b60025460a060020a900460ff16156104ea57600080fd5b6104f43083610aa5565b15156104ff57600080fd5b61050a308284610ac5565b5050565b600154600160a060020a031681565b600a805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105a35780601f10610578576101008083540402835291602001916105a3565b820191906000526020600020905b81548152906001019060200180831161058657829003601f168201915b505050505081565b60025460a060020a900460ff16156105c257600080fd5b6105cc3382610aa5565b15156105d757600080fd5b6105e18183610bb8565b6040518190600160a060020a0384169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590600090a45050565b600054600160a060020a031681565b600190565b6005546000190190565b60025460a060020a900460ff161561065257600080fd5b61065c3382610bf3565b151561066757600080fd5b6106718382610aa5565b151561067c57600080fd5b610687838383610ac5565b505050565b600054600160a060020a031633146106a357600080fd5b600160a060020a03811615156106b857600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031633146106fe57600080fd5b600160a060020a038116151561071357600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a0316331461075957600080fd5b60025460a060020a900460ff16151561077157600080fd5b6002805474ff000000000000000000000000000000000000000019169055565b600960205260009081526040902054600160a060020a031681565b60008060015b6107ba610631565b811161014857600081815260066020526040902054600160a060020a03868116911614156107f957838214156107f257809250610801565b6001909101905b6001016107b2565b505092915050565b600860205260009081526040902054600160a060020a031681565b600054600160a060020a0316331461083b57600080fd5b600160a060020a038116151561085057600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60025460a060020a900460ff1681565b600154600160a060020a031633146108a657600080fd5b600154604051600160a060020a0390911690303180156108fc02916000818181858888f193505050501580156108e0573d6000803e3d6000fd5b50565b600081815260066020526040902054600160a060020a031680151561090757600080fd5b919050565b600160a060020a031660009081526007602052604090205490565b600254600160a060020a031633148061094a5750600054600160a060020a031633145b8061095f5750600154600160a060020a031633145b151561096a57600080fd5b60025460a060020a900460ff161561098157600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a179055565b600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105a35780601f10610578576101008083540402835291602001916105a3565b600381600e8110610a0f57fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b600660205260009081526040902054600160a060020a031681565b60025460a060020a900460ff1615610a6157600080fd5b600160a060020a0382161515610a7657600080fd5b610a803382610aa5565b1515610a8b57600080fd5b61050a338383610ac5565b600254600160a060020a031681565b600090815260066020526040902054600160a060020a0391821691161490565b600160a060020a0380831660008181526007602090815260408083208054600101905585835260069091529020805473ffffffffffffffffffffffffffffffffffffffff19169091179055831615610b7257600160a060020a0383166000908152600760209081526040808320805460001901905583835260098252808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556008909252909120805490911690555b8082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600091825260086020526040909120805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055565b600090815260086020526040902054600160a060020a03918216911614905600a165627a7a7230582012daf510a3448f97f78e579081bb4da49c61feb47801eed88c2c96c1aeba30060029",
  "sourceMap": "2135:26:21:-;;;-1:-1:-1;;;;;;2135:26:21;;;4302:395:23;720:6959:27;4302:395:23;4349:9;720:6959:27;4302:395:23;;;4376:9;4302:395;;4403:9;4302:395;;4430:10;4302:395;;4458:10;2135:26:21;4302:395:23;4486:7;4302:395;;4511:7;4302:395;;4536:7;4302:395;;4561:7;4302:395;;4586:8;4302:395;;4612:6;4302:395;;4636:6;4302:395;;4660:6;4302:395;;4684:6;4302:395;;;;;;;;:::i;:::-;-1:-1:-1;853:36:27;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;895:27:27;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;720:6959;8:9:-1;5:2;;;30:1;27;20:12;5:2;720:6959:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;720:6959:27;;;-1:-1:-1;720:6959:27;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;720:6959:27;;;-1:-1:-1;720:6959:27;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;720:6959:27;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "720:6959:27:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3016:186;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3016:186:27;;;-1:-1:-1;;;;;3016:186:27;;;;;;;1972:25:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1972:25:21;;;;;;;;-1:-1:-1;;;;;1972:25:21;;;;;;;;;;;;;;853:36:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;853:36:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;853:36:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4787:398;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4787:398:27;-1:-1:-1;;;;;4787:398:27;;;;;;;1941:25:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1941:25:21;;;;980:87:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;980:87:27;;;;;;;;;;;;;;;;;;;;;;6200:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6200:92:27;;;;;;;;;;;;;;;;;;;;5652:420;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5652:420:27;-1:-1:-1;;;;;5652:420:27;;;;;;;;;;;;2924:126:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2924:126:21;-1:-1:-1;;;;;2924:126:21;;;;;3466;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3466:126:21;-1:-1:-1;;;;;3466:126:21;;;;;4466;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4466:126:21;;;;6138:56:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6138:56:23;;;;;7225:452:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7225:452:27;-1:-1:-1;;;;;7225:452:27;;;;;;;5820:56:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5820:56:23;;;;;3195:126:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3195:126:21;-1:-1:-1;;;;;3195:126:21;;;;;2135:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2135:26:21;;;;3598:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3598:94:21;;;;6427:190:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6427:190:27;;;;;3378:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3378:122:27;-1:-1:-1;;;;;3378:122:27;;;;;4202:79:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4202:79:21;;;;895:27:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;895:27:27;;;;4302:395:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4302:395:23;;;;;;;;;;;;;;;;;;;;;;;;5320:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5320:53:23;;;;;3925:438:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3925:438:27;-1:-1:-1;;;;;3925:438:27;;;;;;;2003:25:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2003:25:21;;;;3016:186:27;2559:10:21;;-1:-1:-1;;;;;2559:10:21;2545;:24;2537:33;;;;;;3883:6;;-1:-1:-1;;;3883:6:21;;;;3882:7;3874:16;;;;;;3126:21:27;3132:4;3138:8;3126:5;:21::i;:::-;3118:30;;;;;;;;3158:37;3168:4;3174:10;3186:8;3158:9;:37::i;:::-;3016:186;;:::o;1972:25:21:-;;;-1:-1:-1;;;;;1972:25:21;;:::o;853:36:27:-;;;;;;;;;;;;;;;-1:-1:-1;;853:36:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4787:398::-;3883:6:21;;-1:-1:-1;;;3883:6:21;;;;3882:7;3874:16;;;;;;4970:27:27;4976:10;4988:8;4970:5;:27::i;:::-;4962:36;;;;;;;;5077:23;5086:8;5096:3;5077:8;:23::i;:::-;5143:35;;5169:8;;-1:-1:-1;;;;;5143:35:27;;;5152:10;;5143:35;;;;;4787:398;;:::o;1941:25:21:-;;;-1:-1:-1;;;;;1941:25:21;;:::o;980:87:27:-;1056:4;980:87;:::o;6200:92::-;6267:7;:14;-1:-1:-1;;6267:18:27;6200:92;:::o;5652:420::-;3883:6:21;;-1:-1:-1;;;3883:6:21;;;;3882:7;3874:16;;;;;;5859:34:27;5872:10;5884:8;5859:12;:34::i;:::-;5851:43;;;;;;;;5912:22;5918:5;5925:8;5912:5;:22::i;:::-;5904:31;;;;;;;;6034;6044:5;6051:3;6056:8;6034:9;:31::i;:::-;5652:420;;;:::o;2924:126:21:-;2275:10;;-1:-1:-1;;;;;2275:10:21;2261;:24;2253:33;;;;;;-1:-1:-1;;;;;2990:21:21;;;;2982:30;;;;;;3023:10;:20;;-1:-1:-1;;3023:20:21;-1:-1:-1;;;;;3023:20:21;;;;;;;;;;2924:126::o;3466:::-;2275:10;;-1:-1:-1;;;;;2275:10:21;2261;:24;2253:33;;;;;;-1:-1:-1;;;;;3532:21:21;;;;3524:30;;;;;;3565:10;:20;;-1:-1:-1;;3565:20:21;-1:-1:-1;;;;;3565:20:21;;;;;;;;;;3466:126::o;4466:::-;2275:10;;-1:-1:-1;;;;;2275:10:21;2261;:24;2253:33;;;;;;4024:6;;-1:-1:-1;;;4024:6:21;;;;4016:15;;;;;;;;4571:6;:14;;-1:-1:-1;;4571:14:21;;;4466:126::o;6138:56:23:-;;;;;;;;;;;;-1:-1:-1;;;;;6138:56:23;;:::o;7225:452:27:-;7334:15;;7409:1;7392:261;7417:13;:11;:13::i;:::-;7412:18;;7392:261;;7455:20;;;;:17;:20;;;;;;-1:-1:-1;;;;;7455:30:27;;;:20;;:30;7451:192;;;7518:6;7509:5;:15;7505:124;;;7555:1;7548:8;;;;7505:124;7603:7;;;;;7505:124;7432:3;;7392:261;;7225:452;;;;;;;:::o;5820:56:23:-;;;;;;;;;;;;-1:-1:-1;;;;;5820:56:23;;:::o;3195:126:21:-;2275:10;;-1:-1:-1;;;;;2275:10:21;2261;:24;2253:33;;;;;;-1:-1:-1;;;;;3261:21:21;;;;3253:30;;;;;;3294:10;:20;;-1:-1:-1;;3294:20:21;-1:-1:-1;;;;;3294:20:21;;;;;;;;;;3195:126::o;2135:26::-;;;-1:-1:-1;;;2135:26:21;;;;;:::o;3598:94::-;2417:10;;-1:-1:-1;;;;;2417:10:21;2403;:24;2395:33;;;;;;3652:10;;:33;;-1:-1:-1;;;;;3652:10:21;;;;3672:4;:12;3652:33;;;;;:10;:33;:10;:33;3672:12;3652:10;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3652:33:21;3598:94::o;6427:190:27:-;6507:13;6544:27;;;:17;:27;;;;;;-1:-1:-1;;;;;6544:27:27;6590:19;;;6582:28;;;;;;6427:190;;;:::o;3378:122::-;-1:-1:-1;;;;;3466:27:27;3434:13;3466:27;;;:19;:27;;;;;;;3378:122::o;4202:79:21:-;2661:10;;-1:-1:-1;;;;;2661:10:21;2647;:24;;:64;;-1:-1:-1;2701:10:21;;-1:-1:-1;;;;;2701:10:21;2687;:24;2647:64;:104;;;-1:-1:-1;2741:10:21;;-1:-1:-1;;;;;2741:10:21;2727;:24;2647:104;2626:135;;;;;;;;3883:6;;-1:-1:-1;;;3883:6:21;;;;3882:7;3874:16;;;;;;4261:6;:13;;-1:-1:-1;;4261:13:21;-1:-1:-1;;;4261:13:21;;;4202:79::o;895:27:27:-;;;;;;;;;;;;;;;-1:-1:-1;;895:27:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4302:395:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5320:53::-;;;;;;;;;;;;-1:-1:-1;;;;;5320:53:23;;:::o;3925:438:27:-;3883:6:21;;-1:-1:-1;;;3883:6:21;;;;3882:7;3874:16;;;;;;-1:-1:-1;;;;;4125:17:27;;;;4117:26;;;;;;4204:27;4210:10;4222:8;4204:5;:27::i;:::-;4196:36;;;;;;;;4320;4330:10;4342:3;4347:8;4320:9;:36::i;2003:25:21:-;;;-1:-1:-1;;;;;2003:25:21;;:::o;1480:145:27:-;1555:4;1578:27;;;:17;:27;;;;;;-1:-1:-1;;;;;1578:40:27;;;:27;;:40;;1480:145::o;6267:784:23:-;-1:-1:-1;;;;;6452:24:23;;;;;;;:19;:24;;;;;;;;:26;;;;;;6518:27;;;:17;:27;;;;;:33;;-1:-1:-1;;6518:33:23;;;;;;6651:19;;;6647:317;;-1:-1:-1;;;;;6686:26:23;;;;;;:19;:26;;;;;;;;:28;;-1:-1:-1;;6686:28:23;;;6808:30;;;:20;:30;;;;;6801:37;;-1:-1:-1;;6801:37:23;;;;;;6923:20;:30;;;;;;6916:37;;;;;;;6647:317;7035:8;7030:3;-1:-1:-1;;;;;7014:30:23;7023:5;-1:-1:-1;;;;;7014:30:23;;;;;;;;;;;6267:784;;;:::o;2457:123:27:-;2531:30;;;;:20;:30;;;;;;:42;;-1:-1:-1;;2531:42:27;-1:-1:-1;;;;;2531:42:27;;;;;;;;;2457:123::o;1859:155::-;1941:4;1964:30;;;:20;:30;;;;;;-1:-1:-1;;;;;1964:43:27;;;:30;;:43;;1859:155::o",
  "source": "/* solium-disable */\n/**\n *  @title The facet of the CryptoKitties core contract that manages ownership, ERC-721 (draft) compliant.\n *  @author Axiom Zen (https://www.axiomzen.co)\n *  This code was taken from https://github.com/dapperlabs at\n *  https://github.com/dapperlabs/cryptokitties-bounty and is NOT kleros code.\n */\npragma solidity ^0.4.18;\n\nimport \"./KittyBase.sol\";\nimport \"./ERC721.sol\";\n\n/// @title The facet of the CryptoKitties core contract that manages ownership, ERC-721 (draft) compliant.\n/// @author Axiom Zen (https://www.axiomzen.co)\n/// @dev Ref: https://github.com/ethereum/EIPs/issues/721\n///  See the KittyCore contract documentation to understand how the various contract facets are arranged.\ncontract KittyOwnership is KittyBase, ERC721 {\n\n    /// @notice Name and symbol of the non fungible token, as defined in ERC721.\n    string public name = \"CryptoKitties\";\n    string public symbol = \"CK\";\n\n    // bool public implementsERC721 = true;\n    //\n    function implementsERC721() public pure returns (bool)\n    {\n        return true;\n    }\n    \n    // Internal utility functions: These functions all assume that their input arguments\n    // are valid. We leave it to public methods to sanitize their inputs and follow\n    // the required logic.\n\n    /// @dev Checks if a given address is the current owner of a particular Kitty.\n    /// @param _claimant the address we are validating against.\n    /// @param _tokenId kitten id, only valid when > 0\n    function _owns(address _claimant, uint256 _tokenId) internal view returns (bool) {\n        return kittyIndexToOwner[_tokenId] == _claimant;\n    }\n\n    /// @dev Checks if a given address currently has transferApproval for a particular Kitty.\n    /// @param _claimant the address we are confirming kitten is approved for.\n    /// @param _tokenId kitten id, only valid when > 0\n    function _approvedFor(address _claimant, uint256 _tokenId) internal view returns (bool) {\n        return kittyIndexToApproved[_tokenId] == _claimant;\n    }\n\n    /// @dev Marks an address as being approved for transferFrom(), overwriting any previous\n    ///  approval. Setting _approved to address(0) clears all transfer approval.\n    ///  NOTE: _approve() does NOT send the Approval event. This is intentional because\n    ///  _approve() and transferFrom() are used together for putting Kitties on auction, and\n    ///  there is no value in spamming the log with Approval events in that case.\n    function _approve(uint256 _tokenId, address _approved) internal {\n        kittyIndexToApproved[_tokenId] = _approved;\n    }\n\n    /// @dev Transfers a kitty owned by this contract to the specified address.\n    ///  Used to rescue lost kitties. (There is no \"proper\" flow where this contract\n    ///  should be the owner of any Kitty. This function exists for us to reassign\n    ///  the ownership of Kitties that users may have accidentally sent to our address.)\n    /// @param _kittyId - ID of kitty\n    /// @param _recipient - Address to send the cat to\n    function rescueLostKitty(uint256 _kittyId, address _recipient) public onlyCOO whenNotPaused {\n        require(_owns(this, _kittyId));\n        _transfer(this, _recipient, _kittyId);\n    }\n\n    /// @notice Returns the number of Kitties owned by a specific address.\n    /// @param _owner The owner address to check.\n    /// @dev Required for ERC-721 compliance\n    function balanceOf(address _owner) public view returns (uint256 count) {\n        return ownershipTokenCount[_owner];\n    }\n\n    /// @notice Transfers a Kitty to another address. If transferring to a smart\n    ///  contract be VERY CAREFUL to ensure that it is aware of ERC-721 (or\n    ///  CryptoKitties specifically) or your Kitty may be lost forever. Seriously.\n    /// @param _to The address of the recipient, can be a user or contract.\n    /// @param _tokenId The ID of the Kitty to transfer.\n    /// @dev Required for ERC-721 compliance.\n    function transfer(\n        address _to,\n        uint256 _tokenId\n    )\n        public\n        whenNotPaused\n    {\n        // Safety check to prevent against an unexpected 0x0 default.\n        require(_to != address(0));\n        // You can only send your own cat.\n        require(_owns(msg.sender, _tokenId));\n\n        // Reassign ownership, clear pending approvals, emit Transfer event.\n        _transfer(msg.sender, _to, _tokenId);\n    }\n\n    /// @notice Grant another address the right to transfer a specific Kitty via\n    ///  transferFrom(). This is the preferred flow for transfering NFTs to contracts.\n    /// @param _to The address to be granted transfer approval. Pass address(0) to\n    ///  clear all approvals.\n    /// @param _tokenId The ID of the Kitty that can be transferred if this call succeeds.\n    /// @dev Required for ERC-721 compliance.\n    function approve(\n        address _to,\n        uint256 _tokenId\n    )\n        public\n        whenNotPaused\n    {\n        // Only an owner can grant transfer approval.\n        require(_owns(msg.sender, _tokenId));\n\n        // Register the approval (replacing any previous approval).\n        _approve(_tokenId, _to);\n\n        // Emit approval event.\n        Approval(msg.sender, _to, _tokenId);\n    }\n\n    /// @notice Transfer a Kitty owned by another address, for which the calling address\n    ///  has previously been granted transfer approval by the owner.\n    /// @param _from The address that owns the Kitty to be transfered.\n    /// @param _to The address that should take ownership of the Kitty. Can be any address,\n    ///  including the caller.\n    /// @param _tokenId The ID of the Kitty to be transferred.\n    /// @dev Required for ERC-721 compliance.\n    function transferFrom(\n        address _from,\n        address _to,\n        uint256 _tokenId\n    )\n        public\n        whenNotPaused\n    {\n        // Check for approval and valid ownership\n        require(_approvedFor(msg.sender, _tokenId));\n        require(_owns(_from, _tokenId));\n\n        // Reassign ownership (also clears pending approvals and emits Transfer event).\n        _transfer(_from, _to, _tokenId);\n    }\n\n    /// @notice Returns the total number of Kitties currently in existence.\n    /// @dev Required for ERC-721 compliance.\n    function totalSupply() public view returns (uint) {\n        return kitties.length - 1;\n    }\n\n    /// @notice Returns the address currently assigned ownership of a given Kitty.\n    /// @dev Required for ERC-721 compliance.\n    function ownerOf(uint256 _tokenId)\n        public\n        view\n        returns (address owner)\n    {\n        owner = kittyIndexToOwner[_tokenId];\n\n        require(owner != address(0));\n    }\n\n    /// @notice Returns the nth Kitty assigned to an address, with n specified by the\n    ///  _index argument.\n    /// @param _owner The owner whose Kitties we are interested in.\n    /// @param _index The zero-based index of the cat within the owner's list of cats.\n    ///  Must be less than balanceOf(_owner).\n    /// @dev This method MUST NEVER be called by smart contract code. It will almost\n    ///  certainly blow past the block gas limit once there are a large number of\n    ///  Kitties in existence. Exists only to allow off-chain queries of ownership.\n    ///  Optional method for ERC-721.\n    function tokensOfOwnerByIndex(address _owner, uint256 _index)\n        external\n        view\n        returns (uint256 tokenId)\n    {\n        uint256 count = 0;\n        for (uint256 i = 1; i <= totalSupply(); i++) {\n            if (kittyIndexToOwner[i] == _owner) {\n                if (count == _index) {\n                    return i;\n                } else {\n                    count++;\n                }\n            }\n        }\n        revert();\n    }\n}\n",
  "sourcePath": "/private/tmp/kleros-interaction/contracts/standard/arbitration/CriptoKitties/KittyOwnership.sol",
  "ast": {
    "absolutePath": "/private/tmp/kleros-interaction/contracts/standard/arbitration/CriptoKitties/KittyOwnership.sol",
    "exportedSymbols": {
      "KittyOwnership": [
        8459
      ]
    },
    "id": 8460,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8178,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".18"
        ],
        "nodeType": "PragmaDirective",
        "src": "325:24:27"
      },
      {
        "absolutePath": "/private/tmp/kleros-interaction/contracts/standard/arbitration/CriptoKitties/KittyBase.sol",
        "file": "./KittyBase.sol",
        "id": 8179,
        "nodeType": "ImportDirective",
        "scope": 8460,
        "sourceUnit": 7169,
        "src": "351:25:27",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/private/tmp/kleros-interaction/contracts/standard/arbitration/CriptoKitties/ERC721.sol",
        "file": "./ERC721.sol",
        "id": 8180,
        "nodeType": "ImportDirective",
        "scope": 8460,
        "sourceUnit": 6436,
        "src": "377:22:27",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8181,
              "name": "KittyBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7168,
              "src": "747:9:27",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KittyBase_$7168",
                "typeString": "contract KittyBase"
              }
            },
            "id": 8182,
            "nodeType": "InheritanceSpecifier",
            "src": "747:9:27"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8183,
              "name": "ERC721",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6435,
              "src": "758:6:27",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC721_$6435",
                "typeString": "contract ERC721"
              }
            },
            "id": 8184,
            "nodeType": "InheritanceSpecifier",
            "src": "758:6:27"
          }
        ],
        "contractDependencies": [
          6435,
          6662,
          7168
        ],
        "contractKind": "contract",
        "documentation": "@title The facet of the CryptoKitties core contract that manages ownership, ERC-721 (draft) compliant.\n @author Axiom Zen (https://www.axiomzen.co)\n @dev Ref: https://github.com/ethereum/EIPs/issues/721\n  See the KittyCore contract documentation to understand how the various contract facets are arranged.",
        "fullyImplemented": true,
        "id": 8459,
        "linearizedBaseContracts": [
          8459,
          6435,
          7168,
          6662
        ],
        "name": "KittyOwnership",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 8187,
            "name": "name",
            "nodeType": "VariableDeclaration",
            "scope": 8459,
            "src": "853:36:27",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 8185,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "853:6:27",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "43727970746f4b697474696573",
              "id": 8186,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "874:15:27",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_c13b881b7ab0310915e32767fd83683d3c5150c07e8da093f99668a8f0d0e463",
                "typeString": "literal_string \"CryptoKitties\""
              },
              "value": "CryptoKitties"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 8190,
            "name": "symbol",
            "nodeType": "VariableDeclaration",
            "scope": 8459,
            "src": "895:27:27",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 8188,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "895:6:27",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "434b",
              "id": 8189,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "918:4:27",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_04713d815a01f55260c897073f342459cf47ca62d132be73155ba8970113380e",
                "typeString": "literal_string \"CK\""
              },
              "value": "CK"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 8197,
              "nodeType": "Block",
              "src": "1039:28:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 8195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1056:4:27",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 8194,
                  "id": 8196,
                  "nodeType": "Return",
                  "src": "1049:11:27"
                }
              ]
            },
            "documentation": null,
            "id": 8198,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "implementsERC721",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8191,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1005:2:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8194,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8193,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8198,
                  "src": "1029:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8192,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1029:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1028:6:27"
            },
            "scope": 8459,
            "src": "980:87:27",
            "stateMutability": "pure",
            "superFunction": 6376,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8213,
              "nodeType": "Block",
              "src": "1561:64:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 8211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8207,
                        "name": "kittyIndexToOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7013,
                        "src": "1578:17:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 8209,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8208,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8202,
                        "src": "1596:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1578:27:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 8210,
                      "name": "_claimant",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8200,
                      "src": "1609:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1578:40:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 8206,
                  "id": 8212,
                  "nodeType": "Return",
                  "src": "1571:47:27"
                }
              ]
            },
            "documentation": "@dev Checks if a given address is the current owner of a particular Kitty.\n @param _claimant the address we are validating against.\n @param _tokenId kitten id, only valid when > 0",
            "id": 8214,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_owns",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8203,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8200,
                  "name": "_claimant",
                  "nodeType": "VariableDeclaration",
                  "scope": 8214,
                  "src": "1495:17:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8199,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1495:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8202,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8214,
                  "src": "1514:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8201,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1514:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1494:37:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8205,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8214,
                  "src": "1555:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8204,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1555:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1554:6:27"
            },
            "scope": 8459,
            "src": "1480:145:27",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8229,
              "nodeType": "Block",
              "src": "1947:67:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 8227,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8223,
                        "name": "kittyIndexToApproved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7021,
                        "src": "1964:20:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 8225,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8224,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8218,
                        "src": "1985:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1964:30:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 8226,
                      "name": "_claimant",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8216,
                      "src": "1998:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1964:43:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 8222,
                  "id": 8228,
                  "nodeType": "Return",
                  "src": "1957:50:27"
                }
              ]
            },
            "documentation": "@dev Checks if a given address currently has transferApproval for a particular Kitty.\n @param _claimant the address we are confirming kitten is approved for.\n @param _tokenId kitten id, only valid when > 0",
            "id": 8230,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_approvedFor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8219,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8216,
                  "name": "_claimant",
                  "nodeType": "VariableDeclaration",
                  "scope": 8230,
                  "src": "1881:17:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8215,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1881:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8218,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8230,
                  "src": "1900:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8217,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1900:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1880:37:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8222,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8221,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8230,
                  "src": "1941:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8220,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1941:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1940:6:27"
            },
            "scope": 8459,
            "src": "1859:155:27",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8243,
              "nodeType": "Block",
              "src": "2521:59:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8241,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8237,
                        "name": "kittyIndexToApproved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7021,
                        "src": "2531:20:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 8239,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8238,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8232,
                        "src": "2552:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2531:30:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 8240,
                      "name": "_approved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8234,
                      "src": "2564:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2531:42:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 8242,
                  "nodeType": "ExpressionStatement",
                  "src": "2531:42:27"
                }
              ]
            },
            "documentation": "@dev Marks an address as being approved for transferFrom(), overwriting any previous\n  approval. Setting _approved to address(0) clears all transfer approval.\n  NOTE: _approve() does NOT send the Approval event. This is intentional because\n  _approve() and transferFrom() are used together for putting Kitties on auction, and\n  there is no value in spamming the log with Approval events in that case.",
            "id": 8244,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_approve",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8235,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8232,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8244,
                  "src": "2475:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8231,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2475:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8234,
                  "name": "_approved",
                  "nodeType": "VariableDeclaration",
                  "scope": 8244,
                  "src": "2493:17:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8233,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2493:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2474:37:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8236,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2521:0:27"
            },
            "scope": 8459,
            "src": "2457:123:27",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8268,
              "nodeType": "Block",
              "src": "3108:94:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8257,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20676,
                            "src": "3132:4:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_KittyOwnership_$8459",
                              "typeString": "contract KittyOwnership"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8258,
                            "name": "_kittyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8246,
                            "src": "3138:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_KittyOwnership_$8459",
                              "typeString": "contract KittyOwnership"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8256,
                          "name": "_owns",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8214,
                          "src": "3126:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 8259,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3126:21:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8255,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20642,
                      "src": "3118:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 8260,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3118:30:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8261,
                  "nodeType": "ExpressionStatement",
                  "src": "3118:30:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8263,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20676,
                        "src": "3168:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KittyOwnership_$8459",
                          "typeString": "contract KittyOwnership"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8264,
                        "name": "_recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8248,
                        "src": "3174:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8265,
                        "name": "_kittyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8246,
                        "src": "3186:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_KittyOwnership_$8459",
                          "typeString": "contract KittyOwnership"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8262,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7074,
                      "src": "3158:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 8266,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3158:37:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8267,
                  "nodeType": "ExpressionStatement",
                  "src": "3158:37:27"
                }
              ]
            },
            "documentation": "@dev Transfers a kitty owned by this contract to the specified address.\n  Used to rescue lost kitties. (There is no \"proper\" flow where this contract\n  should be the owner of any Kitty. This function exists for us to reassign\n  the ownership of Kitties that users may have accidentally sent to our address.)\n @param _kittyId - ID of kitty\n @param _recipient - Address to send the cat to",
            "id": 8269,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 8251,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8250,
                  "name": "onlyCOO",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6526,
                  "src": "3086:7:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3086:7:27"
              },
              {
                "arguments": null,
                "id": 8253,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8252,
                  "name": "whenNotPaused",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6629,
                  "src": "3094:13:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3094:13:27"
              }
            ],
            "name": "rescueLostKitty",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8249,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8246,
                  "name": "_kittyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8269,
                  "src": "3041:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8245,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3041:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8248,
                  "name": "_recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 8269,
                  "src": "3059:18:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8247,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3059:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3040:38:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8254,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3108:0:27"
            },
            "scope": 8459,
            "src": "3016:186:27",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8280,
              "nodeType": "Block",
              "src": "3449:51:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 8276,
                      "name": "ownershipTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7017,
                      "src": "3466:19:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 8278,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 8277,
                      "name": "_owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8271,
                      "src": "3486:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3466:27:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8275,
                  "id": 8279,
                  "nodeType": "Return",
                  "src": "3459:34:27"
                }
              ]
            },
            "documentation": "@notice Returns the number of Kitties owned by a specific address.\n @param _owner The owner address to check.\n @dev Required for ERC-721 compliance",
            "id": 8281,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "balanceOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8272,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8271,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 8281,
                  "src": "3397:14:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8270,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3397:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3396:16:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8275,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8274,
                  "name": "count",
                  "nodeType": "VariableDeclaration",
                  "scope": 8281,
                  "src": "3434:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8273,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3434:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3433:15:27"
            },
            "scope": 8459,
            "src": "3378:122:27",
            "stateMutability": "view",
            "superFunction": 6388,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8313,
              "nodeType": "Block",
              "src": "4037:326:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 8295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 8291,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8283,
                          "src": "4125:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 8293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4140:1:27",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 8292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4132:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 8294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4132:10:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4125:17:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8290,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20642,
                      "src": "4117:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 8296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4117:26:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8297,
                  "nodeType": "ExpressionStatement",
                  "src": "4117:26:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8300,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20639,
                              "src": "4210:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4210:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8302,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8285,
                            "src": "4222:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8299,
                          "name": "_owns",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8214,
                          "src": "4204:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 8303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4204:27:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8298,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20642,
                      "src": "4196:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 8304,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4196:36:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8305,
                  "nodeType": "ExpressionStatement",
                  "src": "4196:36:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 8307,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20639,
                          "src": "4330:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 8308,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4330:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8309,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8283,
                        "src": "4342:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8310,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8285,
                        "src": "4347:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8306,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7074,
                      "src": "4320:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 8311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4320:36:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8312,
                  "nodeType": "ExpressionStatement",
                  "src": "4320:36:27"
                }
              ]
            },
            "documentation": "@notice Transfers a Kitty to another address. If transferring to a smart\n  contract be VERY CAREFUL to ensure that it is aware of ERC-721 (or\n  CryptoKitties specifically) or your Kitty may be lost forever. Seriously.\n @param _to The address of the recipient, can be a user or contract.\n @param _tokenId The ID of the Kitty to transfer.\n @dev Required for ERC-721 compliance.",
            "id": 8314,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 8288,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8287,
                  "name": "whenNotPaused",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6629,
                  "src": "4019:13:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4019:13:27"
              }
            ],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8283,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 8314,
                  "src": "3952:11:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8282,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3952:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8285,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8314,
                  "src": "3973:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8284,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3973:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3942:53:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8289,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4037:0:27"
            },
            "scope": 8459,
            "src": "3925:438:27",
            "stateMutability": "nonpayable",
            "superFunction": 6418,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8343,
              "nodeType": "Block",
              "src": "4898:287:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8325,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20639,
                              "src": "4976:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8326,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4976:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8327,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8318,
                            "src": "4988:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8324,
                          "name": "_owns",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8214,
                          "src": "4970:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 8328,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4970:27:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8323,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20642,
                      "src": "4962:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 8329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4962:36:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8330,
                  "nodeType": "ExpressionStatement",
                  "src": "4962:36:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8332,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8318,
                        "src": "5086:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8333,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8316,
                        "src": "5096:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8331,
                      "name": "_approve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8244,
                      "src": "5077:8:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 8334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5077:23:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8335,
                  "nodeType": "ExpressionStatement",
                  "src": "5077:23:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 8337,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20639,
                          "src": "5152:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 8338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5152:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8339,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8316,
                        "src": "5164:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8340,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8318,
                        "src": "5169:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8336,
                      "name": "Approval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6434,
                      "src": "5143:8:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 8341,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5143:35:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8342,
                  "nodeType": "ExpressionStatement",
                  "src": "5143:35:27"
                }
              ]
            },
            "documentation": "@notice Grant another address the right to transfer a specific Kitty via\n  transferFrom(). This is the preferred flow for transfering NFTs to contracts.\n @param _to The address to be granted transfer approval. Pass address(0) to\n  clear all approvals.\n @param _tokenId The ID of the Kitty that can be transferred if this call succeeds.\n @dev Required for ERC-721 compliance.",
            "id": 8344,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 8321,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8320,
                  "name": "whenNotPaused",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6629,
                  "src": "4880:13:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4880:13:27"
              }
            ],
            "name": "approve",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8319,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8316,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 8344,
                  "src": "4813:11:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8315,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4813:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8318,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8344,
                  "src": "4834:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8317,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4834:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4803:53:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8322,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4898:0:27"
            },
            "scope": 8459,
            "src": "4787:398:27",
            "stateMutability": "nonpayable",
            "superFunction": 6402,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8376,
              "nodeType": "Block",
              "src": "5791:281:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8357,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20639,
                              "src": "5872:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5872:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8359,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8350,
                            "src": "5884:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8356,
                          "name": "_approvedFor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8230,
                          "src": "5859:12:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 8360,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5859:34:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8355,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20642,
                      "src": "5851:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 8361,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5851:43:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8362,
                  "nodeType": "ExpressionStatement",
                  "src": "5851:43:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8365,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8346,
                            "src": "5918:5:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8366,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8350,
                            "src": "5925:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8364,
                          "name": "_owns",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8214,
                          "src": "5912:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 8367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5912:22:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8363,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20642,
                      "src": "5904:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 8368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5904:31:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8369,
                  "nodeType": "ExpressionStatement",
                  "src": "5904:31:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8371,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8346,
                        "src": "6044:5:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8372,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8348,
                        "src": "6051:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8373,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8350,
                        "src": "6056:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8370,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7074,
                      "src": "6034:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 8374,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6034:31:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8375,
                  "nodeType": "ExpressionStatement",
                  "src": "6034:31:27"
                }
              ]
            },
            "documentation": "@notice Transfer a Kitty owned by another address, for which the calling address\n  has previously been granted transfer approval by the owner.\n @param _from The address that owns the Kitty to be transfered.\n @param _to The address that should take ownership of the Kitty. Can be any address,\n  including the caller.\n @param _tokenId The ID of the Kitty to be transferred.\n @dev Required for ERC-721 compliance.",
            "id": 8377,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 8353,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8352,
                  "name": "whenNotPaused",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6629,
                  "src": "5773:13:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5773:13:27"
              }
            ],
            "name": "transferFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8351,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8346,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 8377,
                  "src": "5683:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8345,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5683:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8348,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 8377,
                  "src": "5706:11:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8347,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5706:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8350,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8377,
                  "src": "5727:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8349,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5727:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5673:76:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8354,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5791:0:27"
            },
            "scope": 8459,
            "src": "5652:420:27",
            "stateMutability": "nonpayable",
            "superFunction": 6411,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8387,
              "nodeType": "Block",
              "src": "6250:42:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8385,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 8382,
                        "name": "kitties",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7009,
                        "src": "6267:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Kitty_$6959_storage_$dyn_storage",
                          "typeString": "struct KittyBase.Kitty storage ref[] storage ref"
                        }
                      },
                      "id": 8383,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6267:14:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 8384,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6284:1:27",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "6267:18:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8381,
                  "id": 8386,
                  "nodeType": "Return",
                  "src": "6260:25:27"
                }
              ]
            },
            "documentation": "@notice Returns the total number of Kitties currently in existence.\n @dev Required for ERC-721 compliance.",
            "id": 8388,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "totalSupply",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8378,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6220:2:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8381,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8380,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8388,
                  "src": "6244:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8379,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6244:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6243:6:27"
            },
            "scope": 8459,
            "src": "6200:92:27",
            "stateMutability": "view",
            "superFunction": 6381,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8409,
              "nodeType": "Block",
              "src": "6526:91:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8399,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8395,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8393,
                      "src": "6536:5:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8396,
                        "name": "kittyIndexToOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7013,
                        "src": "6544:17:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 8398,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8397,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8390,
                        "src": "6562:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6544:27:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "6536:35:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 8400,
                  "nodeType": "ExpressionStatement",
                  "src": "6536:35:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 8406,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 8402,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8393,
                          "src": "6590:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 8404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6607:1:27",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 8403,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6599:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 8405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6599:10:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "6590:19:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8401,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20642,
                      "src": "6582:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 8407,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6582:28:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8408,
                  "nodeType": "ExpressionStatement",
                  "src": "6582:28:27"
                }
              ]
            },
            "documentation": "@notice Returns the address currently assigned ownership of a given Kitty.\n @dev Required for ERC-721 compliance.",
            "id": 8410,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ownerOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8391,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8390,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8410,
                  "src": "6444:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8389,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6444:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6443:18:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8394,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8393,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 8410,
                  "src": "6507:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8392,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6507:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6506:15:27"
            },
            "scope": 8459,
            "src": "6427:190:27",
            "stateMutability": "view",
            "superFunction": 6395,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8457,
              "nodeType": "Block",
              "src": "7355:322:27",
              "statements": [
                {
                  "assignments": [
                    8420
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8420,
                      "name": "count",
                      "nodeType": "VariableDeclaration",
                      "scope": 8458,
                      "src": "7365:13:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8419,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7365:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8422,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 8421,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7381:1:27",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7365:17:27"
                },
                {
                  "body": {
                    "id": 8452,
                    "nodeType": "Block",
                    "src": "7437:216:27",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 8438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8434,
                              "name": "kittyIndexToOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7013,
                              "src": "7455:17:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 8436,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8435,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8424,
                              "src": "7473:1:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7455:20:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 8437,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8412,
                            "src": "7479:6:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7455:30:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 8451,
                        "nodeType": "IfStatement",
                        "src": "7451:192:27",
                        "trueBody": {
                          "id": 8450,
                          "nodeType": "Block",
                          "src": "7487:156:27",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8441,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 8439,
                                  "name": "count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8420,
                                  "src": "7509:5:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 8440,
                                  "name": "_index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8414,
                                  "src": "7518:6:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7509:15:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 8448,
                                "nodeType": "Block",
                                "src": "7581:48:27",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8446,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "7603:7:27",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 8445,
                                        "name": "count",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8420,
                                        "src": "7603:5:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 8447,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7603:7:27"
                                  }
                                ]
                              },
                              "id": 8449,
                              "nodeType": "IfStatement",
                              "src": "7505:124:27",
                              "trueBody": {
                                "id": 8444,
                                "nodeType": "Block",
                                "src": "7526:49:27",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8442,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8424,
                                      "src": "7555:1:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "functionReturnParameters": 8418,
                                    "id": 8443,
                                    "nodeType": "Return",
                                    "src": "7548:8:27"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8427,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8424,
                      "src": "7412:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 8428,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          8388
                        ],
                        "referencedDeclaration": 8388,
                        "src": "7417:11:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 8429,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7417:13:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7412:18:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 8453,
                  "initializationExpression": {
                    "assignments": [
                      8424
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8424,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 8458,
                        "src": "7397:9:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8423,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7397:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 8426,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 8425,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7409:1:27",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7397:13:27"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 8432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "7432:3:27",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 8431,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8424,
                        "src": "7432:1:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 8433,
                    "nodeType": "ExpressionStatement",
                    "src": "7432:3:27"
                  },
                  "nodeType": "ForStatement",
                  "src": "7392:261:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8454,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20644,
                        20645
                      ],
                      "referencedDeclaration": 20644,
                      "src": "7662:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 8455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7662:8:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8456,
                  "nodeType": "ExpressionStatement",
                  "src": "7662:8:27"
                }
              ]
            },
            "documentation": "@notice Returns the nth Kitty assigned to an address, with n specified by the\n  _index argument.\n @param _owner The owner whose Kitties we are interested in.\n @param _index The zero-based index of the cat within the owner's list of cats.\n  Must be less than balanceOf(_owner).\n @dev This method MUST NEVER be called by smart contract code. It will almost\n  certainly blow past the block gas limit once there are a large number of\n  Kitties in existence. Exists only to allow off-chain queries of ownership.\n  Optional method for ERC-721.",
            "id": 8458,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "tokensOfOwnerByIndex",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8415,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8412,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 8458,
                  "src": "7255:14:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8411,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7255:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8414,
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "scope": 8458,
                  "src": "7271:14:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8413,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7271:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7254:32:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8418,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8417,
                  "name": "tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8458,
                  "src": "7334:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8416,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7334:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7333:17:27"
            },
            "scope": 8459,
            "src": "7225:452:27",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 8460,
        "src": "720:6959:27"
      }
    ],
    "src": "325:7355:27"
  },
  "legacyAST": {
    "absolutePath": "/private/tmp/kleros-interaction/contracts/standard/arbitration/CriptoKitties/KittyOwnership.sol",
    "exportedSymbols": {
      "KittyOwnership": [
        8459
      ]
    },
    "id": 8460,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8178,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".18"
        ],
        "nodeType": "PragmaDirective",
        "src": "325:24:27"
      },
      {
        "absolutePath": "/private/tmp/kleros-interaction/contracts/standard/arbitration/CriptoKitties/KittyBase.sol",
        "file": "./KittyBase.sol",
        "id": 8179,
        "nodeType": "ImportDirective",
        "scope": 8460,
        "sourceUnit": 7169,
        "src": "351:25:27",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/private/tmp/kleros-interaction/contracts/standard/arbitration/CriptoKitties/ERC721.sol",
        "file": "./ERC721.sol",
        "id": 8180,
        "nodeType": "ImportDirective",
        "scope": 8460,
        "sourceUnit": 6436,
        "src": "377:22:27",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8181,
              "name": "KittyBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7168,
              "src": "747:9:27",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KittyBase_$7168",
                "typeString": "contract KittyBase"
              }
            },
            "id": 8182,
            "nodeType": "InheritanceSpecifier",
            "src": "747:9:27"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8183,
              "name": "ERC721",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6435,
              "src": "758:6:27",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC721_$6435",
                "typeString": "contract ERC721"
              }
            },
            "id": 8184,
            "nodeType": "InheritanceSpecifier",
            "src": "758:6:27"
          }
        ],
        "contractDependencies": [
          6435,
          6662,
          7168
        ],
        "contractKind": "contract",
        "documentation": "@title The facet of the CryptoKitties core contract that manages ownership, ERC-721 (draft) compliant.\n @author Axiom Zen (https://www.axiomzen.co)\n @dev Ref: https://github.com/ethereum/EIPs/issues/721\n  See the KittyCore contract documentation to understand how the various contract facets are arranged.",
        "fullyImplemented": true,
        "id": 8459,
        "linearizedBaseContracts": [
          8459,
          6435,
          7168,
          6662
        ],
        "name": "KittyOwnership",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 8187,
            "name": "name",
            "nodeType": "VariableDeclaration",
            "scope": 8459,
            "src": "853:36:27",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 8185,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "853:6:27",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "43727970746f4b697474696573",
              "id": 8186,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "874:15:27",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_c13b881b7ab0310915e32767fd83683d3c5150c07e8da093f99668a8f0d0e463",
                "typeString": "literal_string \"CryptoKitties\""
              },
              "value": "CryptoKitties"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 8190,
            "name": "symbol",
            "nodeType": "VariableDeclaration",
            "scope": 8459,
            "src": "895:27:27",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 8188,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "895:6:27",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "434b",
              "id": 8189,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "918:4:27",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_04713d815a01f55260c897073f342459cf47ca62d132be73155ba8970113380e",
                "typeString": "literal_string \"CK\""
              },
              "value": "CK"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 8197,
              "nodeType": "Block",
              "src": "1039:28:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 8195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1056:4:27",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 8194,
                  "id": 8196,
                  "nodeType": "Return",
                  "src": "1049:11:27"
                }
              ]
            },
            "documentation": null,
            "id": 8198,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "implementsERC721",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8191,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1005:2:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8194,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8193,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8198,
                  "src": "1029:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8192,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1029:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1028:6:27"
            },
            "scope": 8459,
            "src": "980:87:27",
            "stateMutability": "pure",
            "superFunction": 6376,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8213,
              "nodeType": "Block",
              "src": "1561:64:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 8211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8207,
                        "name": "kittyIndexToOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7013,
                        "src": "1578:17:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 8209,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8208,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8202,
                        "src": "1596:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1578:27:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 8210,
                      "name": "_claimant",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8200,
                      "src": "1609:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1578:40:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 8206,
                  "id": 8212,
                  "nodeType": "Return",
                  "src": "1571:47:27"
                }
              ]
            },
            "documentation": "@dev Checks if a given address is the current owner of a particular Kitty.\n @param _claimant the address we are validating against.\n @param _tokenId kitten id, only valid when > 0",
            "id": 8214,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_owns",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8203,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8200,
                  "name": "_claimant",
                  "nodeType": "VariableDeclaration",
                  "scope": 8214,
                  "src": "1495:17:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8199,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1495:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8202,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8214,
                  "src": "1514:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8201,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1514:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1494:37:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8205,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8214,
                  "src": "1555:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8204,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1555:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1554:6:27"
            },
            "scope": 8459,
            "src": "1480:145:27",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8229,
              "nodeType": "Block",
              "src": "1947:67:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 8227,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8223,
                        "name": "kittyIndexToApproved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7021,
                        "src": "1964:20:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 8225,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8224,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8218,
                        "src": "1985:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1964:30:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 8226,
                      "name": "_claimant",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8216,
                      "src": "1998:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1964:43:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 8222,
                  "id": 8228,
                  "nodeType": "Return",
                  "src": "1957:50:27"
                }
              ]
            },
            "documentation": "@dev Checks if a given address currently has transferApproval for a particular Kitty.\n @param _claimant the address we are confirming kitten is approved for.\n @param _tokenId kitten id, only valid when > 0",
            "id": 8230,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_approvedFor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8219,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8216,
                  "name": "_claimant",
                  "nodeType": "VariableDeclaration",
                  "scope": 8230,
                  "src": "1881:17:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8215,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1881:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8218,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8230,
                  "src": "1900:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8217,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1900:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1880:37:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8222,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8221,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8230,
                  "src": "1941:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 8220,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1941:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1940:6:27"
            },
            "scope": 8459,
            "src": "1859:155:27",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8243,
              "nodeType": "Block",
              "src": "2521:59:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8241,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8237,
                        "name": "kittyIndexToApproved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7021,
                        "src": "2531:20:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 8239,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8238,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8232,
                        "src": "2552:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2531:30:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 8240,
                      "name": "_approved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8234,
                      "src": "2564:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2531:42:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 8242,
                  "nodeType": "ExpressionStatement",
                  "src": "2531:42:27"
                }
              ]
            },
            "documentation": "@dev Marks an address as being approved for transferFrom(), overwriting any previous\n  approval. Setting _approved to address(0) clears all transfer approval.\n  NOTE: _approve() does NOT send the Approval event. This is intentional because\n  _approve() and transferFrom() are used together for putting Kitties on auction, and\n  there is no value in spamming the log with Approval events in that case.",
            "id": 8244,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_approve",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8235,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8232,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8244,
                  "src": "2475:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8231,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2475:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8234,
                  "name": "_approved",
                  "nodeType": "VariableDeclaration",
                  "scope": 8244,
                  "src": "2493:17:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8233,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2493:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2474:37:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8236,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2521:0:27"
            },
            "scope": 8459,
            "src": "2457:123:27",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8268,
              "nodeType": "Block",
              "src": "3108:94:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8257,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20676,
                            "src": "3132:4:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_KittyOwnership_$8459",
                              "typeString": "contract KittyOwnership"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8258,
                            "name": "_kittyId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8246,
                            "src": "3138:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_KittyOwnership_$8459",
                              "typeString": "contract KittyOwnership"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8256,
                          "name": "_owns",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8214,
                          "src": "3126:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 8259,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3126:21:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8255,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20642,
                      "src": "3118:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 8260,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3118:30:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8261,
                  "nodeType": "ExpressionStatement",
                  "src": "3118:30:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8263,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 20676,
                        "src": "3168:4:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_KittyOwnership_$8459",
                          "typeString": "contract KittyOwnership"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8264,
                        "name": "_recipient",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8248,
                        "src": "3174:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8265,
                        "name": "_kittyId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8246,
                        "src": "3186:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_KittyOwnership_$8459",
                          "typeString": "contract KittyOwnership"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8262,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7074,
                      "src": "3158:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 8266,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3158:37:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8267,
                  "nodeType": "ExpressionStatement",
                  "src": "3158:37:27"
                }
              ]
            },
            "documentation": "@dev Transfers a kitty owned by this contract to the specified address.\n  Used to rescue lost kitties. (There is no \"proper\" flow where this contract\n  should be the owner of any Kitty. This function exists for us to reassign\n  the ownership of Kitties that users may have accidentally sent to our address.)\n @param _kittyId - ID of kitty\n @param _recipient - Address to send the cat to",
            "id": 8269,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 8251,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8250,
                  "name": "onlyCOO",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6526,
                  "src": "3086:7:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3086:7:27"
              },
              {
                "arguments": null,
                "id": 8253,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8252,
                  "name": "whenNotPaused",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6629,
                  "src": "3094:13:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3094:13:27"
              }
            ],
            "name": "rescueLostKitty",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8249,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8246,
                  "name": "_kittyId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8269,
                  "src": "3041:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8245,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3041:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8248,
                  "name": "_recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 8269,
                  "src": "3059:18:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8247,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3059:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3040:38:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8254,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3108:0:27"
            },
            "scope": 8459,
            "src": "3016:186:27",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8280,
              "nodeType": "Block",
              "src": "3449:51:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 8276,
                      "name": "ownershipTokenCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7017,
                      "src": "3466:19:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 8278,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 8277,
                      "name": "_owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8271,
                      "src": "3486:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3466:27:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8275,
                  "id": 8279,
                  "nodeType": "Return",
                  "src": "3459:34:27"
                }
              ]
            },
            "documentation": "@notice Returns the number of Kitties owned by a specific address.\n @param _owner The owner address to check.\n @dev Required for ERC-721 compliance",
            "id": 8281,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "balanceOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8272,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8271,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 8281,
                  "src": "3397:14:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8270,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3397:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3396:16:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8275,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8274,
                  "name": "count",
                  "nodeType": "VariableDeclaration",
                  "scope": 8281,
                  "src": "3434:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8273,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3434:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3433:15:27"
            },
            "scope": 8459,
            "src": "3378:122:27",
            "stateMutability": "view",
            "superFunction": 6388,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8313,
              "nodeType": "Block",
              "src": "4037:326:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 8295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 8291,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8283,
                          "src": "4125:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 8293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4140:1:27",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 8292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4132:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 8294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4132:10:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4125:17:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8290,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20642,
                      "src": "4117:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 8296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4117:26:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8297,
                  "nodeType": "ExpressionStatement",
                  "src": "4117:26:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8300,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20639,
                              "src": "4210:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4210:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8302,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8285,
                            "src": "4222:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8299,
                          "name": "_owns",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8214,
                          "src": "4204:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 8303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4204:27:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8298,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20642,
                      "src": "4196:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 8304,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4196:36:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8305,
                  "nodeType": "ExpressionStatement",
                  "src": "4196:36:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 8307,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20639,
                          "src": "4330:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 8308,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4330:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8309,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8283,
                        "src": "4342:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8310,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8285,
                        "src": "4347:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8306,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7074,
                      "src": "4320:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 8311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4320:36:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8312,
                  "nodeType": "ExpressionStatement",
                  "src": "4320:36:27"
                }
              ]
            },
            "documentation": "@notice Transfers a Kitty to another address. If transferring to a smart\n  contract be VERY CAREFUL to ensure that it is aware of ERC-721 (or\n  CryptoKitties specifically) or your Kitty may be lost forever. Seriously.\n @param _to The address of the recipient, can be a user or contract.\n @param _tokenId The ID of the Kitty to transfer.\n @dev Required for ERC-721 compliance.",
            "id": 8314,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 8288,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8287,
                  "name": "whenNotPaused",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6629,
                  "src": "4019:13:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4019:13:27"
              }
            ],
            "name": "transfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8283,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 8314,
                  "src": "3952:11:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8282,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3952:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8285,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8314,
                  "src": "3973:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8284,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3973:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3942:53:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8289,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4037:0:27"
            },
            "scope": 8459,
            "src": "3925:438:27",
            "stateMutability": "nonpayable",
            "superFunction": 6418,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8343,
              "nodeType": "Block",
              "src": "4898:287:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8325,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20639,
                              "src": "4976:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8326,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4976:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8327,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8318,
                            "src": "4988:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8324,
                          "name": "_owns",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8214,
                          "src": "4970:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 8328,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4970:27:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8323,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20642,
                      "src": "4962:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 8329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4962:36:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8330,
                  "nodeType": "ExpressionStatement",
                  "src": "4962:36:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8332,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8318,
                        "src": "5086:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8333,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8316,
                        "src": "5096:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 8331,
                      "name": "_approve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8244,
                      "src": "5077:8:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 8334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5077:23:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8335,
                  "nodeType": "ExpressionStatement",
                  "src": "5077:23:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 8337,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20639,
                          "src": "5152:3:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 8338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5152:10:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8339,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8316,
                        "src": "5164:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8340,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8318,
                        "src": "5169:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8336,
                      "name": "Approval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6434,
                      "src": "5143:8:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 8341,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5143:35:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8342,
                  "nodeType": "ExpressionStatement",
                  "src": "5143:35:27"
                }
              ]
            },
            "documentation": "@notice Grant another address the right to transfer a specific Kitty via\n  transferFrom(). This is the preferred flow for transfering NFTs to contracts.\n @param _to The address to be granted transfer approval. Pass address(0) to\n  clear all approvals.\n @param _tokenId The ID of the Kitty that can be transferred if this call succeeds.\n @dev Required for ERC-721 compliance.",
            "id": 8344,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 8321,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8320,
                  "name": "whenNotPaused",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6629,
                  "src": "4880:13:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4880:13:27"
              }
            ],
            "name": "approve",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8319,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8316,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 8344,
                  "src": "4813:11:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8315,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4813:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8318,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8344,
                  "src": "4834:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8317,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4834:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4803:53:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8322,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4898:0:27"
            },
            "scope": 8459,
            "src": "4787:398:27",
            "stateMutability": "nonpayable",
            "superFunction": 6402,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8376,
              "nodeType": "Block",
              "src": "5791:281:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8357,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20639,
                              "src": "5872:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5872:10:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8359,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8350,
                            "src": "5884:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8356,
                          "name": "_approvedFor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8230,
                          "src": "5859:12:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 8360,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5859:34:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8355,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20642,
                      "src": "5851:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 8361,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5851:43:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8362,
                  "nodeType": "ExpressionStatement",
                  "src": "5851:43:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8365,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8346,
                            "src": "5918:5:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8366,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8350,
                            "src": "5925:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8364,
                          "name": "_owns",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8214,
                          "src": "5912:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 8367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5912:22:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8363,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20642,
                      "src": "5904:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 8368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5904:31:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8369,
                  "nodeType": "ExpressionStatement",
                  "src": "5904:31:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 8371,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8346,
                        "src": "6044:5:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8372,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8348,
                        "src": "6051:3:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8373,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8350,
                        "src": "6056:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8370,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7074,
                      "src": "6034:9:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 8374,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6034:31:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8375,
                  "nodeType": "ExpressionStatement",
                  "src": "6034:31:27"
                }
              ]
            },
            "documentation": "@notice Transfer a Kitty owned by another address, for which the calling address\n  has previously been granted transfer approval by the owner.\n @param _from The address that owns the Kitty to be transfered.\n @param _to The address that should take ownership of the Kitty. Can be any address,\n  including the caller.\n @param _tokenId The ID of the Kitty to be transferred.\n @dev Required for ERC-721 compliance.",
            "id": 8377,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 8353,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8352,
                  "name": "whenNotPaused",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6629,
                  "src": "5773:13:27",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5773:13:27"
              }
            ],
            "name": "transferFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8351,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8346,
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 8377,
                  "src": "5683:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8345,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5683:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8348,
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 8377,
                  "src": "5706:11:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8347,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5706:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8350,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8377,
                  "src": "5727:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8349,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5727:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5673:76:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8354,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5791:0:27"
            },
            "scope": 8459,
            "src": "5652:420:27",
            "stateMutability": "nonpayable",
            "superFunction": 6411,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8387,
              "nodeType": "Block",
              "src": "6250:42:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8385,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 8382,
                        "name": "kitties",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7009,
                        "src": "6267:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Kitty_$6959_storage_$dyn_storage",
                          "typeString": "struct KittyBase.Kitty storage ref[] storage ref"
                        }
                      },
                      "id": 8383,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6267:14:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 8384,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6284:1:27",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "6267:18:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 8381,
                  "id": 8386,
                  "nodeType": "Return",
                  "src": "6260:25:27"
                }
              ]
            },
            "documentation": "@notice Returns the total number of Kitties currently in existence.\n @dev Required for ERC-721 compliance.",
            "id": 8388,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "totalSupply",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8378,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6220:2:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8381,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8380,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 8388,
                  "src": "6244:4:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8379,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6244:4:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6243:6:27"
            },
            "scope": 8459,
            "src": "6200:92:27",
            "stateMutability": "view",
            "superFunction": 6381,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8409,
              "nodeType": "Block",
              "src": "6526:91:27",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 8399,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 8395,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8393,
                      "src": "6536:5:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 8396,
                        "name": "kittyIndexToOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7013,
                        "src": "6544:17:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 8398,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 8397,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8390,
                        "src": "6562:8:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6544:27:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "6536:35:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 8400,
                  "nodeType": "ExpressionStatement",
                  "src": "6536:35:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 8406,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 8402,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8393,
                          "src": "6590:5:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 8404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6607:1:27",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 8403,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6599:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 8405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6599:10:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "6590:19:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 8401,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20642,
                        20643
                      ],
                      "referencedDeclaration": 20642,
                      "src": "6582:7:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 8407,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6582:28:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8408,
                  "nodeType": "ExpressionStatement",
                  "src": "6582:28:27"
                }
              ]
            },
            "documentation": "@notice Returns the address currently assigned ownership of a given Kitty.\n @dev Required for ERC-721 compliance.",
            "id": 8410,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ownerOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8391,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8390,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8410,
                  "src": "6444:16:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8389,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6444:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6443:18:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8394,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8393,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 8410,
                  "src": "6507:13:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8392,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6507:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6506:15:27"
            },
            "scope": 8459,
            "src": "6427:190:27",
            "stateMutability": "view",
            "superFunction": 6395,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8457,
              "nodeType": "Block",
              "src": "7355:322:27",
              "statements": [
                {
                  "assignments": [
                    8420
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8420,
                      "name": "count",
                      "nodeType": "VariableDeclaration",
                      "scope": 8458,
                      "src": "7365:13:27",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8419,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7365:7:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 8422,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 8421,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7381:1:27",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7365:17:27"
                },
                {
                  "body": {
                    "id": 8452,
                    "nodeType": "Block",
                    "src": "7437:216:27",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 8438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8434,
                              "name": "kittyIndexToOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7013,
                              "src": "7455:17:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 8436,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8435,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8424,
                              "src": "7473:1:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7455:20:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 8437,
                            "name": "_owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8412,
                            "src": "7479:6:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7455:30:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 8451,
                        "nodeType": "IfStatement",
                        "src": "7451:192:27",
                        "trueBody": {
                          "id": 8450,
                          "nodeType": "Block",
                          "src": "7487:156:27",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8441,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 8439,
                                  "name": "count",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8420,
                                  "src": "7509:5:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 8440,
                                  "name": "_index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8414,
                                  "src": "7518:6:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7509:15:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 8448,
                                "nodeType": "Block",
                                "src": "7581:48:27",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8446,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "7603:7:27",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 8445,
                                        "name": "count",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8420,
                                        "src": "7603:5:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 8447,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7603:7:27"
                                  }
                                ]
                              },
                              "id": 8449,
                              "nodeType": "IfStatement",
                              "src": "7505:124:27",
                              "trueBody": {
                                "id": 8444,
                                "nodeType": "Block",
                                "src": "7526:49:27",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8442,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8424,
                                      "src": "7555:1:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "functionReturnParameters": 8418,
                                    "id": 8443,
                                    "nodeType": "Return",
                                    "src": "7548:8:27"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 8427,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8424,
                      "src": "7412:1:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 8428,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          8388
                        ],
                        "referencedDeclaration": 8388,
                        "src": "7417:11:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 8429,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7417:13:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7412:18:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 8453,
                  "initializationExpression": {
                    "assignments": [
                      8424
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 8424,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 8458,
                        "src": "7397:9:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8423,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7397:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 8426,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 8425,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7409:1:27",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7397:13:27"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 8432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "7432:3:27",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 8431,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8424,
                        "src": "7432:1:27",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 8433,
                    "nodeType": "ExpressionStatement",
                    "src": "7432:3:27"
                  },
                  "nodeType": "ForStatement",
                  "src": "7392:261:27"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 8454,
                      "name": "revert",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        20644,
                        20645
                      ],
                      "referencedDeclaration": 20644,
                      "src": "7662:6:27",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 8455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7662:8:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 8456,
                  "nodeType": "ExpressionStatement",
                  "src": "7662:8:27"
                }
              ]
            },
            "documentation": "@notice Returns the nth Kitty assigned to an address, with n specified by the\n  _index argument.\n @param _owner The owner whose Kitties we are interested in.\n @param _index The zero-based index of the cat within the owner's list of cats.\n  Must be less than balanceOf(_owner).\n @dev This method MUST NEVER be called by smart contract code. It will almost\n  certainly blow past the block gas limit once there are a large number of\n  Kitties in existence. Exists only to allow off-chain queries of ownership.\n  Optional method for ERC-721.",
            "id": 8458,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "tokensOfOwnerByIndex",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8415,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8412,
                  "name": "_owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 8458,
                  "src": "7255:14:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8411,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7255:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8414,
                  "name": "_index",
                  "nodeType": "VariableDeclaration",
                  "scope": 8458,
                  "src": "7271:14:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8413,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7271:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7254:32:27"
            },
            "payable": false,
            "returnParameters": {
              "id": 8418,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8417,
                  "name": "tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 8458,
                  "src": "7334:15:27",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 8416,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7334:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7333:17:27"
            },
            "scope": 8459,
            "src": "7225:452:27",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 8460,
        "src": "720:6959:27"
      }
    ],
    "src": "325:7355:27"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-11-02T14:04:11.018Z"
}