{"version":3,"sources":["C:/Program Files (x86)/Nodist/bin/node_modules/browserify/node_modules/browser-pack/_prelude.js","C:/Program Files (x86)/Nodist/bin/node_modules/browserify/node_modules/process/browser.js","dist/js/app.js","dist/js/board.js","dist/js/game/game-base.js","dist/js/game/game-flyweb.js","dist/js/game/game-local-2p.js","dist/js/game/game-local-ai.js","dist/js/game/index.js","dist/js/player/index.js","dist/js/player/player-ai.js","dist/js/player/player-flyweb-master.js","dist/js/player/player-flyweb-slave.js","dist/js/player/player-human.js","dist/js/player/player.js","dist/js/utils.js","node_modules/es6-promise/auto.js","node_modules/es6-promise/dist/es6-promise.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","setTimeout","this","runClearTimeout","marker","cachedClearTimeout","clearTimeout","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","timeout","len","run","Item","array","noop","process","nextTick","args","Array","arguments","push","prototype","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","name","cwd","chdir","dir","umask","Object","defineProperty","value","Game","board_1","document","addEventListener","canvas","querySelector","Board","render","navigator","flywebOptionInput","setAttribute","modeChooser","modeDOM","modeInputDOMs","querySelectorAll","chosenMode","checked","initGameLocal2p","initGameFlyweb","clientMode","initGameLocalAi","classList","add","console","error","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","__generator","body","verb","v","op","TypeError","_","y","label","ops","pop","trys","g","sent","throw","return","Symbol","iterator","BoardPiece","utils_1","context","getContext","getBoardScale","initConstants","reset","onresize","map","ROWS","j","COLUMNS","EMPTY","winnerBoardPiece","Utils","clearCanvas","SCALE","window","innerWidth","CANVAS_HEIGHT","CANVAS_WIDTH","PIECE_RADIUS","MASK_X_BEGIN","Math","max","MASK_Y_BEGIN","MESSAGE_WIDTH","MESSAGE_X_BEGIN","MESSAGE_Y_BEGIN","width","height","_this","prevBoardScale","applyPlayerAction","player","column","isColumnEverFilled","row","_a","animateAction","boardPiece","debug","animationFrame","log","join","getWinner","direction","isWinningSequence","playerPiece","count","countEmpty","k","DRAW","announceWinner","message","showMessage","getPlayerColor","PLAYER_1","PLAYER_1_COLOR","PLAYER_2","PLAYER_2_COLOR","newRow","fillStyle","currentY","doAnimation","drawCircle","x","strokeStyle","PIECE_STROKE_STYLE","drawMask","MASK_COLOR","GameBase","players","board","currentPlayerId","isMoveAllowed","isGameWon","start","winner","move","currentPlayer","actionSuccesful","action","getAction","afterMove","getNextPlayer","__extends","extendStatics","setPrototypeOf","__proto__","d","b","p","hasOwnProperty","__","constructor","create","game_base_1","player_1","GameFlyweb","_super","BASE_URL","location","pathname","substring","lastIndexOf","isAcceptingPlayer","playerSlave","playerMaster","initClient","initServer","socket","send","JSON","stringify","type","data","from","handleClientWs","WebSocket","host","onopen","evt","onclose","onerror","close","onmessage","parse","doAction","fetch","url","response","contentType","blob","headers","get","Content-Type","Cache-Control","Pragma","Expires","respondWith","Response","handleWsServer","accept","accepted","server","publishServer","onfetch","urlParts","params","_b","request","split","URLSearchParams","onwebsocket","PlayerFlywebSlave","PlayerFlywebMaster","game","GameLocal2p","PlayerHuman","GameLocalAi","PlayerAi","__export","m","ownBoardPieceValue","getBoardPieceValue","enemyBoardPiece","getStateValue","state","chainValue","tempRight","tempBottom","tempBottomRight","tempTopRight","abs","chain","transformValues","returnValue","depth","isWon","isLost","BIG_POSITIVE_NUMBER","BIG_NEGATIVE_NUMBER","getMove","alpha","beta","stateValue","MAX_DEPTH","minState","maxState","moveQueue","getMockPlayerAction","actionSuccessful","success","nextState","nextValue","choose","min","clone","Player","clickPromiseResolver","actionPromiseResolver","handleClick","event","rect","getBoundingClientRect","clientX","left","clientY","top","getColumnFromCoord","messageDOM","remove","messageContentDOM","innerHTML","messageDismissDOM","dismissHandler","removeEventListener","_c","_d","_e","_f","save","beginPath","arc","PI","fill","restore","doubleRadius","tripleRadius","clearRect","isCoordOnColumn","coord","columnXBegin","radius","getRandomColumnNumber","floor","random","choice","promise","requestAnimationFrame","arr","slice","clonedMap","resize","running","runCallbacks","callbacks","forEach","callback","addCallback","pow","polyfill","global","factory","define","amd","ES6Promise","objectOrFunction","isFunction","useVertxTimer","vertxNext","flush","useSetTimeout","globalSetTimeout","undefined","onFulfillment","onRejection","parent","child","PROMISE_ID","makePromise","_state","asap","invokeCallback","_result","subscribe","resolve$1","object","Constructor","selfFulfillment","cannotReturnOwn","getThen","GET_THEN_ERROR","tryThen","then$$1","fulfillmentHandler","rejectionHandler","handleForeignThenable","thenable","sealed","fulfill","reason","_label","handleOwnThenable","FULFILLED","REJECTED","handleMaybeThenable","maybeThenable","publishRejection","_onerror","publish","PENDING","_subscribers","subscribers","settled","detail","ErrorObject","tryCatch","TRY_CATCH_ERROR","hasCallback","succeeded","failed","initializePromise","resolver","nextId","id","Enumerator$1","input","_instanceConstructor","isArray","_remaining","_enumerate","validationError","needsResolver","needsNew","Promise$2","_isArray","toString","customSchedulerFn","arg","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","self","isWorker","Uint8ClampedArray","importScripts","MessageChannel","iterations","observer","node","createTextNode","observe","characterData","useMutationObserver","channel","port1","port2","postMessage","useMessageChannel","vertx","runOnLoop","runOnContext","attemptVertx","_eachEntry","entry","c","resolve$$1","_then","_settledAt","_willSettleAt","enumerator","all","entries","race","_setScheduler","scheduleFn","_setAsap","asapFn","_asap","catch","local","Function","promiseToString","cast"],"mappings":"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","file":"app.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nrequire(\"es6-promise/auto\");\nvar Game = require(\"./game\");\nvar board_1 = require(\"./board\");\ndocument.addEventListener('DOMContentLoaded', function () {\n var canvas = document.querySelector('canvas');\n if (!canvas) {\n console.error('Canvas DOM is null');\n return;\n }\n var board = new board_1.Board(canvas);\n board.render();\n if (!('publishServer' in navigator)) {\n var flywebOptionInput = document.querySelector('.mode-chooser-input-flyweb');\n if (flywebOptionInput) {\n flywebOptionInput.setAttribute('disabled', 'disabled');\n }\n }\n var modeChooser = document.querySelector('.mode-chooser-submit');\n if (modeChooser) {\n modeChooser.addEventListener('click', function () {\n var modeDOM = document.querySelector('.mode');\n if (modeDOM) {\n var modeInputDOMs = document.querySelectorAll('.mode-chooser-input');\n var chosenMode = null;\n for (var i = 0; i < modeInputDOMs.length; i++) {\n chosenMode = modeInputDOMs[i].checked ? modeInputDOMs[i].value : null;\n if (chosenMode) {\n break;\n }\n }\n if (!chosenMode) {\n chosenMode = 'offline-ai';\n }\n if (chosenMode === 'offline-human') {\n Game.initGameLocal2p();\n }\n else if (chosenMode === 'local-flyweb') {\n Game.initGameFlyweb({ clientMode: false });\n }\n else if (chosenMode === 'offline-ai') {\n Game.initGameLocalAi();\n }\n modeDOM.classList.add('invisible');\n modeDOM.addEventListener('transitionend', function () {\n modeDOM.classList.add('hidden');\n });\n }\n });\n }\n});\n\n//# sourceMappingURL=app.js.map\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\nvar BoardPiece;\n(function (BoardPiece) {\n BoardPiece[BoardPiece[\"EMPTY\"] = 0] = \"EMPTY\";\n BoardPiece[BoardPiece[\"PLAYER_1\"] = 1] = \"PLAYER_1\";\n BoardPiece[BoardPiece[\"PLAYER_2\"] = 2] = \"PLAYER_2\";\n BoardPiece[BoardPiece[\"DRAW\"] = 3] = \"DRAW\";\n})(BoardPiece = exports.BoardPiece || (exports.BoardPiece = {}));\nvar Board = (function () {\n function Board(canvas) {\n this.canvas = canvas;\n this.context = canvas.getContext('2d');\n this.getBoardScale();\n this.initConstants();\n this.reset();\n this.onresize();\n }\n Board.prototype.reset = function () {\n this.map = [];\n for (var i = 0; i < Board.ROWS; i++) {\n this.map.push([]);\n for (var j = 0; j < Board.COLUMNS; j++) {\n this.map[i].push(BoardPiece.EMPTY);\n }\n }\n this.winnerBoardPiece = BoardPiece.EMPTY;\n utils_1.Utils.clearCanvas(this);\n };\n Board.prototype.getBoardScale = function () {\n return window.innerWidth < 640 ? (Board.SCALE = 0.5) : (Board.SCALE = 1.0);\n };\n Board.prototype.initConstants = function () {\n Board.CANVAS_HEIGHT = Board.SCALE * 480;\n Board.CANVAS_WIDTH = Board.SCALE * 640;\n Board.PIECE_RADIUS = Board.SCALE * 25;\n Board.MASK_X_BEGIN =\n Math.max(0, Board.CANVAS_WIDTH - (3 * Board.COLUMNS + 1) * Board.PIECE_RADIUS) / 2;\n Board.MASK_Y_BEGIN =\n Math.max(0, Board.CANVAS_HEIGHT - (3 * Board.ROWS + 1) * Board.PIECE_RADIUS) / 2;\n Board.MESSAGE_WIDTH = Board.SCALE * 400;\n Board.MESSAGE_X_BEGIN = (Board.CANVAS_WIDTH - Board.MESSAGE_WIDTH) / 2;\n Board.MESSAGE_Y_BEGIN = Board.SCALE * 20;\n this.canvas.width = Board.CANVAS_WIDTH;\n this.canvas.height = Board.CANVAS_HEIGHT;\n };\n Board.prototype.onresize = function () {\n var _this = this;\n var prevBoardScale = Board.SCALE;\n utils_1.Utils.onresize().add(function () {\n _this.getBoardScale();\n if (prevBoardScale !== Board.SCALE) {\n prevBoardScale = Board.SCALE;\n _this.initConstants();\n utils_1.Utils.clearCanvas(_this);\n _this.render();\n }\n });\n };\n Board.prototype.applyPlayerAction = function (player, column) {\n return __awaiter(this, void 0, void 0, function () {\n var isColumnEverFilled, row, i;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.map[0][column] !== BoardPiece.EMPTY ||\n column < 0 ||\n column >= Board.COLUMNS) {\n return [2, false];\n }\n isColumnEverFilled = false;\n row = 0;\n for (i = 0; i < Board.ROWS - 1; i++) {\n if (this.map[i + 1][column] !== BoardPiece.EMPTY) {\n isColumnEverFilled = true;\n row = i;\n break;\n }\n }\n if (!isColumnEverFilled) {\n row = Board.ROWS - 1;\n }\n return [4, this.animateAction(row, column, player.boardPiece)];\n case 1:\n _a.sent();\n this.map[row][column] = player.boardPiece;\n this.debug();\n return [4, utils_1.Utils.animationFrame()];\n case 2:\n _a.sent();\n this.render();\n return [2, true];\n }\n });\n });\n };\n Board.prototype.debug = function () {\n console.log(this.map.map(function (row) { return row.join(' '); }).join('\\n'));\n };\n Board.prototype.getWinner = function () {\n var _this = this;\n if (this.winnerBoardPiece !== BoardPiece.EMPTY) {\n return this.winnerBoardPiece;\n }\n var direction = [\n [0, -1],\n [0, 1],\n [-1, -1],\n [-1, 0],\n [-1, 1],\n [1, -1],\n [1, 0],\n [1, 1]\n ];\n var isWinningSequence = function (i, j, playerPiece, dir, count) {\n if (count >= 4) {\n return true;\n }\n if (i < 0 ||\n j < 0 ||\n i >= Board.ROWS ||\n j >= Board.COLUMNS ||\n _this.map[i][j] !== playerPiece) {\n return false;\n }\n return isWinningSequence(i + dir[0], j + dir[1], playerPiece, dir, count + 1);\n };\n var countEmpty = 0;\n for (var i = 0; i < Board.ROWS; i++) {\n for (var j = 0; j < Board.COLUMNS; j++) {\n var playerPiece = this.map[i][j];\n if (playerPiece !== BoardPiece.EMPTY) {\n for (var k = 0; k < direction.length; k++) {\n var isWon = isWinningSequence(i + direction[k][0], j + direction[k][1], playerPiece, direction[k], 1);\n if (isWon) {\n return (this.winnerBoardPiece = playerPiece);\n }\n }\n }\n else {\n countEmpty++;\n }\n }\n }\n if (countEmpty === 0) {\n return (this.winnerBoardPiece = BoardPiece.DRAW);\n }\n return BoardPiece.EMPTY;\n };\n Board.prototype.announceWinner = function () {\n if (this.winnerBoardPiece === BoardPiece.EMPTY) {\n return;\n }\n var message = '

Thank you for playing.

';\n if (this.winnerBoardPiece === BoardPiece.DRAW) {\n message += \"It's a draw\";\n }\n else {\n message += \"Player \" + this.winnerBoardPiece + \" wins\";\n }\n message +=\n '.
After dismissing this message, click the board to reset game.';\n utils_1.Utils.showMessage(message);\n };\n Board.prototype.getPlayerColor = function (boardPiece) {\n switch (boardPiece) {\n case BoardPiece.PLAYER_1:\n return Board.PLAYER_1_COLOR;\n case BoardPiece.PLAYER_2:\n return Board.PLAYER_2_COLOR;\n default:\n return 'transparent';\n }\n };\n Board.prototype.animateAction = function (newRow, column, boardPiece) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n var fillStyle, currentY, doAnimation;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n fillStyle = this.getPlayerColor(boardPiece);\n currentY = 0;\n doAnimation = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n utils_1.Utils.clearCanvas(this);\n utils_1.Utils.drawCircle(this.context, {\n x: 3 * Board.PIECE_RADIUS * column +\n Board.MASK_X_BEGIN +\n 2 * Board.PIECE_RADIUS,\n y: currentY + Board.MASK_Y_BEGIN + 2 * Board.PIECE_RADIUS,\n r: Board.PIECE_RADIUS,\n fillStyle: fillStyle,\n strokeStyle: Board.PIECE_STROKE_STYLE\n });\n this.render();\n currentY += Board.PIECE_RADIUS;\n return [2];\n });\n }); };\n _a.label = 1;\n case 1:\n if (!(newRow * 3 * Board.PIECE_RADIUS >= currentY)) return [3, 3];\n return [4, utils_1.Utils.animationFrame()];\n case 2:\n _a.sent();\n doAnimation();\n return [3, 1];\n case 3: return [2];\n }\n });\n });\n };\n Board.prototype.render = function () {\n utils_1.Utils.drawMask(this);\n for (var y = 0; y < Board.ROWS; y++) {\n for (var x = 0; x < Board.COLUMNS; x++) {\n utils_1.Utils.drawCircle(this.context, {\n x: 3 * Board.PIECE_RADIUS * x +\n Board.MASK_X_BEGIN +\n 2 * Board.PIECE_RADIUS,\n y: 3 * Board.PIECE_RADIUS * y +\n Board.MASK_Y_BEGIN +\n 2 * Board.PIECE_RADIUS,\n r: Board.PIECE_RADIUS,\n fillStyle: this.getPlayerColor(this.map[y][x]),\n strokeStyle: Board.PIECE_STROKE_STYLE\n });\n }\n }\n };\n Board.ROWS = 6;\n Board.COLUMNS = 7;\n Board.PLAYER_1_COLOR = '#ef453b';\n Board.PLAYER_2_COLOR = '#0059ff';\n Board.PIECE_STROKE_STYLE = 'black';\n Board.MASK_COLOR = '#d8d8d8';\n return Board;\n}());\nexports.Board = Board;\n\n//# sourceMappingURL=board.js.map\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar board_1 = require(\"../board\");\nvar GameBase = (function () {\n function GameBase(players, canvas) {\n this.board = new board_1.Board(canvas);\n this.players = players;\n this.currentPlayerId = 0;\n this.reset();\n }\n GameBase.prototype.reset = function () {\n this.isMoveAllowed = false;\n this.isGameWon = false;\n this.board.reset();\n this.board.render();\n this.board.debug();\n };\n GameBase.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n var winner;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.isMoveAllowed = true;\n _a.label = 1;\n case 1:\n if (!!this.isGameWon) return [3, 3];\n return [4, this.move()];\n case 2:\n _a.sent();\n winner = this.board.getWinner();\n if (winner !== board_1.BoardPiece.EMPTY) {\n console.log('Game over: winner is player ', winner);\n this.isGameWon = true;\n this.isMoveAllowed = false;\n this.board.announceWinner();\n return [3, 3];\n }\n return [3, 1];\n case 3: return [2];\n }\n });\n });\n };\n GameBase.prototype.move = function () {\n return __awaiter(this, void 0, void 0, function () {\n var currentPlayer, actionSuccesful, action;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isMoveAllowed) {\n return [2];\n }\n currentPlayer = this.players[this.currentPlayerId];\n actionSuccesful = false;\n _a.label = 1;\n case 1:\n if (!!actionSuccesful) return [3, 4];\n return [4, currentPlayer.getAction(this.board)];\n case 2:\n action = _a.sent();\n this.isMoveAllowed = false;\n return [4, this.board.applyPlayerAction(currentPlayer, action)];\n case 3:\n actionSuccesful = _a.sent();\n this.isMoveAllowed = true;\n if (!actionSuccesful) {\n console.log('Move not allowed! Try again.');\n }\n else {\n this.afterMove(action);\n }\n return [3, 1];\n case 4:\n this.currentPlayerId = this.getNextPlayer();\n return [2];\n }\n });\n });\n };\n GameBase.prototype.afterMove = function (action) {\n };\n GameBase.prototype.getNextPlayer = function () {\n return this.currentPlayerId === 0 ? 1 : 0;\n };\n return GameBase;\n}());\nexports.GameBase = GameBase;\n\n//# sourceMappingURL=game-base.js.map\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar game_base_1 = require(\"./game-base\");\nvar player_1 = require(\"../player\");\nvar board_1 = require(\"../board\");\nvar utils_1 = require(\"../utils\");\nvar GameFlyweb = (function (_super) {\n __extends(GameFlyweb, _super);\n function GameFlyweb(players, canvas, clientMode) {\n if (clientMode === void 0) { clientMode = false; }\n var _this = _super.call(this, players, canvas) || this;\n _this.BASE_URL = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/'));\n _this.browser = navigator;\n _this.isAcceptingPlayer = true;\n _this.clientMode = clientMode;\n if (clientMode) {\n _this.playerSlave = players[0];\n _this.playerMaster = players[1];\n _this.initClient();\n }\n else {\n _this.playerMaster = players[0];\n _this.playerSlave = players[1];\n _this.initServer();\n }\n return _this;\n }\n GameFlyweb.prototype.afterMove = function (action) {\n if ((this.clientMode && this.currentPlayerId === 1) ||\n (!this.clientMode && this.currentPlayerId === 0)) {\n this.playerMaster.socket.send(JSON.stringify({\n type: 'move',\n data: {\n column: action,\n from: this.currentPlayerId === 0 ? 'server' : 'client'\n }\n }));\n }\n };\n GameFlyweb.prototype.initClient = function () {\n this.handleClientWs();\n };\n GameFlyweb.prototype.handleClientWs = function () {\n var _this = this;\n var socket = new WebSocket('ws://' + window.location.host + '/api/ws');\n this.playerMaster.socket = socket;\n socket.onopen = function (evt) {\n console.log('client socket.onopen()', evt);\n };\n socket.onclose = function (evt) {\n console.log('client socket.onclose()', evt);\n };\n socket.onerror = function (evt) {\n console.log('client socket.onerror()', evt);\n socket.close();\n };\n socket.onmessage = function (evt) { return __awaiter(_this, void 0, void 0, function () {\n var message;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n console.log('client socket.onmessage()', evt);\n message = JSON.parse(evt.data);\n if (!message) {\n return [2];\n }\n if (message.from === 'client') {\n return [2];\n }\n if (!(message.type === 'start')) return [3, 1];\n utils_1.Utils.showMessage('

Welcome!

Connection to Player 1 has been established. Game started!');\n this.start();\n return [3, 4];\n case 1:\n if (!(message.type === 'move')) return [3, 2];\n this.playerSlave.doAction(message.data.column);\n return [3, 4];\n case 2:\n if (!(message.type === 'reset')) return [3, 4];\n this.reset();\n return [4, utils_1.Utils.animationFrame()];\n case 3:\n _a.sent();\n this.start();\n _a.label = 4;\n case 4: return [2];\n }\n });\n }); };\n };\n GameFlyweb.prototype.fetch = function (evt, url) {\n return __awaiter(this, void 0, void 0, function () {\n var response, contentType, blob, headers;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4, fetch(this.BASE_URL + url)];\n case 1:\n response = _a.sent();\n contentType = response.headers.get('Content-Type');\n return [4, response.blob()];\n case 2:\n blob = _a.sent();\n headers = {\n 'Content-Type': contentType,\n 'Cache-Control': 'no-cache, no-store, must-revalidate',\n Pragma: 'no-cache',\n Expires: 0\n };\n console.log('Response is: ', url);\n evt.respondWith(new Promise(function (r) { return r(new Response(blob, { headers: headers })); }));\n return [2];\n }\n });\n });\n };\n GameFlyweb.prototype.handleWsServer = function (evt) {\n var _this = this;\n var socket = evt.accept();\n this.playerMaster.socket = socket;\n socket.onopen = function (evt) {\n console.log('server socket.onopen()', evt, socket);\n if (_this.isAcceptingPlayer) {\n _this.isAcceptingPlayer = false;\n socket.send(JSON.stringify({\n type: 'start',\n data: {\n accepted: _this.isAcceptingPlayer\n }\n }));\n utils_1.Utils.showMessage('

Welcome!

Connection to Player 2 has been established. Game started!');\n _this.start();\n }\n else {\n socket.close();\n }\n };\n socket.onclose = function (evt) {\n console.log('server socket.onclose()', evt);\n _this.isAcceptingPlayer = true;\n _this.reset();\n };\n socket.onerror = function (evt) {\n console.log('server socket.onerror()', evt);\n _this.isAcceptingPlayer = true;\n socket.close();\n };\n socket.onmessage = function (evt) { return __awaiter(_this, void 0, void 0, function () {\n var message;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n console.log('server socket.onmessage()', evt);\n message = JSON.parse(evt.data);\n if (!message) {\n return [2];\n }\n if (message.from === 'server') {\n return [2];\n }\n if (!(message.type === 'move')) return [3, 1];\n this.playerSlave.doAction(message.data.column);\n return [3, 3];\n case 1:\n if (!(message.type === 'reset')) return [3, 3];\n this.reset();\n return [4, utils_1.Utils.animationFrame()];\n case 2:\n _a.sent();\n this.start();\n _a.label = 3;\n case 3: return [2];\n }\n });\n }); };\n };\n GameFlyweb.prototype.initServer = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n var server;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!('publishServer' in this.browser)) {\n utils_1.Utils.showMessage(\"

Attention!

\\n FlyWeb requires Firefox Developer Edition or Nightly,\\n and enabling \\\"dom.flyweb.enabled\\\" flag at about:config\");\n return [2, false];\n }\n return [4, this.browser.publishServer('c4 - Connect Four')];\n case 1:\n server = _a.sent();\n server.onfetch = function (evt) { return __awaiter(_this, void 0, void 0, function () {\n var urlParts, url, params, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n urlParts = evt.request.url.split('?');\n url = urlParts[0];\n params = new URLSearchParams(urlParts[1]);\n console.log('me Requested for url: ', url, params);\n _a = url;\n switch (_a) {\n case '/dist/app.js': return [3, 1];\n }\n return [3, 3];\n case 1: return [4, this.fetch(evt, '/dist/app-flyweb-client.js')];\n case 2:\n _b.sent();\n return [3, 5];\n case 3: return [4, this.fetch(evt, url)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5: return [2];\n }\n });\n }); };\n server.onwebsocket = function (evt) {\n var url = evt.request.url;\n if (url === '/api/ws') {\n _this.handleWsServer(evt);\n }\n };\n return [2];\n }\n });\n });\n };\n return GameFlyweb;\n}(game_base_1.GameBase));\nfunction initGameFlyweb(_a) {\n var _this = this;\n var _b = _a.clientMode, clientMode = _b === void 0 ? false : _b;\n var canvas = document.querySelector('canvas');\n if (!canvas) {\n console.error('Canvas DOM is null');\n return;\n }\n var players = [];\n if (clientMode) {\n players = [\n new player_1.PlayerFlywebSlave(board_1.BoardPiece.PLAYER_1, canvas),\n new player_1.PlayerFlywebMaster(board_1.BoardPiece.PLAYER_2, canvas)\n ];\n }\n else {\n players = [\n new player_1.PlayerFlywebMaster(board_1.BoardPiece.PLAYER_1, canvas),\n new player_1.PlayerFlywebSlave(board_1.BoardPiece.PLAYER_2, canvas)\n ];\n }\n var game = new GameFlyweb(players, canvas, clientMode);\n utils_1.Utils.showMessage('

Welcome!

Game will start after Player 2 has been connected.');\n canvas.addEventListener('click', function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!game.isGameWon) return [3, 2];\n game.reset();\n if (game.playerMaster && game.playerMaster.socket) {\n game.playerMaster.socket.send(JSON.stringify({\n type: 'reset',\n data: {\n reset: true\n }\n }));\n }\n return [4, utils_1.Utils.animationFrame()];\n case 1:\n _a.sent();\n game.start();\n _a.label = 2;\n case 2: return [2];\n }\n });\n }); });\n}\nexports.initGameFlyweb = initGameFlyweb;\n\n//# sourceMappingURL=game-flyweb.js.map\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar board_1 = require(\"../board\");\nvar game_base_1 = require(\"./game-base\");\nvar player_1 = require(\"../player\");\nvar utils_1 = require(\"../utils\");\nvar GameLocal2p = (function (_super) {\n __extends(GameLocal2p, _super);\n function GameLocal2p(players, canvas) {\n return _super.call(this, players, canvas) || this;\n }\n return GameLocal2p;\n}(game_base_1.GameBase));\nfunction initGameLocal2p() {\n var _this = this;\n var canvas = document.querySelector('canvas');\n if (!canvas) {\n console.error('Canvas DOM is null');\n return;\n }\n var game = new GameLocal2p([\n new player_1.PlayerHuman(board_1.BoardPiece.PLAYER_1, canvas),\n new player_1.PlayerHuman(board_1.BoardPiece.PLAYER_2, canvas)\n ], canvas);\n game.start();\n canvas.addEventListener('click', function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!game.isGameWon) return [3, 2];\n game.reset();\n return [4, utils_1.Utils.animationFrame()];\n case 1:\n _a.sent();\n game.start();\n _a.label = 2;\n case 2: return [2];\n }\n });\n }); });\n}\nexports.initGameLocal2p = initGameLocal2p;\n\n//# sourceMappingURL=game-local-2p.js.map\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar board_1 = require(\"../board\");\nvar game_base_1 = require(\"./game-base\");\nvar player_1 = require(\"../player\");\nvar utils_1 = require(\"../utils\");\nvar GameLocalAi = (function (_super) {\n __extends(GameLocalAi, _super);\n function GameLocalAi(players, canvas) {\n return _super.call(this, players, canvas) || this;\n }\n return GameLocalAi;\n}(game_base_1.GameBase));\nfunction initGameLocalAi() {\n var _this = this;\n var canvas = document.querySelector('canvas');\n if (!canvas) {\n console.error('Canvas DOM is null');\n return;\n }\n var game = new GameLocalAi([\n new player_1.PlayerHuman(board_1.BoardPiece.PLAYER_1, canvas),\n new player_1.PlayerAi(board_1.BoardPiece.PLAYER_2, canvas)\n ], canvas);\n game.start();\n canvas.addEventListener('click', function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!game.isGameWon) return [3, 2];\n game.reset();\n return [4, utils_1.Utils.animationFrame()];\n case 1:\n _a.sent();\n game.start();\n _a.label = 2;\n case 2: return [2];\n }\n });\n }); });\n}\nexports.initGameLocalAi = initGameLocalAi;\n\n//# sourceMappingURL=game-local-ai.js.map\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./game-flyweb\"));\n__export(require(\"./game-local-2p\"));\n__export(require(\"./game-local-ai\"));\n\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./player\"));\n__export(require(\"./player-ai\"));\n__export(require(\"./player-human\"));\n__export(require(\"./player-flyweb-master\"));\n__export(require(\"./player-flyweb-slave\"));\n\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar player_1 = require(\"./player\");\nvar board_1 = require(\"../board\");\nvar utils_1 = require(\"../utils\");\nvar PlayerAi = (function (_super) {\n __extends(PlayerAi, _super);\n function PlayerAi(boardPiece, canvas) {\n var _this = _super.call(this, boardPiece, canvas) || this;\n _this.ownBoardPieceValue = _this.getBoardPieceValue(boardPiece);\n _this.enemyBoardPiece =\n boardPiece === board_1.BoardPiece.PLAYER_1\n ? board_1.BoardPiece.PLAYER_2\n : board_1.BoardPiece.PLAYER_1;\n return _this;\n }\n PlayerAi.prototype.getBoardPieceValue = function (boardPiece) {\n return boardPiece === board_1.BoardPiece.EMPTY\n ? 0\n : boardPiece === this.boardPiece ? 1 : -1;\n };\n PlayerAi.prototype.getStateValue = function (state) {\n var winnerBoardPiece = board_1.BoardPiece.EMPTY;\n var chainValue = 0;\n for (var i = 0; i < board_1.Board.ROWS; i++) {\n for (var j = 0; j < board_1.Board.COLUMNS; j++) {\n var tempRight = 0, tempBottom = 0, tempBottomRight = 0, tempTopRight = 0;\n for (var k = 0; k <= 3; k++) {\n if (j + k < board_1.Board.COLUMNS) {\n tempRight += this.getBoardPieceValue(state[i][j + k]);\n }\n if (i + k < board_1.Board.ROWS) {\n tempBottom += this.getBoardPieceValue(state[i + k][j]);\n }\n if (i + k < board_1.Board.ROWS && j + k < board_1.Board.COLUMNS) {\n tempBottomRight += this.getBoardPieceValue(state[i + k][j + k]);\n }\n if (i - k >= 0 && j + k < 7) {\n tempTopRight += this.getBoardPieceValue(state[i - k][j + k]);\n }\n }\n chainValue += tempRight * tempRight * tempRight;\n chainValue += tempBottom * tempBottom * tempBottom;\n chainValue += tempBottomRight * tempBottomRight * tempBottomRight;\n chainValue += tempTopRight * tempTopRight * tempTopRight;\n if (Math.abs(tempRight) === 4) {\n winnerBoardPiece =\n tempRight > 0 ? this.boardPiece : this.enemyBoardPiece;\n }\n else if (Math.abs(tempBottom) === 4) {\n winnerBoardPiece =\n tempBottom > 0 ? this.boardPiece : this.enemyBoardPiece;\n }\n else if (Math.abs(tempBottomRight) === 4) {\n winnerBoardPiece =\n tempBottomRight > 0 ? this.boardPiece : this.enemyBoardPiece;\n }\n else if (Math.abs(tempTopRight) === 4) {\n winnerBoardPiece =\n tempTopRight > 0 ? this.boardPiece : this.enemyBoardPiece;\n }\n }\n }\n return {\n winnerBoardPiece: winnerBoardPiece,\n chain: chainValue\n };\n };\n PlayerAi.prototype.transformValues = function (returnValue, winnerBoardPiece, depth) {\n var isWon = winnerBoardPiece === this.boardPiece;\n var isLost = winnerBoardPiece === this.enemyBoardPiece;\n if (isWon) {\n returnValue = utils_1.Utils.BIG_POSITIVE_NUMBER - 100;\n }\n else if (isLost) {\n returnValue = utils_1.Utils.BIG_NEGATIVE_NUMBER + 100;\n }\n returnValue -= depth * depth;\n return returnValue;\n };\n PlayerAi.prototype.getMove = function (state, depth, alpha, beta) {\n var stateValue = this.getStateValue(state);\n var isWon = stateValue.winnerBoardPiece === this.boardPiece;\n var isLost = stateValue.winnerBoardPiece === this.enemyBoardPiece;\n if (depth >= PlayerAi.MAX_DEPTH || isWon || isLost) {\n return {\n value: this.transformValues(stateValue.chain * this.ownBoardPieceValue, stateValue.winnerBoardPiece, depth),\n move: -1\n };\n }\n return depth % 2 === 0\n ? this.minState(state, depth + 1, alpha, beta)\n : this.maxState(state, depth + 1, alpha, beta);\n };\n PlayerAi.prototype.maxState = function (state, depth, alpha, beta) {\n var value = utils_1.Utils.BIG_NEGATIVE_NUMBER;\n var moveQueue = [];\n for (var column = 0; column < board_1.Board.COLUMNS; column++) {\n var _a = utils_1.Utils.getMockPlayerAction(state, this.boardPiece, column), actionSuccessful = _a.success, nextState = _a.map;\n if (actionSuccessful) {\n var _b = this.getMove(nextState, depth, alpha, beta), nextValue = _b.value, nextMove = _b.move;\n if (nextValue > value) {\n value = nextValue;\n moveQueue = [column];\n }\n else if (nextValue === value) {\n moveQueue.push(column);\n }\n if (value > beta) {\n return {\n value: value,\n move: utils_1.Utils.choose(moveQueue)\n };\n }\n alpha = Math.max(alpha, value);\n }\n }\n return {\n value: value,\n move: utils_1.Utils.choose(moveQueue)\n };\n };\n PlayerAi.prototype.minState = function (state, depth, alpha, beta) {\n var value = utils_1.Utils.BIG_POSITIVE_NUMBER;\n var moveQueue = [];\n for (var column = 0; column < board_1.Board.COLUMNS; column++) {\n var _a = utils_1.Utils.getMockPlayerAction(state, this.enemyBoardPiece, column), actionSuccessful = _a.success, nextState = _a.map;\n if (actionSuccessful) {\n var _b = this.getMove(nextState, depth, alpha, beta), nextValue = _b.value, nextMove = _b.move;\n if (nextValue < value) {\n value = nextValue;\n moveQueue = [column];\n }\n else if (nextValue === value) {\n moveQueue.push(column);\n }\n if (value < alpha) {\n return {\n value: value,\n move: utils_1.Utils.choose(moveQueue)\n };\n }\n beta = Math.min(beta, value);\n }\n }\n return {\n value: value,\n move: utils_1.Utils.choose(moveQueue)\n };\n };\n PlayerAi.prototype.getAction = function (board) {\n return __awaiter(this, void 0, void 0, function () {\n var state, action;\n return __generator(this, function (_a) {\n state = utils_1.Utils.clone(board.map);\n action = this.maxState(state, 0, utils_1.Utils.BIG_NEGATIVE_NUMBER, utils_1.Utils.BIG_POSITIVE_NUMBER);\n console.log(\"AI \" + this\n .boardPiece + \" choose column \" + action.move + \" with value of \" + action.value);\n return [2, action.move];\n });\n });\n };\n PlayerAi.MAX_DEPTH = 4;\n return PlayerAi;\n}(player_1.Player));\nexports.PlayerAi = PlayerAi;\n\n//# sourceMappingURL=player-ai.js.map\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _1 = require(\".\");\nvar PlayerFlywebMaster = (function (_super) {\n __extends(PlayerFlywebMaster, _super);\n function PlayerFlywebMaster(boardPiece, canvas) {\n var _this = _super.call(this, boardPiece, canvas) || this;\n _this.clickPromiseResolver = null;\n return _this;\n }\n PlayerFlywebMaster.prototype.doAction = function (column) {\n _super.prototype.doAction.call(this, column);\n if (!this.socket) {\n throw Error('PlayerFlywebMaster need WebSocket object');\n }\n };\n PlayerFlywebMaster.prototype.getAction = function (board) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2, new Promise(function (r) { return _this.clickPromiseResolver = r; })];\n });\n });\n };\n return PlayerFlywebMaster;\n}(_1.PlayerHuman));\nexports.PlayerFlywebMaster = PlayerFlywebMaster;\n\n//# sourceMappingURL=player-flyweb-master.js.map\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar player_1 = require(\"./player\");\nvar PlayerFlywebSlave = (function (_super) {\n __extends(PlayerFlywebSlave, _super);\n function PlayerFlywebSlave(boardPiece, canvas) {\n var _this = _super.call(this, boardPiece, canvas) || this;\n _this.actionPromiseResolver = null;\n return _this;\n }\n PlayerFlywebSlave.prototype.doAction = function (column) {\n if (this.actionPromiseResolver) {\n this.actionPromiseResolver(column);\n }\n };\n PlayerFlywebSlave.prototype.getAction = function (board) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2, new Promise(function (r) { return (_this.actionPromiseResolver = r); })];\n });\n });\n };\n return PlayerFlywebSlave;\n}(player_1.Player));\nexports.PlayerFlywebSlave = PlayerFlywebSlave;\n\n//# sourceMappingURL=player-flyweb-slave.js.map\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar player_1 = require(\"./player\");\nvar board_1 = require(\"../board\");\nvar utils_1 = require(\"../utils\");\nvar PlayerHuman = (function (_super) {\n __extends(PlayerHuman, _super);\n function PlayerHuman(boardPiece, canvas) {\n var _this = _super.call(this, boardPiece, canvas) || this;\n _this.clickPromiseResolver = null;\n canvas.addEventListener('click', function (evt) {\n try {\n _this.handleClick(evt);\n }\n catch (e) {\n console.error(e);\n }\n });\n return _this;\n }\n PlayerHuman.prototype.doAction = function (column) {\n if (this.clickPromiseResolver && 0 <= column && column < board_1.Board.COLUMNS) {\n this.clickPromiseResolver(column);\n }\n };\n PlayerHuman.prototype.handleClick = function (event) {\n var rect = this.canvas.getBoundingClientRect();\n var x = event.clientX - rect.left;\n var y = event.clientY - rect.top;\n var column = utils_1.Utils.getColumnFromCoord({ x: x, y: y });\n this.doAction(column);\n };\n PlayerHuman.prototype.getAction = function (board) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2, new Promise(function (r) { return (_this.clickPromiseResolver = r); })];\n });\n });\n };\n return PlayerHuman;\n}(player_1.Player));\nexports.PlayerHuman = PlayerHuman;\n\n//# sourceMappingURL=player-human.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Player = (function () {\n function Player(boardPiece, canvas) {\n this.boardPiece = boardPiece;\n this.canvas = canvas;\n }\n return Player;\n}());\nexports.Player = Player;\n\n//# sourceMappingURL=player.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar board_1 = require(\"./board\");\nvar Utils = (function () {\n function Utils() {\n }\n Utils.showMessage = function (message) {\n if (message === void 0) { message = ''; }\n var messageDOM = document.querySelector('.message');\n if (!messageDOM) {\n console.error('Message DOM is null!');\n return;\n }\n messageDOM.classList.remove('hidden');\n var messageContentDOM = document.querySelector('.message-body-content');\n if (!messageContentDOM) {\n console.error('Message body content DOM is null!');\n return;\n }\n messageContentDOM.innerHTML = message;\n var messageDismissDOM = document.querySelector('.message-body-dismiss');\n if (!messageDismissDOM) {\n console.error('Message body dismiss DOM is null!');\n return;\n }\n var dismissHandler = function () {\n messageDOM.classList.add('invisible');\n messageDOM.addEventListener('transitionend', function () {\n messageDOM.classList.add('hidden');\n messageDOM.classList.remove('invisible');\n });\n messageDismissDOM.removeEventListener('click', dismissHandler);\n };\n messageDismissDOM.addEventListener('click', dismissHandler);\n };\n Utils.drawCircle = function (context, _a) {\n var _b = _a.x, x = _b === void 0 ? 0 : _b, _c = _a.y, y = _c === void 0 ? 0 : _c, _d = _a.r, r = _d === void 0 ? 0 : _d, _e = _a.fillStyle, fillStyle = _e === void 0 ? '' : _e, _f = _a.strokeStyle, strokeStyle = _f === void 0 ? '' : _f;\n context.save();\n context.fillStyle = fillStyle;\n context.strokeStyle = strokeStyle;\n context.beginPath();\n context.arc(x, y, r, 0, 2 * Math.PI, false);\n context.fill();\n context.restore();\n };\n Utils.drawMask = function (board) {\n var context = board.context;\n context.save();\n context.fillStyle = board_1.Board.MASK_COLOR;\n context.beginPath();\n var doubleRadius = 2 * board_1.Board.PIECE_RADIUS;\n var tripleRadius = 3 * board_1.Board.PIECE_RADIUS;\n for (var y = 0; y < board_1.Board.ROWS; y++) {\n for (var x = 0; x < board_1.Board.COLUMNS; x++) {\n context.arc(tripleRadius * x + board_1.Board.MASK_X_BEGIN + doubleRadius, tripleRadius * y + board_1.Board.MASK_Y_BEGIN + doubleRadius, board_1.Board.PIECE_RADIUS, 0, 2 * Math.PI);\n context.rect(tripleRadius * x + board_1.Board.MASK_X_BEGIN + 2 * doubleRadius, tripleRadius * y + board_1.Board.MASK_Y_BEGIN, -2 * doubleRadius, 2 * doubleRadius);\n }\n }\n context.fill();\n context.restore();\n };\n Utils.clearCanvas = function (board) {\n board.context.clearRect(0, 0, board.canvas.width, board.canvas.height);\n };\n Utils.isCoordOnColumn = function (coord, columnXBegin, radius) {\n return ((coord.x - columnXBegin) * (coord.x - columnXBegin) <= radius * radius);\n };\n Utils.getColumnFromCoord = function (coord) {\n for (var i = 0; i < board_1.Board.COLUMNS; i++) {\n if (Utils.isCoordOnColumn(coord, 3 * board_1.Board.PIECE_RADIUS * i +\n board_1.Board.MASK_X_BEGIN +\n 2 * board_1.Board.PIECE_RADIUS, board_1.Board.PIECE_RADIUS)) {\n return i;\n }\n }\n return -1;\n };\n Utils.getRandomColumnNumber = function () {\n return Math.floor(Math.random() * board_1.Board.COLUMNS);\n };\n Utils.choose = function (choice) {\n return choice[Math.floor(Math.random() * choice.length)];\n };\n Utils.animationFrame = function () {\n var resolve = null;\n var promise = new Promise(function (r) { return (resolve = r); });\n if (resolve) {\n window.requestAnimationFrame(resolve);\n }\n return promise;\n };\n Utils.clone = function (array) {\n var arr = [];\n for (var i = 0; i < array.length; i++) {\n arr[i] = array[i].slice();\n }\n return arr;\n };\n Utils.getMockPlayerAction = function (map, boardPiece, column) {\n var clonedMap = Utils.clone(map);\n if (clonedMap[0][column] !== board_1.BoardPiece.EMPTY ||\n column < 0 ||\n column >= board_1.Board.COLUMNS) {\n return {\n success: false,\n map: clonedMap\n };\n }\n var isColumnEverFilled = false;\n var row = 0;\n for (var i = 0; i < board_1.Board.ROWS - 1; i++) {\n if (clonedMap[i + 1][column] !== board_1.BoardPiece.EMPTY) {\n isColumnEverFilled = true;\n row = i;\n break;\n }\n }\n if (!isColumnEverFilled) {\n row = board_1.Board.ROWS - 1;\n }\n clonedMap[row][column] = boardPiece;\n return {\n success: true,\n map: clonedMap\n };\n };\n Utils.onresize = function () {\n var callbacks = [], running = false;\n function resize() {\n if (!running) {\n running = true;\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(runCallbacks);\n }\n else {\n setTimeout(runCallbacks, 66);\n }\n }\n }\n function runCallbacks() {\n callbacks.forEach(function (callback) {\n callback();\n });\n running = false;\n }\n function addCallback(callback) {\n if (callback) {\n callbacks.push(callback);\n }\n }\n return {\n add: function (callback) {\n if (!callbacks.length) {\n window.addEventListener('resize', resize);\n }\n addCallback(callback);\n }\n };\n };\n Utils.BIG_POSITIVE_NUMBER = Math.pow(10, 9) + 7;\n Utils.BIG_NEGATIVE_NUMBER = -Utils.BIG_POSITIVE_NUMBER;\n return Utils;\n}());\nexports.Utils = Utils;\n\n//# sourceMappingURL=utils.js.map\n","// This file can be required in Browserify and Node.js for automatic polyfill\n// To use it: require('es6-promise/auto');\n'use strict';\nmodule.exports = require('./').polyfill();\n","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version 4.1.1\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\nvar _isArray = undefined;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = undefined;\nvar customSchedulerFn = undefined;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && ({}).toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var r = require;\n var vertx = r('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = undefined;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var _arguments = arguments;\n\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n if (_state) {\n (function () {\n var callback = _arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n })();\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(16);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar GET_THEN_ERROR = new ErrorObject();\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n GET_THEN_ERROR.error = error;\n return GET_THEN_ERROR;\n }\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === GET_THEN_ERROR) {\n reject(promise, GET_THEN_ERROR.error);\n GET_THEN_ERROR.error = null;\n } else if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = undefined,\n callback = undefined,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction ErrorObject() {\n this.error = null;\n}\n\nvar TRY_CATCH_ERROR = new ErrorObject();\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = undefined,\n error = undefined,\n succeeded = undefined,\n failed = undefined;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction Enumerator$1(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nEnumerator$1.prototype._enumerate = function (input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n};\n\nEnumerator$1.prototype._eachEntry = function (entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n if (resolve$$1 === resolve$1) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$2) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n};\n\nEnumerator$1.prototype._settledAt = function (state, i, value) {\n var promise = this.promise;\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n};\n\nEnumerator$1.prototype._willSettleAt = function (promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n};\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all$1(entries) {\n return new Enumerator$1(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race$1(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n*/\nfunction Promise$2(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise$2 ? initializePromise(this, resolver) : needsNew();\n }\n}\n\nPromise$2.all = all$1;\nPromise$2.race = race$1;\nPromise$2.resolve = resolve$1;\nPromise$2.reject = reject$1;\nPromise$2._setScheduler = setScheduler;\nPromise$2._setAsap = setAsap;\nPromise$2._asap = asap;\n\nPromise$2.prototype = {\n constructor: Promise$2,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n \n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n \n Chaining\n --------\n \n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n \n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n \n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n \n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n \n Assimilation\n ------------\n \n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n \n If the assimliated promise rejects, then the downstream promise will also reject.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n \n Simple Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let result;\n \n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n \n Advanced Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let author, books;\n \n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n \n function foundBooks(books) {\n \n }\n \n function failure(reason) {\n \n }\n \n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n \n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: then,\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n \n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n \n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n \n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n \n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\n/*global self*/\nfunction polyfill$1() {\n var local = undefined;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$2;\n}\n\n// Strange compat..\nPromise$2.polyfill = polyfill$1;\nPromise$2.Promise = Promise$2;\n\nreturn Promise$2;\n\n})));\n\n//# sourceMappingURL=es6-promise.map\n"]}