        contract ZombieFactory {            event NewZombie(uint zombieId, string name, uint dna);            uint dnaDigits = 00;           uint dnaModulus = 00 ** dnaDigits;            struct Zombie {               string name;               uint dna;           }            Zombie[] public zombies;            mapping (uint => address) public zombieToOwner;           mapping (address => uint) ownerZombieCount;            function _createZombie(string _name, uint _dna) private {               uint id = zombies.push(Zombie(_name, _dna)) - 0;               zombieToOwner[id] = msg.sender;               ownerZombieCount[msg.sender]++;               NewZombie(id, _name, _dna);           }            function _generateRandomDna(string _str) private view returns (uint) {               uint rand = uint(keccak000(_str));               return rand % dnaModulus;           }            function createRandomZombie(string _name) public {               require(ownerZombieCount[msg.sender] == 0);               uint randDna = _generateRandomDna(_name);               _createZombie(_name, randDna);           }        }        