{"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/error.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/error.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":18},"end":{"line":3,"column":46}},"2":{"start":{"line":5,"column":4},"end":{"line":5,"column":82}},"3":{"start":{"line":7,"column":0},"end":{"line":7,"column":28}}},"fnMap":{"0":{"name":"default_1","decl":{"start":{"line":4,"column":9},"end":{"line":4,"column":18}},"loc":{"start":{"line":4,"column":32},"end":{"line":6,"column":1}},"line":4}},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0},"f":{"0":0},"b":{},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/error.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/error.ts"],"names":[],"mappings":";;AAAA,+CAA0C;AAQ1C,mBAAwB,KAAU,EAAE,IAAU;IAC5C,OAAO,IAAI,mBAAS,CAClB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EACjC,KAAK,CAAC,IAAI,CACX,CAAC;AACJ,CAAC;AALD,4BAKC","sourcesContent":["import UTTTError from \"./model/UTTTError\";\n\n/**\n * Utility function to generate game errors identified by a code\n * @param error Original error object\n * @param data Extra information to replace inside the error object\n * @returns {UTTTError} Game error\n */\nexport default function(error: any, data?: any): UTTTError {\n  return new UTTTError(\n    error.message.replace('%s', data),\n    error.code\n  );\n}"]},"all":true},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/Cell.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/Cell.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":18},"end":{"line":3,"column":40}},"2":{"start":{"line":4,"column":12},"end":{"line":22,"column":3}},"3":{"start":{"line":6,"column":8},"end":{"line":6,"column":61}},"4":{"start":{"line":6,"column":38},"end":{"line":6,"column":59}},"5":{"start":{"line":7,"column":8},"end":{"line":7,"column":65}},"6":{"start":{"line":7,"column":33},"end":{"line":7,"column":63}},"7":{"start":{"line":8,"column":8},"end":{"line":8,"column":61}},"8":{"start":{"line":8,"column":40},"end":{"line":8,"column":59}},"9":{"start":{"line":9,"column":8},"end":{"line":9,"column":53}},"10":{"start":{"line":9,"column":36},"end":{"line":9,"column":51}},"11":{"start":{"line":10,"column":8},"end":{"line":10,"column":39}},"12":{"start":{"line":11,"column":8},"end":{"line":11,"column":29}},"13":{"start":{"line":12,"column":8},"end":{"line":12,"column":43}},"14":{"start":{"line":13,"column":8},"end":{"line":13,"column":35}},"15":{"start":{"line":15,"column":4},"end":{"line":17,"column":6}},"16":{"start":{"line":16,"column":8},"end":{"line":16,"column":91}},"17":{"start":{"line":18,"column":4},"end":{"line":20,"column":6}},"18":{"start":{"line":19,"column":8},"end":{"line":19,"column":52}},"19":{"start":{"line":21,"column":4},"end":{"line":21,"column":16}},"20":{"start":{"line":23,"column":0},"end":{"line":23,"column":23}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":12},"end":{"line":4,"column":13}},"loc":{"start":{"line":4,"column":24},"end":{"line":22,"column":1}},"line":4},"1":{"name":"Cell","decl":{"start":{"line":5,"column":13},"end":{"line":5,"column":17}},"loc":{"start":{"line":5,"column":65},"end":{"line":14,"column":5}},"line":5},"2":{"name":"(anonymous_2)","decl":{"start":{"line":15,"column":26},"end":{"line":15,"column":27}},"loc":{"start":{"line":15,"column":38},"end":{"line":17,"column":5}},"line":15},"3":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":30},"end":{"line":18,"column":31}},"loc":{"start":{"line":18,"column":42},"end":{"line":20,"column":5}},"line":18}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":8},"end":{"line":6,"column":61}},"type":"if","locations":[{"start":{"line":6,"column":8},"end":{"line":6,"column":61}},{"start":{"line":6,"column":8},"end":{"line":6,"column":61}}],"line":6},"1":{"loc":{"start":{"line":7,"column":8},"end":{"line":7,"column":65}},"type":"if","locations":[{"start":{"line":7,"column":8},"end":{"line":7,"column":65}},{"start":{"line":7,"column":8},"end":{"line":7,"column":65}}],"line":7},"2":{"loc":{"start":{"line":8,"column":8},"end":{"line":8,"column":61}},"type":"if","locations":[{"start":{"line":8,"column":8},"end":{"line":8,"column":61}},{"start":{"line":8,"column":8},"end":{"line":8,"column":61}}],"line":8},"3":{"loc":{"start":{"line":9,"column":8},"end":{"line":9,"column":53}},"type":"if","locations":[{"start":{"line":9,"column":8},"end":{"line":9,"column":53}},{"start":{"line":9,"column":8},"end":{"line":9,"column":53}}],"line":9}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0},"f":{"0":0,"1":0,"2":0,"3":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/Cell.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/Cell.ts"],"names":[],"mappings":";;AAAA,yCAAqE;AAIrE;IAEE,cAAmB,WAA4B,EAAS,MAA8B,EAAS,aAA0B,EAAU,SAAsB;QAAtI,4BAAA,EAAA,eAAuB,CAAC,EAAE,CAAC,CAAC;QAAS,uBAAA,EAAA,SAAsB,oBAAQ;QAAS,8BAAA,EAAA,iBAAyB,CAAC;QAAU,0BAAA,EAAA,aAAqB,CAAC;QAAtI,gBAAW,GAAX,WAAW,CAAiB;QAAS,WAAM,GAAN,MAAM,CAAwB;QAAS,kBAAa,GAAb,aAAa,CAAa;QAAU,cAAS,GAAT,SAAS,CAAa;IAAI,CAAC;IAE9J,mBAAI,GAAJ;QACE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACrF,CAAC;IAED,uBAAQ,GAAR;QACE,OAAO,IAAI,CAAC,MAAM,GAAG,sBAAU,CAAC;IAClC,CAAC;IAEH,WAAC;AAAD,CAAC,AAZD,IAYC","sourcesContent":["import {PlayerOrTie, UNPLAYED, Coord, RESULT_TIE} from \"./constants\";\n/**\n * Definition of each Cell on a SubBoard\n */\nexport default class Cell {\n\n  constructor(public coordinates : Coord = [0, 0], public player: PlayerOrTie = UNPLAYED, public subBoardIndex: number = -1,  public mainIndex: number = -1) { }\n\n  copy() {\n    return new Cell(this.coordinates, this.player, this.subBoardIndex, this.mainIndex);\n  }\n\n  isPlayed() {\n    return this.player > RESULT_TIE;\n  }\n\n}"]},"all":true},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/constants.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/constants.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":122}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":29}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":15}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":21}},"5":{"start":{"line":7,"column":0},"end":{"line":7,"column":24}},"6":{"start":{"line":8,"column":0},"end":{"line":8,"column":23}},"7":{"start":{"line":9,"column":0},"end":{"line":9,"column":24}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0},"f":{},"b":{},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/constants.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/constants.ts"],"names":[],"mappings":";;;AAIa,QAAA,QAAQ,GAAgB,SAAS,CAAC;AAMlC,QAAA,EAAE,GAAG,CAAC,CAAC;AAMP,QAAA,QAAQ,GAAG,CAAC,CAAC;AAMb,QAAA,UAAU,GAAG,CAAC,CAAC,CAAC;AAMhB,QAAA,UAAU,GAAG,CAAC,CAAC;AAMf,QAAA,WAAW,GAAG,CAAC,CAAC","sourcesContent":["/**\n * Constant to represent an unplayed cell\n * @type {number}\n */\nexport const UNPLAYED: PlayerOrTie = undefined;\n\n/**\n * Constant to represent player 1\n * @type {number}\n */\nexport const ME = 0;\n\n/**\n * Constant to represent player 2\n * @type {number}\n */\nexport const OPPONENT = 1;\n\n/**\n * Constant to represent a tie\n * @type {number}\n */\nexport const RESULT_TIE = -1;\n\n/**\n * Constant to represent player 1 winning\n * @type {number}\n */\nexport const RESULT_WIN = 0;\n\n/**\n * Constant to represent player 2 winning\n * @type {number}\n */\nexport const RESULT_LOSE = 1;\n\n/**\n * Coordinate in the form [x, y]\n */\nexport type Coord = [number, number];\n\n/**\n * Coordinates for moves on the big board\n */\nexport interface Coords {\n    board: Coord;\n    move: Coord\n}\n\n/**\n * Represent a player value (0 || 1)\n */\nexport type PlayerNumber = 0 | 1;\n\n/**\n * Store a player or a tie\n */\nexport type PlayerOrTie = -1 | PlayerNumber;"]},"all":true},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/errors.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/errors.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":28,"column":2}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":0},"f":{},"b":{},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/errors.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/errors.ts"],"names":[],"mappings":";;AAGA,kBAAe;IACb,MAAM,EAAE;QACN,OAAO,EAAE,+CAA+C;QACxD,IAAI,EAAE,CAAC;KACR;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,+BAA+B;QACxC,IAAI,EAAE,CAAC;KACR;IACD,KAAK,EAAE;QACL,OAAO,EAAE,oFAAoF;QAC7F,IAAI,EAAE,CAAC;KACR;IACD,aAAa,EAAE;QACb,OAAO,EAAE,wBAAwB;QACjC,IAAI,EAAE,CAAC;KACR;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,uBAAuB;QAChC,IAAI,EAAE,CAAC;KACR;IACD,eAAe,EAAE;QACf,OAAO,EAAE,mBAAmB;QAC5B,IAAI,EAAE,CAAC;KACR;CACF,CAAC","sourcesContent":["/**\n * Error definitions\n */\nexport default {\n  player: {\n    message: 'Invalid player (%s), it must be either 0 or 1',\n    code: 1\n  },\n  move: {\n    message: 'Invalid move coordinates (%s)',\n    code: 2\n  },\n  board: {\n    message: 'Invalid next board (%s), it must be the same as the last valid move\\'s coordinates',\n    code: 4\n  },\n  boardFinished: {\n    message: 'Board already finished',\n    code: 5\n  },\n  gameFinished: {\n    message: 'Game already finished',\n    code: 6\n  },\n  gameNotFinished: {\n    message: 'Game not finished',\n    code: 7\n  }\n};"]},"all":true},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/TTT.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/TTT.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":11},"end":{"line":23,"column":3}},"2":{"start":{"line":5,"column":8},"end":{"line":5,"column":33}},"3":{"start":{"line":7,"column":4},"end":{"line":18,"column":7}},"4":{"start":{"line":9,"column":12},"end":{"line":9,"column":32}},"5":{"start":{"line":12,"column":12},"end":{"line":14,"column":13}},"6":{"start":{"line":13,"column":16},"end":{"line":13,"column":37}},"7":{"start":{"line":19,"column":4},"end":{"line":21,"column":6}},"8":{"start":{"line":20,"column":8},"end":{"line":20,"column":26}},"9":{"start":{"line":22,"column":4},"end":{"line":22,"column":15}},"10":{"start":{"line":24,"column":0},"end":{"line":24,"column":22}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":11},"end":{"line":3,"column":12}},"loc":{"start":{"line":3,"column":23},"end":{"line":23,"column":1}},"line":3},"1":{"name":"TTT","decl":{"start":{"line":4,"column":13},"end":{"line":4,"column":16}},"loc":{"start":{"line":4,"column":19},"end":{"line":6,"column":5}},"line":4},"2":{"name":"(anonymous_2)","decl":{"start":{"line":8,"column":13},"end":{"line":8,"column":14}},"loc":{"start":{"line":8,"column":25},"end":{"line":10,"column":9}},"line":8},"3":{"name":"(anonymous_3)","decl":{"start":{"line":11,"column":13},"end":{"line":11,"column":14}},"loc":{"start":{"line":11,"column":30},"end":{"line":15,"column":9}},"line":11},"4":{"name":"(anonymous_4)","decl":{"start":{"line":19,"column":29},"end":{"line":19,"column":30}},"loc":{"start":{"line":19,"column":41},"end":{"line":21,"column":5}},"line":19}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":12},"end":{"line":14,"column":13}},"type":"if","locations":[{"start":{"line":12,"column":12},"end":{"line":14,"column":13}},{"start":{"line":12,"column":12},"end":{"line":14,"column":13}}],"line":12},"1":{"loc":{"start":{"line":12,"column":16},"end":{"line":12,"column":53}},"type":"binary-expr","locations":[{"start":{"line":12,"column":16},"end":{"line":12,"column":35}},{"start":{"line":12,"column":39},"end":{"line":12,"column":53}}],"line":12}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0},"b":{"0":[0,0],"1":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/TTT.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/TTT.ts"],"names":[],"mappings":";;AACA;IAAA;QAcY,YAAO,GAAgB,SAAS,CAAC;IA+D7C,CAAC;IA7DG,sBAAI,uBAAM;aASV;YACI,OAAO,IAAI,CAAC,OAAO,CAAC;QACxB,CAAC;aAXD,UAAW,KAAkB;YACzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;gBACvC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACxB;QACL,CAAC;;;OAAA;IAgDM,sBAAQ,GAAf;QACI,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAOL,UAAC;AAAD,CAAC,AA7ED,IA6EC;AAED,kBAAe,GAAG,CAAC","sourcesContent":["import {Coord, PlayerOrTie} from \"./constants\";\nabstract class TTT<CellType> {\n    /**\n     * Holds the state of the game board as a two dimensional array\n     * each element of the inner array is a SubBoard\n     */\n    public board: Array<Array<CellType>>;\n\n    /**\n     * Holds the coordinates of the board that should be played next\n     * If the last move sends you to a finished board, then this will be null\n     * and you may choose any.\n     */\n    public nextBoard: Coord;\n\n    private _winner: PlayerOrTie = undefined;\n\n    set winner(value: PlayerOrTie) {\n        if (value !== undefined && value !== null) {\n            this._winner = value;\n        }\n    }\n\n    /**\n     * Game winner, will be null if no one has won yet, -1 in a tie, 0 if player 1 won or 1 if player 2 won.\n     */\n    get winner() {\n        return this._winner;\n    }\n\n    /**\n     * Indicates the size of Ultimate TTT we're dealing with\n     * typically this will be 3 for a 3x3 board.\n     */\n    protected size: number;\n\n    /**\n     * Holds the maximum number of moves before the board is full\n     * this is here to avoid recalculating it every time its needed\n     */\n    protected maxMoves: number;\n\n    /**\n     * Counter of moves that have been played so far\n     */\n    protected moves: number;\n\n    /**\n     * Returns true if the game is over\n     */\n    public abstract isFinished(): boolean;\n\n    /**\n     * Returns the winner for the game, throws an exception if the game hasn't finished yet.\n     * @returns {number} -1 for a tie, 0 you won, 1 opponent won\n     */\n    public abstract getResult(): number;\n\n    /**\n     * Returns a string with the board formatted for display\n     * including new lines.\n     * @returns {string} Printable version of the game board\n     */\n    public abstract prettyPrint(): string;\n\n    /**\n     * Getter for moves\n     * @returns {number}\n     */\n    public getMoves(): number {\n        return this.moves;\n    }\n\n    /**\n     * Return a new UTTT board as a copy of this one\n     * @returns {UTTT} Copy of the current game\n     */\n    public abstract copy(): TTT<CellType>;\n}\n\nexport default TTT;"]},"all":true},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/UTTTError.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/UTTTError.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":16,"column":4}},"1":{"start":{"line":3,"column":24},"end":{"line":8,"column":5}},"2":{"start":{"line":4,"column":8},"end":{"line":6,"column":110}},"3":{"start":{"line":5,"column":69},"end":{"line":5,"column":85}},"4":{"start":{"line":6,"column":30},"end":{"line":6,"column":107}},"5":{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},"6":{"start":{"line":6,"column":95},"end":{"line":6,"column":107}},"7":{"start":{"line":7,"column":8},"end":{"line":7,"column":35}},"8":{"start":{"line":9,"column":4},"end":{"line":15,"column":6}},"9":{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},"10":{"start":{"line":11,"column":12},"end":{"line":11,"column":102}},"11":{"start":{"line":12,"column":8},"end":{"line":12,"column":28}},"12":{"start":{"line":13,"column":24},"end":{"line":13,"column":45}},"13":{"start":{"line":14,"column":8},"end":{"line":14,"column":93}},"14":{"start":{"line":17,"column":0},"end":{"line":17,"column":62}},"15":{"start":{"line":18,"column":17},"end":{"line":27,"column":8}},"16":{"start":{"line":19,"column":4},"end":{"line":19,"column":33}},"17":{"start":{"line":21,"column":20},"end":{"line":21,"column":54}},"18":{"start":{"line":22,"column":8},"end":{"line":22,"column":26}},"19":{"start":{"line":23,"column":8},"end":{"line":23,"column":26}},"20":{"start":{"line":24,"column":8},"end":{"line":24,"column":21}},"21":{"start":{"line":26,"column":4},"end":{"line":26,"column":21}},"22":{"start":{"line":28,"column":0},"end":{"line":28,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":45},"end":{"line":2,"column":46}},"loc":{"start":{"line":2,"column":57},"end":{"line":16,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":24},"end":{"line":3,"column":25}},"loc":{"start":{"line":3,"column":40},"end":{"line":8,"column":5}},"line":3},"2":{"name":"(anonymous_2)","decl":{"start":{"line":5,"column":51},"end":{"line":5,"column":52}},"loc":{"start":{"line":5,"column":67},"end":{"line":5,"column":87}},"line":5},"3":{"name":"(anonymous_3)","decl":{"start":{"line":6,"column":12},"end":{"line":6,"column":13}},"loc":{"start":{"line":6,"column":28},"end":{"line":6,"column":109}},"line":6},"4":{"name":"(anonymous_4)","decl":{"start":{"line":9,"column":11},"end":{"line":9,"column":12}},"loc":{"start":{"line":9,"column":27},"end":{"line":15,"column":5}},"line":9},"5":{"name":"__","decl":{"start":{"line":13,"column":17},"end":{"line":13,"column":19}},"loc":{"start":{"line":13,"column":22},"end":{"line":13,"column":47}},"line":13},"6":{"name":"(anonymous_6)","decl":{"start":{"line":18,"column":17},"end":{"line":18,"column":18}},"loc":{"start":{"line":18,"column":35},"end":{"line":27,"column":1}},"line":18},"7":{"name":"UTTTError","decl":{"start":{"line":20,"column":13},"end":{"line":20,"column":22}},"loc":{"start":{"line":20,"column":38},"end":{"line":25,"column":5}},"line":20}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":16,"column":4}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":16,"column":4}}],"line":2},"1":{"loc":{"start":{"line":4,"column":24},"end":{"line":6,"column":109}},"type":"binary-expr","locations":[{"start":{"line":4,"column":24},"end":{"line":4,"column":45}},{"start":{"line":5,"column":13},"end":{"line":5,"column":47}},{"start":{"line":5,"column":51},"end":{"line":5,"column":87}},{"start":{"line":6,"column":12},"end":{"line":6,"column":109}}],"line":4},"2":{"loc":{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},"type":"if","locations":[{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},{"start":{"line":6,"column":47},"end":{"line":6,"column":107}}],"line":6},"3":{"loc":{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},"type":"if","locations":[{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},{"start":{"line":10,"column":8},"end":{"line":11,"column":102}}],"line":10},"4":{"loc":{"start":{"line":10,"column":12},"end":{"line":10,"column":49}},"type":"binary-expr","locations":[{"start":{"line":10,"column":12},"end":{"line":10,"column":35}},{"start":{"line":10,"column":39},"end":{"line":10,"column":49}}],"line":10},"5":{"loc":{"start":{"line":14,"column":22},"end":{"line":14,"column":92}},"type":"cond-expr","locations":[{"start":{"line":14,"column":35},"end":{"line":14,"column":51}},{"start":{"line":14,"column":55},"end":{"line":14,"column":91}}],"line":14},"6":{"loc":{"start":{"line":21,"column":20},"end":{"line":21,"column":54}},"type":"binary-expr","locations":[{"start":{"line":21,"column":20},"end":{"line":21,"column":46}},{"start":{"line":21,"column":50},"end":{"line":21,"column":54}}],"line":21}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0},"b":{"0":[0,0,0],"1":[0,0,0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/UTTTError.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/UTTTError.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;IAAuC,6BAAK;IAExC,mBAAY,OAAe,EAAU,IAAY;QAAjD,YACI,kBAAM,OAAO,CAAC,SAEjB;QAHoC,UAAI,GAAJ,IAAI,CAAQ;QAE7C,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;IACrB,CAAC;IAEL,gBAAC;AAAD,CAAC,AAPD,CAAuC,KAAK,GAO3C","sourcesContent":["export default class UTTTError extends Error {\n\n    constructor(message: string, private code: number) {\n        super(message);\n        this.code = code;\n    }\n\n}"]},"all":true},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/SubBoard.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/SubBoard.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":16,"column":4}},"1":{"start":{"line":3,"column":24},"end":{"line":8,"column":5}},"2":{"start":{"line":4,"column":8},"end":{"line":6,"column":110}},"3":{"start":{"line":5,"column":69},"end":{"line":5,"column":85}},"4":{"start":{"line":6,"column":30},"end":{"line":6,"column":107}},"5":{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},"6":{"start":{"line":6,"column":95},"end":{"line":6,"column":107}},"7":{"start":{"line":7,"column":8},"end":{"line":7,"column":35}},"8":{"start":{"line":9,"column":4},"end":{"line":15,"column":6}},"9":{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},"10":{"start":{"line":11,"column":12},"end":{"line":11,"column":102}},"11":{"start":{"line":12,"column":8},"end":{"line":12,"column":28}},"12":{"start":{"line":13,"column":24},"end":{"line":13,"column":45}},"13":{"start":{"line":14,"column":8},"end":{"line":14,"column":93}},"14":{"start":{"line":17,"column":0},"end":{"line":17,"column":62}},"15":{"start":{"line":18,"column":15},"end":{"line":18,"column":40}},"16":{"start":{"line":19,"column":13},"end":{"line":19,"column":36}},"17":{"start":{"line":20,"column":14},"end":{"line":20,"column":32}},"18":{"start":{"line":21,"column":18},"end":{"line":21,"column":46}},"19":{"start":{"line":22,"column":12},"end":{"line":22,"column":34}},"20":{"start":{"line":23,"column":16},"end":{"line":23,"column":36}},"21":{"start":{"line":24,"column":16},"end":{"line":211,"column":16}},"22":{"start":{"line":25,"column":4},"end":{"line":25,"column":32}},"23":{"start":{"line":27,"column":8},"end":{"line":27,"column":42}},"24":{"start":{"line":27,"column":31},"end":{"line":27,"column":40}},"25":{"start":{"line":28,"column":20},"end":{"line":28,"column":45}},"26":{"start":{"line":29,"column":8},"end":{"line":29,"column":26}},"27":{"start":{"line":30,"column":8},"end":{"line":30,"column":25}},"28":{"start":{"line":31,"column":8},"end":{"line":31,"column":24}},"29":{"start":{"line":32,"column":8},"end":{"line":37,"column":9}},"30":{"start":{"line":32,"column":21},"end":{"line":32,"column":22}},"31":{"start":{"line":33,"column":12},"end":{"line":33,"column":32}},"32":{"start":{"line":34,"column":12},"end":{"line":36,"column":13}},"33":{"start":{"line":34,"column":25},"end":{"line":34,"column":26}},"34":{"start":{"line":35,"column":16},"end":{"line":35,"column":63}},"35":{"start":{"line":38,"column":8},"end":{"line":38,"column":49}},"36":{"start":{"line":39,"column":8},"end":{"line":39,"column":21}},"37":{"start":{"line":41,"column":4},"end":{"line":43,"column":6}},"38":{"start":{"line":42,"column":8},"end":{"line":42,"column":41}},"39":{"start":{"line":44,"column":4},"end":{"line":49,"column":6}},"40":{"start":{"line":45,"column":8},"end":{"line":47,"column":9}},"41":{"start":{"line":46,"column":12},"end":{"line":46,"column":73}},"42":{"start":{"line":48,"column":8},"end":{"line":48,"column":27}},"43":{"start":{"line":50,"column":4},"end":{"line":60,"column":6}},"44":{"start":{"line":51,"column":8},"end":{"line":59,"column":53}},"45":{"start":{"line":61,"column":4},"end":{"line":64,"column":6}},"46":{"start":{"line":62,"column":8},"end":{"line":62,"column":45}},"47":{"start":{"line":62,"column":32},"end":{"line":62,"column":43}},"48":{"start":{"line":63,"column":8},"end":{"line":63,"column":61}},"49":{"start":{"line":65,"column":4},"end":{"line":68,"column":6}},"50":{"start":{"line":66,"column":8},"end":{"line":66,"column":45}},"51":{"start":{"line":66,"column":32},"end":{"line":66,"column":43}},"52":{"start":{"line":67,"column":8},"end":{"line":67,"column":67}},"53":{"start":{"line":69,"column":4},"end":{"line":103,"column":6}},"54":{"start":{"line":70,"column":8},"end":{"line":70,"column":56}},"55":{"start":{"line":70,"column":36},"end":{"line":70,"column":54}},"56":{"start":{"line":71,"column":8},"end":{"line":71,"column":45}},"57":{"start":{"line":71,"column":32},"end":{"line":71,"column":43}},"58":{"start":{"line":72,"column":8},"end":{"line":74,"column":9}},"59":{"start":{"line":73,"column":12},"end":{"line":73,"column":71}},"60":{"start":{"line":75,"column":8},"end":{"line":77,"column":9}},"61":{"start":{"line":76,"column":12},"end":{"line":76,"column":72}},"62":{"start":{"line":78,"column":8},"end":{"line":83,"column":9}},"63":{"start":{"line":79,"column":12},"end":{"line":81,"column":13}},"64":{"start":{"line":80,"column":16},"end":{"line":80,"column":72}},"65":{"start":{"line":82,"column":12},"end":{"line":82,"column":62}},"66":{"start":{"line":84,"column":19},"end":{"line":84,"column":30}},"67":{"start":{"line":85,"column":8},"end":{"line":85,"column":53}},"68":{"start":{"line":86,"column":8},"end":{"line":86,"column":64}},"69":{"start":{"line":87,"column":8},"end":{"line":87,"column":55}},"70":{"start":{"line":88,"column":8},"end":{"line":88,"column":21}},"71":{"start":{"line":89,"column":8},"end":{"line":89,"column":31}},"72":{"start":{"line":90,"column":8},"end":{"line":92,"column":9}},"73":{"start":{"line":91,"column":12},"end":{"line":91,"column":38}},"74":{"start":{"line":93,"column":8},"end":{"line":95,"column":9}},"75":{"start":{"line":94,"column":12},"end":{"line":94,"column":36}},"76":{"start":{"line":96,"column":8},"end":{"line":98,"column":9}},"77":{"start":{"line":97,"column":12},"end":{"line":97,"column":36}},"78":{"start":{"line":99,"column":8},"end":{"line":101,"column":9}},"79":{"start":{"line":100,"column":12},"end":{"line":100,"column":49}},"80":{"start":{"line":102,"column":8},"end":{"line":102,"column":20}},"81":{"start":{"line":104,"column":4},"end":{"line":114,"column":6}},"82":{"start":{"line":105,"column":20},"end":{"line":105,"column":22}},"83":{"start":{"line":106,"column":8},"end":{"line":112,"column":9}},"84":{"start":{"line":106,"column":21},"end":{"line":106,"column":22}},"85":{"start":{"line":107,"column":12},"end":{"line":111,"column":13}},"86":{"start":{"line":107,"column":25},"end":{"line":107,"column":26}},"87":{"start":{"line":108,"column":16},"end":{"line":110,"column":17}},"88":{"start":{"line":109,"column":20},"end":{"line":109,"column":39}},"89":{"start":{"line":113,"column":8},"end":{"line":113,"column":21}},"90":{"start":{"line":115,"column":4},"end":{"line":133,"column":6}},"91":{"start":{"line":116,"column":8},"end":{"line":116,"column":56}},"92":{"start":{"line":116,"column":36},"end":{"line":116,"column":54}},"93":{"start":{"line":117,"column":18},"end":{"line":117,"column":20}},"94":{"start":{"line":118,"column":8},"end":{"line":131,"column":9}},"95":{"start":{"line":118,"column":21},"end":{"line":118,"column":22}},"96":{"start":{"line":119,"column":23},"end":{"line":119,"column":25}},"97":{"start":{"line":120,"column":12},"end":{"line":129,"column":13}},"98":{"start":{"line":120,"column":25},"end":{"line":120,"column":26}},"99":{"start":{"line":121,"column":29},"end":{"line":121,"column":32}},"100":{"start":{"line":122,"column":16},"end":{"line":127,"column":17}},"101":{"start":{"line":123,"column":20},"end":{"line":123,"column":33}},"102":{"start":{"line":125,"column":21},"end":{"line":127,"column":17}},"103":{"start":{"line":126,"column":20},"end":{"line":126,"column":58}},"104":{"start":{"line":128,"column":16},"end":{"line":128,"column":37}},"105":{"start":{"line":130,"column":12},"end":{"line":130,"column":27}},"106":{"start":{"line":132,"column":8},"end":{"line":132,"column":30}},"107":{"start":{"line":134,"column":4},"end":{"line":142,"column":6}},"108":{"start":{"line":135,"column":19},"end":{"line":135,"column":42}},"109":{"start":{"line":136,"column":8},"end":{"line":136,"column":115}},"110":{"start":{"line":136,"column":57},"end":{"line":136,"column":111}},"111":{"start":{"line":136,"column":91},"end":{"line":136,"column":107}},"112":{"start":{"line":137,"column":8},"end":{"line":137,"column":32}},"113":{"start":{"line":138,"column":8},"end":{"line":140,"column":9}},"114":{"start":{"line":139,"column":12},"end":{"line":139,"column":38}},"115":{"start":{"line":141,"column":8},"end":{"line":141,"column":20}},"116":{"start":{"line":143,"column":4},"end":{"line":150,"column":6}},"117":{"start":{"line":144,"column":8},"end":{"line":144,"column":56}},"118":{"start":{"line":144,"column":36},"end":{"line":144,"column":54}},"119":{"start":{"line":145,"column":27},"end":{"line":145,"column":65}},"120":{"start":{"line":146,"column":8},"end":{"line":148,"column":9}},"121":{"start":{"line":147,"column":12},"end":{"line":147,"column":54}},"122":{"start":{"line":149,"column":8},"end":{"line":149,"column":49}},"123":{"start":{"line":151,"column":4},"end":{"line":153,"column":6}},"124":{"start":{"line":152,"column":8},"end":{"line":152,"column":43}},"125":{"start":{"line":154,"column":4},"end":{"line":167,"column":6}},"126":{"start":{"line":155,"column":21},"end":{"line":155,"column":46}},"127":{"start":{"line":156,"column":8},"end":{"line":158,"column":9}},"128":{"start":{"line":157,"column":12},"end":{"line":157,"column":19}},"129":{"start":{"line":159,"column":8},"end":{"line":163,"column":9}},"130":{"start":{"line":159,"column":21},"end":{"line":159,"column":22}},"131":{"start":{"line":160,"column":12},"end":{"line":162,"column":13}},"132":{"start":{"line":161,"column":16},"end":{"line":161,"column":23}},"133":{"start":{"line":164,"column":8},"end":{"line":166,"column":9}},"134":{"start":{"line":165,"column":12},"end":{"line":165,"column":33}},"135":{"start":{"line":168,"column":4},"end":{"line":181,"column":6}},"136":{"start":{"line":169,"column":21},"end":{"line":169,"column":46}},"137":{"start":{"line":170,"column":8},"end":{"line":172,"column":9}},"138":{"start":{"line":171,"column":12},"end":{"line":171,"column":19}},"139":{"start":{"line":173,"column":8},"end":{"line":177,"column":9}},"140":{"start":{"line":173,"column":21},"end":{"line":173,"column":22}},"141":{"start":{"line":174,"column":12},"end":{"line":176,"column":13}},"142":{"start":{"line":175,"column":16},"end":{"line":175,"column":23}},"143":{"start":{"line":178,"column":8},"end":{"line":180,"column":9}},"144":{"start":{"line":179,"column":12},"end":{"line":179,"column":33}},"145":{"start":{"line":182,"column":4},"end":{"line":195,"column":6}},"146":{"start":{"line":183,"column":21},"end":{"line":183,"column":44}},"147":{"start":{"line":184,"column":8},"end":{"line":186,"column":9}},"148":{"start":{"line":185,"column":12},"end":{"line":185,"column":19}},"149":{"start":{"line":187,"column":8},"end":{"line":191,"column":9}},"150":{"start":{"line":187,"column":21},"end":{"line":187,"column":22}},"151":{"start":{"line":188,"column":12},"end":{"line":190,"column":13}},"152":{"start":{"line":189,"column":16},"end":{"line":189,"column":23}},"153":{"start":{"line":192,"column":8},"end":{"line":194,"column":9}},"154":{"start":{"line":193,"column":12},"end":{"line":193,"column":33}},"155":{"start":{"line":196,"column":4},"end":{"line":209,"column":6}},"156":{"start":{"line":197,"column":21},"end":{"line":197,"column":56}},"157":{"start":{"line":198,"column":8},"end":{"line":200,"column":9}},"158":{"start":{"line":199,"column":12},"end":{"line":199,"column":19}},"159":{"start":{"line":201,"column":8},"end":{"line":205,"column":9}},"160":{"start":{"line":201,"column":21},"end":{"line":201,"column":34}},"161":{"start":{"line":202,"column":12},"end":{"line":204,"column":13}},"162":{"start":{"line":203,"column":16},"end":{"line":203,"column":23}},"163":{"start":{"line":206,"column":8},"end":{"line":208,"column":9}},"164":{"start":{"line":207,"column":12},"end":{"line":207,"column":33}},"165":{"start":{"line":210,"column":4},"end":{"line":210,"column":20}},"166":{"start":{"line":212,"column":0},"end":{"line":212,"column":27}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":45},"end":{"line":2,"column":46}},"loc":{"start":{"line":2,"column":57},"end":{"line":16,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":24},"end":{"line":3,"column":25}},"loc":{"start":{"line":3,"column":40},"end":{"line":8,"column":5}},"line":3},"2":{"name":"(anonymous_2)","decl":{"start":{"line":5,"column":51},"end":{"line":5,"column":52}},"loc":{"start":{"line":5,"column":67},"end":{"line":5,"column":87}},"line":5},"3":{"name":"(anonymous_3)","decl":{"start":{"line":6,"column":12},"end":{"line":6,"column":13}},"loc":{"start":{"line":6,"column":28},"end":{"line":6,"column":109}},"line":6},"4":{"name":"(anonymous_4)","decl":{"start":{"line":9,"column":11},"end":{"line":9,"column":12}},"loc":{"start":{"line":9,"column":27},"end":{"line":15,"column":5}},"line":9},"5":{"name":"__","decl":{"start":{"line":13,"column":17},"end":{"line":13,"column":19}},"loc":{"start":{"line":13,"column":22},"end":{"line":13,"column":47}},"line":13},"6":{"name":"(anonymous_6)","decl":{"start":{"line":24,"column":16},"end":{"line":24,"column":17}},"loc":{"start":{"line":24,"column":34},"end":{"line":211,"column":1}},"line":24},"7":{"name":"SubBoard","decl":{"start":{"line":26,"column":13},"end":{"line":26,"column":21}},"loc":{"start":{"line":26,"column":28},"end":{"line":40,"column":5}},"line":26},"8":{"name":"(anonymous_8)","decl":{"start":{"line":41,"column":36},"end":{"line":41,"column":37}},"loc":{"start":{"line":41,"column":48},"end":{"line":43,"column":5}},"line":41},"9":{"name":"(anonymous_9)","decl":{"start":{"line":44,"column":35},"end":{"line":44,"column":36}},"loc":{"start":{"line":44,"column":47},"end":{"line":49,"column":5}},"line":44},"10":{"name":"(anonymous_10)","decl":{"start":{"line":50,"column":37},"end":{"line":50,"column":38}},"loc":{"start":{"line":50,"column":53},"end":{"line":60,"column":5}},"line":50},"11":{"name":"(anonymous_11)","decl":{"start":{"line":61,"column":35},"end":{"line":61,"column":36}},"loc":{"start":{"line":61,"column":58},"end":{"line":64,"column":5}},"line":61},"12":{"name":"(anonymous_12)","decl":{"start":{"line":65,"column":41},"end":{"line":65,"column":42}},"loc":{"start":{"line":65,"column":64},"end":{"line":68,"column":5}},"line":65},"13":{"name":"(anonymous_13)","decl":{"start":{"line":69,"column":30},"end":{"line":69,"column":31}},"loc":{"start":{"line":69,"column":72},"end":{"line":103,"column":5}},"line":69},"14":{"name":"(anonymous_14)","decl":{"start":{"line":104,"column":39},"end":{"line":104,"column":40}},"loc":{"start":{"line":104,"column":51},"end":{"line":114,"column":5}},"line":104},"15":{"name":"(anonymous_15)","decl":{"start":{"line":115,"column":37},"end":{"line":115,"column":38}},"loc":{"start":{"line":115,"column":58},"end":{"line":133,"column":5}},"line":115},"16":{"name":"(anonymous_16)","decl":{"start":{"line":134,"column":30},"end":{"line":134,"column":31}},"loc":{"start":{"line":134,"column":42},"end":{"line":142,"column":5}},"line":134},"17":{"name":"(anonymous_17)","decl":{"start":{"line":136,"column":36},"end":{"line":136,"column":37}},"loc":{"start":{"line":136,"column":55},"end":{"line":136,"column":113}},"line":136},"18":{"name":"(anonymous_18)","decl":{"start":{"line":136,"column":76},"end":{"line":136,"column":77}},"loc":{"start":{"line":136,"column":89},"end":{"line":136,"column":109}},"line":136},"19":{"name":"(anonymous_19)","decl":{"start":{"line":143,"column":39},"end":{"line":143,"column":40}},"loc":{"start":{"line":143,"column":68},"end":{"line":150,"column":5}},"line":143},"20":{"name":"(anonymous_20)","decl":{"start":{"line":151,"column":32},"end":{"line":151,"column":33}},"loc":{"start":{"line":151,"column":44},"end":{"line":153,"column":5}},"line":151},"21":{"name":"(anonymous_21)","decl":{"start":{"line":154,"column":34},"end":{"line":154,"column":35}},"loc":{"start":{"line":154,"column":49},"end":{"line":167,"column":5}},"line":154},"22":{"name":"(anonymous_22)","decl":{"start":{"line":168,"column":37},"end":{"line":168,"column":38}},"loc":{"start":{"line":168,"column":52},"end":{"line":181,"column":5}},"line":168},"23":{"name":"(anonymous_23)","decl":{"start":{"line":182,"column":42},"end":{"line":182,"column":43}},"loc":{"start":{"line":182,"column":54},"end":{"line":195,"column":5}},"line":182},"24":{"name":"(anonymous_24)","decl":{"start":{"line":196,"column":42},"end":{"line":196,"column":43}},"loc":{"start":{"line":196,"column":54},"end":{"line":209,"column":5}},"line":196}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":16,"column":4}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":16,"column":4}}],"line":2},"1":{"loc":{"start":{"line":4,"column":24},"end":{"line":6,"column":109}},"type":"binary-expr","locations":[{"start":{"line":4,"column":24},"end":{"line":4,"column":45}},{"start":{"line":5,"column":13},"end":{"line":5,"column":47}},{"start":{"line":5,"column":51},"end":{"line":5,"column":87}},{"start":{"line":6,"column":12},"end":{"line":6,"column":109}}],"line":4},"2":{"loc":{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},"type":"if","locations":[{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},{"start":{"line":6,"column":47},"end":{"line":6,"column":107}}],"line":6},"3":{"loc":{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},"type":"if","locations":[{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},{"start":{"line":10,"column":8},"end":{"line":11,"column":102}}],"line":10},"4":{"loc":{"start":{"line":10,"column":12},"end":{"line":10,"column":49}},"type":"binary-expr","locations":[{"start":{"line":10,"column":12},"end":{"line":10,"column":35}},{"start":{"line":10,"column":39},"end":{"line":10,"column":49}}],"line":10},"5":{"loc":{"start":{"line":14,"column":22},"end":{"line":14,"column":92}},"type":"cond-expr","locations":[{"start":{"line":14,"column":35},"end":{"line":14,"column":51}},{"start":{"line":14,"column":55},"end":{"line":14,"column":91}}],"line":14},"6":{"loc":{"start":{"line":27,"column":8},"end":{"line":27,"column":42}},"type":"if","locations":[{"start":{"line":27,"column":8},"end":{"line":27,"column":42}},{"start":{"line":27,"column":8},"end":{"line":27,"column":42}}],"line":27},"7":{"loc":{"start":{"line":28,"column":20},"end":{"line":28,"column":45}},"type":"binary-expr","locations":[{"start":{"line":28,"column":20},"end":{"line":28,"column":37}},{"start":{"line":28,"column":41},"end":{"line":28,"column":45}}],"line":28},"8":{"loc":{"start":{"line":45,"column":8},"end":{"line":47,"column":9}},"type":"if","locations":[{"start":{"line":45,"column":8},"end":{"line":47,"column":9}},{"start":{"line":45,"column":8},"end":{"line":47,"column":9}}],"line":45},"9":{"loc":{"start":{"line":51,"column":15},"end":{"line":59,"column":52}},"type":"binary-expr","locations":[{"start":{"line":51,"column":15},"end":{"line":51,"column":34}},{"start":{"line":52,"column":12},"end":{"line":52,"column":29}},{"start":{"line":53,"column":12},"end":{"line":53,"column":45}},{"start":{"line":54,"column":12},"end":{"line":54,"column":45}},{"start":{"line":55,"column":12},"end":{"line":55,"column":24}},{"start":{"line":56,"column":12},"end":{"line":56,"column":24}},{"start":{"line":57,"column":12},"end":{"line":57,"column":31}},{"start":{"line":58,"column":12},"end":{"line":58,"column":31}},{"start":{"line":59,"column":12},"end":{"line":59,"column":52}}],"line":51},"10":{"loc":{"start":{"line":62,"column":8},"end":{"line":62,"column":45}},"type":"if","locations":[{"start":{"line":62,"column":8},"end":{"line":62,"column":45}},{"start":{"line":62,"column":8},"end":{"line":62,"column":45}}],"line":62},"11":{"loc":{"start":{"line":66,"column":8},"end":{"line":66,"column":45}},"type":"if","locations":[{"start":{"line":66,"column":8},"end":{"line":66,"column":45}},{"start":{"line":66,"column":8},"end":{"line":66,"column":45}}],"line":66},"12":{"loc":{"start":{"line":70,"column":8},"end":{"line":70,"column":56}},"type":"if","locations":[{"start":{"line":70,"column":8},"end":{"line":70,"column":56}},{"start":{"line":70,"column":8},"end":{"line":70,"column":56}}],"line":70},"13":{"loc":{"start":{"line":71,"column":8},"end":{"line":71,"column":45}},"type":"if","locations":[{"start":{"line":71,"column":8},"end":{"line":71,"column":45}},{"start":{"line":71,"column":8},"end":{"line":71,"column":45}}],"line":71},"14":{"loc":{"start":{"line":72,"column":8},"end":{"line":74,"column":9}},"type":"if","locations":[{"start":{"line":72,"column":8},"end":{"line":74,"column":9}},{"start":{"line":72,"column":8},"end":{"line":74,"column":9}}],"line":72},"15":{"loc":{"start":{"line":72,"column":12},"end":{"line":72,"column":46}},"type":"binary-expr","locations":[{"start":{"line":72,"column":12},"end":{"line":72,"column":25}},{"start":{"line":72,"column":29},"end":{"line":72,"column":46}}],"line":72},"16":{"loc":{"start":{"line":75,"column":8},"end":{"line":77,"column":9}},"type":"if","locations":[{"start":{"line":75,"column":8},"end":{"line":77,"column":9}},{"start":{"line":75,"column":8},"end":{"line":77,"column":9}}],"line":75},"17":{"loc":{"start":{"line":78,"column":8},"end":{"line":83,"column":9}},"type":"if","locations":[{"start":{"line":78,"column":8},"end":{"line":83,"column":9}},{"start":{"line":78,"column":8},"end":{"line":83,"column":9}}],"line":78},"18":{"loc":{"start":{"line":79,"column":12},"end":{"line":81,"column":13}},"type":"if","locations":[{"start":{"line":79,"column":12},"end":{"line":81,"column":13}},{"start":{"line":79,"column":12},"end":{"line":81,"column":13}}],"line":79},"19":{"loc":{"start":{"line":90,"column":8},"end":{"line":92,"column":9}},"type":"if","locations":[{"start":{"line":90,"column":8},"end":{"line":92,"column":9}},{"start":{"line":90,"column":8},"end":{"line":92,"column":9}}],"line":90},"20":{"loc":{"start":{"line":93,"column":8},"end":{"line":95,"column":9}},"type":"if","locations":[{"start":{"line":93,"column":8},"end":{"line":95,"column":9}},{"start":{"line":93,"column":8},"end":{"line":95,"column":9}}],"line":93},"21":{"loc":{"start":{"line":96,"column":8},"end":{"line":98,"column":9}},"type":"if","locations":[{"start":{"line":96,"column":8},"end":{"line":98,"column":9}},{"start":{"line":96,"column":8},"end":{"line":98,"column":9}}],"line":96},"22":{"loc":{"start":{"line":99,"column":8},"end":{"line":101,"column":9}},"type":"if","locations":[{"start":{"line":99,"column":8},"end":{"line":101,"column":9}},{"start":{"line":99,"column":8},"end":{"line":101,"column":9}}],"line":99},"23":{"loc":{"start":{"line":99,"column":12},"end":{"line":99,"column":65}},"type":"binary-expr","locations":[{"start":{"line":99,"column":12},"end":{"line":99,"column":25}},{"start":{"line":99,"column":29},"end":{"line":99,"column":65}}],"line":99},"24":{"loc":{"start":{"line":108,"column":16},"end":{"line":110,"column":17}},"type":"if","locations":[{"start":{"line":108,"column":16},"end":{"line":110,"column":17}},{"start":{"line":108,"column":16},"end":{"line":110,"column":17}}],"line":108},"25":{"loc":{"start":{"line":116,"column":8},"end":{"line":116,"column":56}},"type":"if","locations":[{"start":{"line":116,"column":8},"end":{"line":116,"column":56}},{"start":{"line":116,"column":8},"end":{"line":116,"column":56}}],"line":116},"26":{"loc":{"start":{"line":122,"column":16},"end":{"line":127,"column":17}},"type":"if","locations":[{"start":{"line":122,"column":16},"end":{"line":127,"column":17}},{"start":{"line":122,"column":16},"end":{"line":127,"column":17}}],"line":122},"27":{"loc":{"start":{"line":122,"column":20},"end":{"line":122,"column":83}},"type":"binary-expr","locations":[{"start":{"line":122,"column":20},"end":{"line":122,"column":29}},{"start":{"line":122,"column":33},"end":{"line":122,"column":83}}],"line":122},"28":{"loc":{"start":{"line":125,"column":21},"end":{"line":127,"column":17}},"type":"if","locations":[{"start":{"line":125,"column":21},"end":{"line":127,"column":17}},{"start":{"line":125,"column":21},"end":{"line":127,"column":17}}],"line":125},"29":{"loc":{"start":{"line":125,"column":25},"end":{"line":125,"column":118}},"type":"binary-expr","locations":[{"start":{"line":125,"column":25},"end":{"line":125,"column":73}},{"start":{"line":125,"column":77},"end":{"line":125,"column":118}}],"line":125},"30":{"loc":{"start":{"line":138,"column":8},"end":{"line":140,"column":9}},"type":"if","locations":[{"start":{"line":138,"column":8},"end":{"line":140,"column":9}},{"start":{"line":138,"column":8},"end":{"line":140,"column":9}}],"line":138},"31":{"loc":{"start":{"line":144,"column":8},"end":{"line":144,"column":56}},"type":"if","locations":[{"start":{"line":144,"column":8},"end":{"line":144,"column":56}},{"start":{"line":144,"column":8},"end":{"line":144,"column":56}}],"line":144},"32":{"loc":{"start":{"line":146,"column":8},"end":{"line":148,"column":9}},"type":"if","locations":[{"start":{"line":146,"column":8},"end":{"line":148,"column":9}},{"start":{"line":146,"column":8},"end":{"line":148,"column":9}}],"line":146},"33":{"loc":{"start":{"line":156,"column":8},"end":{"line":158,"column":9}},"type":"if","locations":[{"start":{"line":156,"column":8},"end":{"line":158,"column":9}},{"start":{"line":156,"column":8},"end":{"line":158,"column":9}}],"line":156},"34":{"loc":{"start":{"line":160,"column":12},"end":{"line":162,"column":13}},"type":"if","locations":[{"start":{"line":160,"column":12},"end":{"line":162,"column":13}},{"start":{"line":160,"column":12},"end":{"line":162,"column":13}}],"line":160},"35":{"loc":{"start":{"line":164,"column":8},"end":{"line":166,"column":9}},"type":"if","locations":[{"start":{"line":164,"column":8},"end":{"line":166,"column":9}},{"start":{"line":164,"column":8},"end":{"line":166,"column":9}}],"line":164},"36":{"loc":{"start":{"line":170,"column":8},"end":{"line":172,"column":9}},"type":"if","locations":[{"start":{"line":170,"column":8},"end":{"line":172,"column":9}},{"start":{"line":170,"column":8},"end":{"line":172,"column":9}}],"line":170},"37":{"loc":{"start":{"line":174,"column":12},"end":{"line":176,"column":13}},"type":"if","locations":[{"start":{"line":174,"column":12},"end":{"line":176,"column":13}},{"start":{"line":174,"column":12},"end":{"line":176,"column":13}}],"line":174},"38":{"loc":{"start":{"line":178,"column":8},"end":{"line":180,"column":9}},"type":"if","locations":[{"start":{"line":178,"column":8},"end":{"line":180,"column":9}},{"start":{"line":178,"column":8},"end":{"line":180,"column":9}}],"line":178},"39":{"loc":{"start":{"line":184,"column":8},"end":{"line":186,"column":9}},"type":"if","locations":[{"start":{"line":184,"column":8},"end":{"line":186,"column":9}},{"start":{"line":184,"column":8},"end":{"line":186,"column":9}}],"line":184},"40":{"loc":{"start":{"line":188,"column":12},"end":{"line":190,"column":13}},"type":"if","locations":[{"start":{"line":188,"column":12},"end":{"line":190,"column":13}},{"start":{"line":188,"column":12},"end":{"line":190,"column":13}}],"line":188},"41":{"loc":{"start":{"line":192,"column":8},"end":{"line":194,"column":9}},"type":"if","locations":[{"start":{"line":192,"column":8},"end":{"line":194,"column":9}},{"start":{"line":192,"column":8},"end":{"line":194,"column":9}}],"line":192},"42":{"loc":{"start":{"line":198,"column":8},"end":{"line":200,"column":9}},"type":"if","locations":[{"start":{"line":198,"column":8},"end":{"line":200,"column":9}},{"start":{"line":198,"column":8},"end":{"line":200,"column":9}}],"line":198},"43":{"loc":{"start":{"line":202,"column":12},"end":{"line":204,"column":13}},"type":"if","locations":[{"start":{"line":202,"column":12},"end":{"line":204,"column":13}},{"start":{"line":202,"column":12},"end":{"line":204,"column":13}}],"line":202},"44":{"loc":{"start":{"line":206,"column":8},"end":{"line":208,"column":9}},"type":"if","locations":[{"start":{"line":206,"column":8},"end":{"line":208,"column":9}},{"start":{"line":206,"column":8},"end":{"line":208,"column":9}}],"line":206}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0},"b":{"0":[0,0,0],"1":[0,0,0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0,0,0,0,0,0,0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/SubBoard.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/SubBoard.ts"],"names":[],"mappings":"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","sourcesContent":["import errors from './model/errors';\nimport Cell from './model/Cell';\nimport error from './error';\nimport {Coord, ME, OPPONENT, PlayerNumber, PlayerOrTie, RESULT_TIE, UNPLAYED} from \"./model/constants\";\nimport TTT from \"./model/TTT\";\nimport { isInteger } from './utility';\n\n/**\n * SubBoard for TicTacToe games\n * This class implements the traditional game of TicTacToe\n */\nexport default class SubBoard extends TTT<Cell> {\n  /**\n   * Holds the state of the game board as a two dimensional array\n   * each element of the inner array is a Cell\n   */\n  public board: Array<Array<Cell>>;\n\n  constructor(size = 3){\n    super();\n    this.size = size;\n\n    // Game state\n    this.board = [];\n    this.moves = 0;\n\n    for(let x = 0; x < this.size; x++){\n      this.board[x] = [];\n      for(let y = 0; y < this.size; y++){\n        this.board[x][y] = new Cell([x, y]);\n      }\n    }\n\n    // the maximum number of moves before filling up the board\n    this.maxMoves = Math.pow(this.size, 2);\n\n    return this;\n  }\n\n  /**\n   * Returns true if the game is over, undefined if it hasn't finished yet\n   */\n  public isFinished(): boolean {\n    return this.winner !== undefined;\n  }\n\n  /**\n   * Returns the winner for the game, throws an exception if the game hasn't finished yet.\n   * @returns {number} -1 for a tie, 0 you won, 1 opponent won\n   */\n  public getResult(): number {\n    if (!this.isFinished()) {\n      throw error(errors.gameNotFinished);\n    }\n    return this.winner;\n  }\n\n  /**\n   * Validates a given move (check for right format, data ranges, and\n   * that the move hasn't already been played)\n   * @param move Move coordinates as an array [x, y]\n   * @returns {boolean} true if the move is valid\n   */\n  public isValidMove(move: Coord): boolean {\n    return Array.isArray(move) &&\n      move.length === 2 &&\n      isInteger(move[0]) &&\n      isInteger(move[1]) &&\n      move[0] > -1 &&\n      move[1] > -1 &&\n      move[0] < this.size &&\n      move[1] < this.size && \n      !this.board[move[0]][move[1]].isPlayed();\n  }\n\n  /**\n   * Adds your move to the board, throws exception if move is invalid or board is already finished.\n   * @param move move coordinates\n   * @param index which turn this was (to enable replaying UTTT games)\n   * @returns {SubBoard}\n   */\n  public addMyMove(move: Coord, index = -1): SubBoard{\n    return this.move(ME, move, false, index);\n  }\n\n  /**\n   * Adds an opponent move to the board, throws exception if move is invalid or board is already finished.\n   * @param move\n   * @param index which turn this was (to enable replaying UTTT games)\n   * @returns {SubBoard}\n   */\n  public addOpponentMove(move: Coord, index = -1): SubBoard {\n    return this.move(OPPONENT, move, false, index)\n  }\n\n  /**\n   * Execute a move. This is an immutable method, that returns a\n   * new SubBoard. It may be easier and more clear to use the addOpponentMove and addMyMove methods instead.\n   * @param player Player identifier (0 || 1)\n   * @param move Move coordinates as an array [x, y]\n   * @param allowTies Whether we should allow adding a TIE (-1) as a player\n   * @param index which turn this was (to enable replaying UTTT games)\n   * @returns {SubBoard} Updated copy of the current game with the move added and the state updated\n   */\n  public move(player: PlayerOrTie, move: Coord, allowTies: boolean = false, index: number = -1): SubBoard {\n    if(this.isFull() || this.isFinished()) {\n      throw error(errors.boardFinished);\n    }\n\n    if (!this.isValidPlayer(player as PlayerNumber, allowTies)) {\n      throw error(errors.player, player);\n    }\n\n    if (!this.isValidMove(move)) {\n      if (move) {\n        throw error(errors.move, move);\n      }\n      throw error(errors.move);\n    }\n    const game = this.copy();\n\n    game.board[move[0]][move[1]].player = player;\n    game.board[move[0]][move[1]].subBoardIndex = game.moves;\n    game.board[move[0]][move[1]].mainIndex = index;\n    game.moves++;\n\n    // Check if the board has been won\n    game.checkRow(move[0]);\n\n    if (!game.isFinished()) {\n      game.checkColumn(move[1]);\n    }\n\n    if (!game.isFinished()) {\n      game.checkLtRDiagonal();\n    }\n\n    if (!game.isFinished()) {\n      game.checkRtLDiagonal();\n    }\n\n    // check for a tie\n    if (game.isFull() && game.winner === UNPLAYED) {\n      game.winner = RESULT_TIE;\n    }\n\n    return game;\n  }\n\n  /**\n   * Get a list of all the valid moves in the board\n   */\n  public getValidMoves(): Array<Coord> {\n    const moves: Array<Coord> = [];\n    for(let x = 0; x < this.size; x++) {\n      for (let y = 0; y < this.size; y++) {\n        if (!this.board[x][y].isPlayed()) {\n          moves.push([x, y]);\n        }\n      }\n    }\n    return moves;\n  }\n\n  /**\n   * Returns a string with the board formatted for display\n   * including new lines.\n   * @returns {string}\n   */\n  public prettyPrint(printTies: boolean = false): string {\n    let ret = [];\n    for(let x = 0; x < this.size; x++) {\n      let line = '';\n      for (let y = 0; y < this.size; y++) {\n        let player = '-';\n        if (printTies && this.board[x][y].player === RESULT_TIE) {\n          player = '+';\n        } else if(this.board[x][y].player !== UNPLAYED && this.board[x][y].player >= ME) {\n          player = `${this.board[x][y].player}`;\n        }\n        line += player + ' ';\n      }\n      ret.push(line);\n    }\n    return ret.join(\"\\n\");\n  }\n\n  /**\n   * Return a new SubBoard as a copy of this one\n   * @returns {SubBoard} Copy of the current game\n   */\n  public copy(): SubBoard {\n    const copy = new SubBoard(this.size);\n    copy.board = this.board.map(copyRow => copyRow.map(c => c.copy()));\n    copy.moves = this.moves;\n    \n    if (this.winner !== undefined) {\n      copy.winner = this.winner;\n    }\n\n    return copy;\n  }\n\n  /**\n   * Validates a player\n   * @param player Player identifier (0 || 1)\n   * @param allowTies Whether we should allow adding a TIE (-1) as a player\n   * @returns {boolean}\n   */\n  private isValidPlayer(player: PlayerNumber, allowTies: boolean = false): boolean {\n    const validPlayers = [ ME, OPPONENT ];\n    if (allowTies) {\n      validPlayers.push(RESULT_TIE);\n    }\n    return validPlayers.indexOf(player) > -1;\n  }\n\n  /**\n   * Same as isFinished()\n   * @returns {boolean}\n   */\n  public isFull(): boolean {\n    return this.moves >= this.maxMoves;\n  }\n\n  /**\n   * Check if a given row has been won\n   * @param row Row index\n   * @private\n   */\n  private checkRow(row: number): void {\n    const player = this.board[row][0].player;\n    if(player < ME){\n      return;\n    }\n    for(let i = 1; i < this.size; i++){\n      if(player !== this.board[row][i].player) {\n        return;\n      }\n    }\n    if (player >= ME) {\n      this.winner = player;\n    }\n  }\n\n  /**\n   * Check if a given column has been won\n   * @param col Column index\n   */\n  private checkColumn(col: number): void {\n    const player = this.board[0][col].player;\n    if(player < ME){\n      return;\n    }\n    for(let i = 1; i < this.size; i++){\n      if(player !== this.board[i][col].player) {\n        return;\n      }\n    }\n    if (player >= ME) {\n      this.winner = player;\n    }\n  }\n\n  /**\n   * Check if the left to right diagonal has been won\n   */\n  private checkLtRDiagonal(): void {\n    const player = this.board[0][0].player;\n    if(player < ME){\n      return;\n    }\n    for(let i = 1; i < this.size; i++){\n      if(player !== this.board[i][i].player){\n        return;\n      }\n    }\n    if (player >= ME) {\n      this.winner = player;\n    }\n  }\n\n  /**\n   * Check if the right to left diagonal has been won\n   */\n  private checkRtLDiagonal(): void {\n    const player = this.board[0][this.size - 1].player;\n    if(player < ME){\n      return;\n    }\n    for(let i = this.size - 1; i >= 0; i--){\n      if(player !== this.board[this.size - 1 - i][i].player){\n        return;\n      }\n    }\n    if (player >= ME) {\n      this.winner = player;\n    }\n  }\n}"]},"all":true},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/utility.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/utility.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":27}},"2":{"start":{"line":4,"column":16},"end":{"line":8,"column":1}},"3":{"start":{"line":5,"column":4},"end":{"line":7,"column":36}},"4":{"start":{"line":9,"column":0},"end":{"line":9,"column":30}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":16},"end":{"line":4,"column":17}},"loc":{"start":{"line":4,"column":33},"end":{"line":8,"column":1}},"line":4}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":11},"end":{"line":7,"column":35}},"type":"binary-expr","locations":[{"start":{"line":5,"column":11},"end":{"line":5,"column":36}},{"start":{"line":6,"column":8},"end":{"line":6,"column":23}},{"start":{"line":7,"column":8},"end":{"line":7,"column":35}}],"line":5}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0},"f":{"0":0},"b":{"0":[0,0,0]},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/utility.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/utility.ts"],"names":[],"mappings":";;;AACO,IAAM,SAAS,GAAG,UAAC,KAAa;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ;QAC9B,QAAQ,CAAC,KAAK,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AAChC,CAAC,CAAA;AAJY,QAAA,SAAS,aAIrB","sourcesContent":["\nexport const isInteger = (value: number) => {\n  return typeof value === 'number' && \n    isFinite(value) && \n    Math.floor(value) === value;\n}"]},"all":true},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/UTTT.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/UTTT.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":16,"column":4}},"1":{"start":{"line":3,"column":24},"end":{"line":8,"column":5}},"2":{"start":{"line":4,"column":8},"end":{"line":6,"column":110}},"3":{"start":{"line":5,"column":69},"end":{"line":5,"column":85}},"4":{"start":{"line":6,"column":30},"end":{"line":6,"column":107}},"5":{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},"6":{"start":{"line":6,"column":95},"end":{"line":6,"column":107}},"7":{"start":{"line":7,"column":8},"end":{"line":7,"column":35}},"8":{"start":{"line":9,"column":4},"end":{"line":15,"column":6}},"9":{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},"10":{"start":{"line":11,"column":12},"end":{"line":11,"column":102}},"11":{"start":{"line":12,"column":8},"end":{"line":12,"column":28}},"12":{"start":{"line":13,"column":24},"end":{"line":13,"column":45}},"13":{"start":{"line":14,"column":8},"end":{"line":14,"column":93}},"14":{"start":{"line":17,"column":0},"end":{"line":17,"column":62}},"15":{"start":{"line":18,"column":17},"end":{"line":18,"column":38}},"16":{"start":{"line":19,"column":15},"end":{"line":19,"column":40}},"17":{"start":{"line":20,"column":14},"end":{"line":20,"column":32}},"18":{"start":{"line":21,"column":18},"end":{"line":21,"column":46}},"19":{"start":{"line":22,"column":12},"end":{"line":22,"column":34}},"20":{"start":{"line":23,"column":16},"end":{"line":23,"column":36}},"21":{"start":{"line":24,"column":12},"end":{"line":163,"column":16}},"22":{"start":{"line":25,"column":4},"end":{"line":25,"column":28}},"23":{"start":{"line":27,"column":8},"end":{"line":27,"column":42}},"24":{"start":{"line":27,"column":31},"end":{"line":27,"column":40}},"25":{"start":{"line":28,"column":20},"end":{"line":28,"column":45}},"26":{"start":{"line":29,"column":8},"end":{"line":29,"column":26}},"27":{"start":{"line":30,"column":8},"end":{"line":30,"column":24}},"28":{"start":{"line":31,"column":8},"end":{"line":31,"column":49}},"29":{"start":{"line":32,"column":8},"end":{"line":32,"column":25}},"30":{"start":{"line":33,"column":8},"end":{"line":33,"column":36}},"31":{"start":{"line":34,"column":8},"end":{"line":34,"column":62}},"32":{"start":{"line":35,"column":8},"end":{"line":40,"column":9}},"33":{"start":{"line":35,"column":21},"end":{"line":35,"column":22}},"34":{"start":{"line":36,"column":12},"end":{"line":36,"column":32}},"35":{"start":{"line":37,"column":12},"end":{"line":39,"column":13}},"36":{"start":{"line":37,"column":25},"end":{"line":37,"column":26}},"37":{"start":{"line":38,"column":16},"end":{"line":38,"column":71}},"38":{"start":{"line":41,"column":8},"end":{"line":41,"column":21}},"39":{"start":{"line":43,"column":4},"end":{"line":45,"column":6}},"40":{"start":{"line":44,"column":8},"end":{"line":44,"column":78}},"41":{"start":{"line":46,"column":4},"end":{"line":48,"column":6}},"42":{"start":{"line":47,"column":8},"end":{"line":47,"column":43}},"43":{"start":{"line":49,"column":4},"end":{"line":63,"column":6}},"44":{"start":{"line":50,"column":8},"end":{"line":62,"column":9}},"45":{"start":{"line":51,"column":12},"end":{"line":58,"column":37}},"46":{"start":{"line":61,"column":12},"end":{"line":61,"column":108}},"47":{"start":{"line":64,"column":4},"end":{"line":69,"column":6}},"48":{"start":{"line":65,"column":8},"end":{"line":67,"column":9}},"49":{"start":{"line":66,"column":12},"end":{"line":66,"column":25}},"50":{"start":{"line":68,"column":8},"end":{"line":68,"column":76}},"51":{"start":{"line":70,"column":4},"end":{"line":72,"column":6}},"52":{"start":{"line":71,"column":8},"end":{"line":71,"column":60}},"53":{"start":{"line":73,"column":4},"end":{"line":75,"column":6}},"54":{"start":{"line":74,"column":8},"end":{"line":74,"column":66}},"55":{"start":{"line":76,"column":4},"end":{"line":106,"column":6}},"56":{"start":{"line":77,"column":8},"end":{"line":79,"column":9}},"57":{"start":{"line":78,"column":12},"end":{"line":78,"column":70}},"58":{"start":{"line":80,"column":8},"end":{"line":82,"column":9}},"59":{"start":{"line":81,"column":12},"end":{"line":81,"column":81}},"60":{"start":{"line":83,"column":19},"end":{"line":83,"column":30}},"61":{"start":{"line":84,"column":27},"end":{"line":84,"column":57}},"62":{"start":{"line":85,"column":8},"end":{"line":93,"column":9}},"63":{"start":{"line":86,"column":12},"end":{"line":86,"column":68}},"64":{"start":{"line":88,"column":13},"end":{"line":93,"column":9}},"65":{"start":{"line":89,"column":12},"end":{"line":89,"column":74}},"66":{"start":{"line":92,"column":12},"end":{"line":92,"column":72}},"67":{"start":{"line":94,"column":8},"end":{"line":94,"column":54}},"68":{"start":{"line":95,"column":8},"end":{"line":95,"column":21}},"69":{"start":{"line":96,"column":8},"end":{"line":96,"column":30}},"70":{"start":{"line":97,"column":8},"end":{"line":99,"column":9}},"71":{"start":{"line":98,"column":12},"end":{"line":98,"column":39}},"72":{"start":{"line":100,"column":8},"end":{"line":103,"column":9}},"73":{"start":{"line":102,"column":12},"end":{"line":102,"column":103}},"74":{"start":{"line":104,"column":8},"end":{"line":104,"column":45}},"75":{"start":{"line":105,"column":8},"end":{"line":105,"column":20}},"76":{"start":{"line":107,"column":4},"end":{"line":120,"column":6}},"77":{"start":{"line":108,"column":8},"end":{"line":110,"column":9}},"78":{"start":{"line":109,"column":12},"end":{"line":109,"column":36}},"79":{"start":{"line":111,"column":21},"end":{"line":111,"column":23}},"80":{"start":{"line":112,"column":8},"end":{"line":118,"column":9}},"81":{"start":{"line":112,"column":21},"end":{"line":112,"column":22}},"82":{"start":{"line":113,"column":12},"end":{"line":117,"column":13}},"83":{"start":{"line":113,"column":25},"end":{"line":113,"column":26}},"84":{"start":{"line":114,"column":16},"end":{"line":116,"column":17}},"85":{"start":{"line":115,"column":20},"end":{"line":115,"column":40}},"86":{"start":{"line":119,"column":8},"end":{"line":119,"column":22}},"87":{"start":{"line":121,"column":4},"end":{"line":152,"column":6}},"88":{"start":{"line":122,"column":19},"end":{"line":122,"column":21}},"89":{"start":{"line":123,"column":8},"end":{"line":134,"column":9}},"90":{"start":{"line":123,"column":21},"end":{"line":123,"column":22}},"91":{"start":{"line":124,"column":12},"end":{"line":133,"column":13}},"92":{"start":{"line":124,"column":25},"end":{"line":124,"column":26}},"93":{"start":{"line":125,"column":28},"end":{"line":125,"column":70}},"94":{"start":{"line":126,"column":16},"end":{"line":132,"column":17}},"95":{"start":{"line":126,"column":31},"end":{"line":126,"column":32}},"96":{"start":{"line":127,"column":33},"end":{"line":127,"column":52}},"97":{"start":{"line":128,"column":20},"end":{"line":130,"column":21}},"98":{"start":{"line":129,"column":24},"end":{"line":129,"column":42}},"99":{"start":{"line":131,"column":20},"end":{"line":131,"column":49}},"100":{"start":{"line":135,"column":18},"end":{"line":135,"column":20}},"101":{"start":{"line":136,"column":8},"end":{"line":150,"column":9}},"102":{"start":{"line":136,"column":21},"end":{"line":136,"column":22}},"103":{"start":{"line":137,"column":12},"end":{"line":137,"column":41}},"104":{"start":{"line":138,"column":12},"end":{"line":149,"column":13}},"105":{"start":{"line":139,"column":31},"end":{"line":139,"column":33}},"106":{"start":{"line":140,"column":16},"end":{"line":142,"column":17}},"107":{"start":{"line":140,"column":29},"end":{"line":140,"column":30}},"108":{"start":{"line":141,"column":20},"end":{"line":141,"column":36}},"109":{"start":{"line":143,"column":16},"end":{"line":143,"column":32}},"110":{"start":{"line":144,"column":26},"end":{"line":144,"column":34}},"111":{"start":{"line":145,"column":16},"end":{"line":147,"column":17}},"112":{"start":{"line":145,"column":29},"end":{"line":145,"column":30}},"113":{"start":{"line":146,"column":20},"end":{"line":146,"column":42}},"114":{"start":{"line":148,"column":16},"end":{"line":148,"column":56}},"115":{"start":{"line":151,"column":8},"end":{"line":151,"column":30}},"116":{"start":{"line":153,"column":4},"end":{"line":161,"column":6}},"117":{"start":{"line":154,"column":19},"end":{"line":154,"column":38}},"118":{"start":{"line":155,"column":8},"end":{"line":155,"column":121}},"119":{"start":{"line":155,"column":53},"end":{"line":155,"column":117}},"120":{"start":{"line":155,"column":90},"end":{"line":155,"column":113}},"121":{"start":{"line":156,"column":8},"end":{"line":156,"column":32}},"122":{"start":{"line":157,"column":8},"end":{"line":157,"column":34}},"123":{"start":{"line":158,"column":8},"end":{"line":158,"column":91}},"124":{"start":{"line":159,"column":8},"end":{"line":159,"column":49}},"125":{"start":{"line":160,"column":8},"end":{"line":160,"column":20}},"126":{"start":{"line":162,"column":4},"end":{"line":162,"column":16}},"127":{"start":{"line":164,"column":0},"end":{"line":164,"column":23}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":45},"end":{"line":2,"column":46}},"loc":{"start":{"line":2,"column":57},"end":{"line":16,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":24},"end":{"line":3,"column":25}},"loc":{"start":{"line":3,"column":40},"end":{"line":8,"column":5}},"line":3},"2":{"name":"(anonymous_2)","decl":{"start":{"line":5,"column":51},"end":{"line":5,"column":52}},"loc":{"start":{"line":5,"column":67},"end":{"line":5,"column":87}},"line":5},"3":{"name":"(anonymous_3)","decl":{"start":{"line":6,"column":12},"end":{"line":6,"column":13}},"loc":{"start":{"line":6,"column":28},"end":{"line":6,"column":109}},"line":6},"4":{"name":"(anonymous_4)","decl":{"start":{"line":9,"column":11},"end":{"line":9,"column":12}},"loc":{"start":{"line":9,"column":27},"end":{"line":15,"column":5}},"line":9},"5":{"name":"__","decl":{"start":{"line":13,"column":17},"end":{"line":13,"column":19}},"loc":{"start":{"line":13,"column":22},"end":{"line":13,"column":47}},"line":13},"6":{"name":"(anonymous_6)","decl":{"start":{"line":24,"column":12},"end":{"line":24,"column":13}},"loc":{"start":{"line":24,"column":30},"end":{"line":163,"column":1}},"line":24},"7":{"name":"UTTT","decl":{"start":{"line":26,"column":13},"end":{"line":26,"column":17}},"loc":{"start":{"line":26,"column":24},"end":{"line":42,"column":5}},"line":26},"8":{"name":"(anonymous_8)","decl":{"start":{"line":43,"column":32},"end":{"line":43,"column":33}},"loc":{"start":{"line":43,"column":44},"end":{"line":45,"column":5}},"line":43},"9":{"name":"(anonymous_9)","decl":{"start":{"line":46,"column":31},"end":{"line":46,"column":32}},"loc":{"start":{"line":46,"column":43},"end":{"line":48,"column":5}},"line":46},"10":{"name":"(anonymous_10)","decl":{"start":{"line":49,"column":40},"end":{"line":49,"column":41}},"loc":{"start":{"line":49,"column":57},"end":{"line":63,"column":5}},"line":49},"11":{"name":"(anonymous_11)","decl":{"start":{"line":64,"column":33},"end":{"line":64,"column":34}},"loc":{"start":{"line":64,"column":62},"end":{"line":69,"column":5}},"line":64},"12":{"name":"(anonymous_12)","decl":{"start":{"line":70,"column":31},"end":{"line":70,"column":32}},"loc":{"start":{"line":70,"column":60},"end":{"line":72,"column":5}},"line":70},"13":{"name":"(anonymous_13)","decl":{"start":{"line":73,"column":37},"end":{"line":73,"column":38}},"loc":{"start":{"line":73,"column":66},"end":{"line":75,"column":5}},"line":73},"14":{"name":"(anonymous_14)","decl":{"start":{"line":76,"column":26},"end":{"line":76,"column":27}},"loc":{"start":{"line":76,"column":57},"end":{"line":106,"column":5}},"line":76},"15":{"name":"(anonymous_15)","decl":{"start":{"line":107,"column":36},"end":{"line":107,"column":37}},"loc":{"start":{"line":107,"column":48},"end":{"line":120,"column":5}},"line":107},"16":{"name":"(anonymous_16)","decl":{"start":{"line":121,"column":33},"end":{"line":121,"column":34}},"loc":{"start":{"line":121,"column":45},"end":{"line":152,"column":5}},"line":121},"17":{"name":"(anonymous_17)","decl":{"start":{"line":153,"column":26},"end":{"line":153,"column":27}},"loc":{"start":{"line":153,"column":38},"end":{"line":161,"column":5}},"line":153},"18":{"name":"(anonymous_18)","decl":{"start":{"line":155,"column":36},"end":{"line":155,"column":37}},"loc":{"start":{"line":155,"column":51},"end":{"line":155,"column":119}},"line":155},"19":{"name":"(anonymous_19)","decl":{"start":{"line":155,"column":68},"end":{"line":155,"column":69}},"loc":{"start":{"line":155,"column":88},"end":{"line":155,"column":115}},"line":155}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":16,"column":4}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":16,"column":4}}],"line":2},"1":{"loc":{"start":{"line":4,"column":24},"end":{"line":6,"column":109}},"type":"binary-expr","locations":[{"start":{"line":4,"column":24},"end":{"line":4,"column":45}},{"start":{"line":5,"column":13},"end":{"line":5,"column":47}},{"start":{"line":5,"column":51},"end":{"line":5,"column":87}},{"start":{"line":6,"column":12},"end":{"line":6,"column":109}}],"line":4},"2":{"loc":{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},"type":"if","locations":[{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},{"start":{"line":6,"column":47},"end":{"line":6,"column":107}}],"line":6},"3":{"loc":{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},"type":"if","locations":[{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},{"start":{"line":10,"column":8},"end":{"line":11,"column":102}}],"line":10},"4":{"loc":{"start":{"line":10,"column":12},"end":{"line":10,"column":49}},"type":"binary-expr","locations":[{"start":{"line":10,"column":12},"end":{"line":10,"column":35}},{"start":{"line":10,"column":39},"end":{"line":10,"column":49}}],"line":10},"5":{"loc":{"start":{"line":14,"column":22},"end":{"line":14,"column":92}},"type":"cond-expr","locations":[{"start":{"line":14,"column":35},"end":{"line":14,"column":51}},{"start":{"line":14,"column":55},"end":{"line":14,"column":91}}],"line":14},"6":{"loc":{"start":{"line":27,"column":8},"end":{"line":27,"column":42}},"type":"if","locations":[{"start":{"line":27,"column":8},"end":{"line":27,"column":42}},{"start":{"line":27,"column":8},"end":{"line":27,"column":42}}],"line":27},"7":{"loc":{"start":{"line":28,"column":20},"end":{"line":28,"column":45}},"type":"binary-expr","locations":[{"start":{"line":28,"column":20},"end":{"line":28,"column":37}},{"start":{"line":28,"column":41},"end":{"line":28,"column":45}}],"line":28},"8":{"loc":{"start":{"line":44,"column":16},"end":{"line":44,"column":76}},"type":"binary-expr","locations":[{"start":{"line":44,"column":16},"end":{"line":44,"column":44}},{"start":{"line":44,"column":48},"end":{"line":44,"column":76}}],"line":44},"9":{"loc":{"start":{"line":50,"column":8},"end":{"line":62,"column":9}},"type":"if","locations":[{"start":{"line":50,"column":8},"end":{"line":62,"column":9}},{"start":{"line":50,"column":8},"end":{"line":62,"column":9}}],"line":50},"10":{"loc":{"start":{"line":51,"column":19},"end":{"line":58,"column":36}},"type":"binary-expr","locations":[{"start":{"line":51,"column":19},"end":{"line":51,"column":39}},{"start":{"line":52,"column":16},"end":{"line":52,"column":34}},{"start":{"line":53,"column":16},"end":{"line":53,"column":50}},{"start":{"line":54,"column":16},"end":{"line":54,"column":50}},{"start":{"line":55,"column":16},"end":{"line":55,"column":29}},{"start":{"line":56,"column":16},"end":{"line":56,"column":29}},{"start":{"line":57,"column":16},"end":{"line":57,"column":36}},{"start":{"line":58,"column":16},"end":{"line":58,"column":36}}],"line":51},"11":{"loc":{"start":{"line":61,"column":19},"end":{"line":61,"column":107}},"type":"binary-expr","locations":[{"start":{"line":61,"column":19},"end":{"line":61,"column":39}},{"start":{"line":61,"column":43},"end":{"line":61,"column":73}},{"start":{"line":61,"column":77},"end":{"line":61,"column":107}}],"line":61},"12":{"loc":{"start":{"line":65,"column":8},"end":{"line":67,"column":9}},"type":"if","locations":[{"start":{"line":65,"column":8},"end":{"line":67,"column":9}},{"start":{"line":65,"column":8},"end":{"line":67,"column":9}}],"line":65},"13":{"loc":{"start":{"line":77,"column":8},"end":{"line":79,"column":9}},"type":"if","locations":[{"start":{"line":77,"column":8},"end":{"line":79,"column":9}},{"start":{"line":77,"column":8},"end":{"line":79,"column":9}}],"line":77},"14":{"loc":{"start":{"line":80,"column":8},"end":{"line":82,"column":9}},"type":"if","locations":[{"start":{"line":80,"column":8},"end":{"line":82,"column":9}},{"start":{"line":80,"column":8},"end":{"line":82,"column":9}}],"line":80},"15":{"loc":{"start":{"line":85,"column":8},"end":{"line":93,"column":9}},"type":"if","locations":[{"start":{"line":85,"column":8},"end":{"line":93,"column":9}},{"start":{"line":85,"column":8},"end":{"line":93,"column":9}}],"line":85},"16":{"loc":{"start":{"line":88,"column":13},"end":{"line":93,"column":9}},"type":"if","locations":[{"start":{"line":88,"column":13},"end":{"line":93,"column":9}},{"start":{"line":88,"column":13},"end":{"line":93,"column":9}}],"line":88},"17":{"loc":{"start":{"line":97,"column":8},"end":{"line":99,"column":9}},"type":"if","locations":[{"start":{"line":97,"column":8},"end":{"line":99,"column":9}},{"start":{"line":97,"column":8},"end":{"line":99,"column":9}}],"line":97},"18":{"loc":{"start":{"line":100,"column":8},"end":{"line":103,"column":9}},"type":"if","locations":[{"start":{"line":100,"column":8},"end":{"line":103,"column":9}},{"start":{"line":100,"column":8},"end":{"line":103,"column":9}}],"line":100},"19":{"loc":{"start":{"line":100,"column":12},"end":{"line":101,"column":63}},"type":"binary-expr","locations":[{"start":{"line":100,"column":12},"end":{"line":100,"column":55}},{"start":{"line":101,"column":12},"end":{"line":101,"column":63}}],"line":100},"20":{"loc":{"start":{"line":108,"column":8},"end":{"line":110,"column":9}},"type":"if","locations":[{"start":{"line":108,"column":8},"end":{"line":110,"column":9}},{"start":{"line":108,"column":8},"end":{"line":110,"column":9}}],"line":108},"21":{"loc":{"start":{"line":108,"column":12},"end":{"line":108,"column":96}},"type":"binary-expr","locations":[{"start":{"line":108,"column":13},"end":{"line":108,"column":27}},{"start":{"line":108,"column":33},"end":{"line":108,"column":95}}],"line":108},"22":{"loc":{"start":{"line":114,"column":16},"end":{"line":116,"column":17}},"type":"if","locations":[{"start":{"line":114,"column":16},"end":{"line":116,"column":17}},{"start":{"line":114,"column":16},"end":{"line":116,"column":17}}],"line":114},"23":{"loc":{"start":{"line":128,"column":20},"end":{"line":130,"column":21}},"type":"if","locations":[{"start":{"line":128,"column":20},"end":{"line":130,"column":21}},{"start":{"line":128,"column":20},"end":{"line":130,"column":21}}],"line":128},"24":{"loc":{"start":{"line":138,"column":12},"end":{"line":149,"column":13}},"type":"if","locations":[{"start":{"line":138,"column":12},"end":{"line":149,"column":13}},{"start":{"line":138,"column":12},"end":{"line":149,"column":13}}],"line":138},"25":{"loc":{"start":{"line":158,"column":25},"end":{"line":158,"column":90}},"type":"cond-expr","locations":[{"start":{"line":158,"column":56},"end":{"line":158,"column":65}},{"start":{"line":158,"column":68},"end":{"line":158,"column":90}}],"line":158}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0},"b":{"0":[0,0,0],"1":[0,0,0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0,0,0,0,0,0,0],"11":[0,0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/UTTT.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/UTTT.ts"],"names":[],"mappings":"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","sourcesContent":["import SubBoard from './SubBoard';\nimport errors from './model/errors';\nimport error from './error';\n\nimport {Coord, ME, OPPONENT, RESULT_TIE} from './model/constants';\nimport TTT from \"./model/TTT\";\nimport { isInteger } from './utility';\n\n/**\n * Ultimate Tic Tac Toe Class\n *\n * This holds a full game, with all the associated state, and exposes several methods to interact with it.\n *\n * All methods that modify the state have been implemented as a functional/immutable API, which means that\n * they return a modified game, but don't change the original one.\n * This has been done to make tree searching easier, since your root nodes at each step won't be accidentally modified.\n */\nexport default class UTTT extends TTT<SubBoard> {\n  /**\n   * Holds the state of the game board as a two dimensional array\n   * each element of the inner array is a SubBoard\n   */\n  public board: Array<Array<SubBoard>>;\n  /**\n   * The state board is a typical 3x3 TTT board that holds the \"state\" of the big game\n   * so if a cell of the big game has been won, it will be 0 or 1 on this state board.\n   * This is very useful to easily see \"the big picture\" in the game.\n   */\n  public stateBoard: SubBoard;\n\n  constructor(size: number = 3){\n    super();\n    this.size = size;\n    this.moves = 0;\n    this.maxMoves = Math.pow(this.size, 4);\n\n    // Game state\n    this.board = [];\n    this.nextBoard = undefined;\n\n    // The state board holds the ultimate game state\n    this.stateBoard = new SubBoard(this.size);\n\n    for(let x = 0; x < this.size; x++){\n      this.board[x] = [];\n      for(let y = 0; y < this.size; y++){\n        this.board[x][y] = new SubBoard(this.size);\n      }\n    }\n\n    return this;\n  }\n\n  /**\n   * Returns true if the game is over\n   */\n  public isFinished(): boolean {\n    return (this.stateBoard.isFinished() || this.moves === this.maxMoves);\n  }\n\n  /**\n   * Returns the winner for the game, throws an exception if the game hasn't finished yet.\n   * @returns {number} -1 for a tie, 0 you won, 1 opponent won\n   */\n  public getResult(): number {\n    return this.stateBoard.getResult();\n  }\n\n  /**\n   * Validates a board selection before playing it\n   * @param board Board coordinates as an array [row, col]\n   * @returns {boolean} true if the board is playable\n   */\n  public isValidBoardRowCol(board: Coord): boolean {\n    if(this.nextBoard === undefined){\n      return Array.isArray(board) &&\n        board.length === 2 &&\n        isInteger(board[0]) &&\n        isInteger(board[1]) &&\n        board[0] > -1 &&\n        board[1] > -1 &&\n        board[1] < this.size &&\n        board[1] < this.size;\n    } else {\n      return Array.isArray(board) && this.nextBoard[0] === board[0] && this.nextBoard[1] === board[1];\n    }\n  }\n\n  /**\n   * Validates a given board & move combination (check for right format, data ranges, and\n   * that the move hasn't already been played)\n   * @param boardRowCol Board coordinates [row, col]\n   * @param move Move coordinates [row, col]\n   * @returns {boolean} true if the move is valid\n   */\n  public isValidMove(boardRowCol: Coord, move: Coord): boolean {\n    if (!this.isValidBoardRowCol(boardRowCol)) {\n      return false;\n    }\n    return this.board[boardRowCol[0]][boardRowCol[1]].isValidMove(move);\n  }\n\n  /**\n   * Adds your move to the board, throws exception if move is invalid or board is already finished.\n   * @param boardRowCol Board coordinates [row, col]\n   * @param move Move coordinates [row, col]\n   * @returns {UTTT} Updated copy of the current game with the move added and the state updated\n   */\n  public addMyMove(boardRowCol: Coord, move: Coord): UTTT {\n    return this.move(ME, boardRowCol, move);\n  }\n\n  /**\n   * Adds an opponent move to the board, throws exception if move is invalid or board is already finished.\n   * @param boardRowCol Board coordinates [row, col]\n   * @param move Move coordinates [row, col]\n   * @returns {UTTT} Updated copy of the current game with the move added and the state updated\n   */\n  public addOpponentMove(boardRowCol: Coord, move: Coord): UTTT {\n    return this.move(OPPONENT, boardRowCol, move);\n  }\n\n  /**\n   * Execute a move\n   * @param player Player identifier (1 || 2)\n   * @param board Board coordinates as an array [x, y]\n   * @param move Move coordinates as an array [x, y]\n   * @returns {UTTT} Updated copy of the current game with the move added and the state updated\n   */\n  public move(player: number, board: Coord, move: Coord): UTTT {\n    if(this.isFinished()) {\n      throw error(errors.gameFinished);\n    }\n\n    if (!this.isValidBoardRowCol(board)) {\n      throw error(errors.board, board.toString());\n    }\n\n    const game = this.copy();\n    let updatedBoard = game.board[board[0]][board[1]];\n\n    if (player === ME) {\n      updatedBoard = updatedBoard.addMyMove(move, game.moves);\n    } else if (player === OPPONENT) {\n      updatedBoard = updatedBoard.addOpponentMove(move, game.moves);\n    } else {\n      throw error(errors.player, player);\n    }\n\n    // update the copy\n    game.board[board[0]][board[1]] = updatedBoard;\n    game.moves++;\n\n    game.nextBoard = move;\n    if(game.board[game.nextBoard[0]][game.nextBoard[1]].isFinished()){\n      game.nextBoard = undefined;\n    }\n\n    // Update the game board state\n    if (\n        game.board[board[0]][board[1]].isFinished() &&\n        game.board[board[0]][board[1]].winner !== undefined\n    ) {\n      game.stateBoard = game.stateBoard.move(\n          game.board[board[0]][board[1]].winner,\n          board,\n          true\n      );\n    }\n\n    game.winner = game.stateBoard.winner;\n    return game;\n  }\n\n  /**\n   * Get a list of all the valid sub-boards in the main board\n   */\n  public getValidBoards(): Array<Coord> {\n    // Short-circuit if the board is already decided\n    if ((this.nextBoard) && (!this.board[this.nextBoard[0]][this.nextBoard[1]].isFinished()))\n    {\n        return [this.nextBoard];\n    }\n\n    const boards: Array<Coord> = [];\n    for(let x = 0; x < this.size; x++) {\n      for (let y = 0; y < this.size; y++) {\n        if (!this.board[x][y].isFinished()) {\n          boards.push([x, y]);\n        }\n      }\n    }\n    return boards;\n  }\n\n  /**\n   * Returns a string with the board formatted for display\n   * including new lines.\n   * @returns {string} Printable version of the game board\n   */\n  public prettyPrint(): string {\n    let rows: Array<Array<string>> = [];\n    for(let x = 0; x < this.size; x++) {\n      for (let y = 0; y < this.size; y++) {\n        const small = this.board[x][y].prettyPrint().split(\"\\n\");\n\n        for(let row = 0; row < this.size; row++){\n          const xCoord = x * this.size + row;\n          if(!rows[xCoord]){\n            rows[xCoord] = [];\n          }\n          rows[xCoord][y] = small[row];\n        }\n      }\n    }\n    let ret = [];\n    for(let x = 0; x < rows.length; x++){\n      ret.push(rows[x].join('| '));\n      if((x + 1) % this.size === 0) {\n        let sepChars = '';\n        for(let i = 0; i < this.size * 2; i++){\n          sepChars += '-';\n        }\n        sepChars += '+';\n        let sep = sepChars;\n        for(let i = 1; i < this.size; i++){\n          sep += '-' + sepChars;\n        }\n        ret.push(sep.substr(0, sep.length - 1));\n      }\n    }\n    return ret.join(\"\\n\");\n  }\n\n  /**\n   * Return a new UTTT board as a copy of this one\n   * @returns {UTTT} Copy of the current game\n   */\n  public copy(): UTTT {\n    const copy = new UTTT(this.size);\n    copy.board = this.board.map(row => row.map(subBoard => subBoard.copy()));\n    copy.moves = this.moves;\n    copy.winner = this.winner;\n    copy.nextBoard = this.nextBoard === undefined ? undefined : this.nextBoard.slice() as [number, number];\n    copy.stateBoard = this.stateBoard.copy();\n    return copy;\n  }\n}"]},"all":true}}